FieldMap

Zusammenfassung

Das FieldMap-Objekt stellt eine Felddefinition und eine Liste von Eingabefeldern aus einer Reihe von Tabellen oder Feature-Classes bereit.

Beschreibung

Das FieldMappings-Objekt ist eine Sammlung von FieldMap-Objekten und wird als Parameterwert für Werkzeuge für die Feldzuordnung verwendet, beispielsweise Zusammenführen (Merge). Sie können am einfachsten mit diesen Objekten arbeiten, indem Sie zuerst ein FieldMappings-Objekt erstellen und dann die zugehörigen FieldMap-Objekte initialisieren, indem Sie die zu kombinierenden Eingabe-Feature-Classes oder Tabellen hinzufügen. Wenn alle Eingaben bereitgestellt wurden, enthält das FieldMappings-Objekt ein FieldMap-Objekt (bzw. ein Ausgabefeld) für jeden eindeutigen Feldnamen aus allen Eingaben. Sie können diese Liste ändern, indem Sie neue Felder hinzufügen, die Eigenschaften und/oder den Inhalt von Ausgabefeldern ändern oder unerwünschte Ausgabefelder entfernen.

Die Eigenschaften des FieldMap-Objekts enthalten die Anfangs- und die Endposition eines Eingabetextwertes, sodass ein neuer Ausgabewert mit einem Teil eines Eingabewertes erstellt werden kann. Wenn ein FieldMap-Objekt mehrere Eingabefelder aus derselben Tabelle oder Feature-Class enthält, werden die Werte aller Datensätze unter Verwendung der Eigenschaft MergeRule zusammengeführt. Dies ist eine benutzerfreundliche Möglichkeit zum Verbinden von Werten, beispielsweise eines Straßennamens in einem Feld und einer Straßenart, die in einem anderen Feld enthalten ist (z. B. "Eureka" und "Street"). Der joinDelimiter-Eigenschaft eines FieldMap-Objekts wird verwendet, wenn der mergeRule-Wert Join angegeben wird. Als Trennzeichen können beliebige Zeichen verwendet werden, beispielsweise Leerzeichen. Im obigen Beispiel würde damit der Wert "Eureka Street" erstellt.

Syntax

FieldMap ()

Eigenschaften

EigenschaftErläuterungDatentyp
inputFieldCount
(Nur lesen)

Get the count of subfields.

Integer
joinDelimiter
(Lesen und schreiben)

Join delimiter for the subfields.

String
mergeRule
(Lesen und schreiben)

Merge rule for the subfields.

String
outputField
(Lesen und schreiben)

Get the properties field.

Field

Methodenübersicht

MethodeErläuterung
addInputField (table_dataset, field_name, {start_position}, {end_position})

Adds input field to the field map.

findInputFieldIndex (table_dataset, field_name)

Finds an input field from the field map.

getEndTextPosition (index)

Gets end text position from the field map.

getInputFieldName (index)

Gets the name of an input field from the field map, based on the field's index.

getInputTableName (index)

Gets the name of an input table from the field map, based on the table's index.

getStartTextPosition (index)

Gets start text position from the field map.

removeAll ()

Removes all values and creates an empty object.

removeInputField (index)

Removes an input field from the field map.

setEndTextPosition (index, end_position)

Sets end text position for the field map.

setStartTextPosition (index, start_position)

Sets the start text position from the field map.

Methoden

addInputField (table_dataset, field_name, {start_position}, {end_position})
ParameterErläuterungDatentyp
table_dataset

The table added to the field map.

String
field_name

The input field name.

String
start_position

The start position of an input text value.

(Der Standardwert ist -1)

Integer
end_position

The end position of an input text value.

(Der Standardwert ist -1)

Integer
findInputFieldIndex (table_dataset, field_name)
ParameterErläuterungDatentyp
table_dataset

The table added to the field map.

String
field_name

The field name.

String
Rückgabewert
DatentypErläuterung
Integer

The index position of the field name.

getEndTextPosition (index)
ParameterErläuterungDatentyp
index

The index position.

Integer
Rückgabewert
DatentypErläuterung
Integer

The end text position.

getInputFieldName (index)
ParameterErläuterungDatentyp
index

The index position.

Integer
Rückgabewert
DatentypErläuterung
String

The input field name.

getInputTableName (index)
ParameterErläuterungDatentyp
index

The index position.

Integer
Rückgabewert
DatentypErläuterung
String

The input table name.

getStartTextPosition (index)
ParameterErläuterungDatentyp
index

The index position.

Integer
Rückgabewert
DatentypErläuterung
Integer

The start text position.

removeAll ()
removeInputField (index)
ParameterErläuterungDatentyp
index

The index position.

Integer
setEndTextPosition (index, end_position)
ParameterErläuterungDatentyp
index

The index position.

Integer
end_position

The end position of an input text value.

Integer
setStartTextPosition (index, start_position)
ParameterErläuterungDatentyp
index

The index position.

Integer
start_position

The start position of an input text value.

Integer

Codebeispiel

FieldMap-Beispiel
import arcpy
from arcpy import env

# Input feature classes contain a PID field that is a composite of
#   the Township, Range, Section, QuarterSection, Block, Lot, and SubLot values.
#   We need to define how to break the PID field into two fields: TWNSHIP and BLOCK,
#   then run the Merge tool.
#   PID field and field map. 
#                    1 1 1 1 1 1 1
#  1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6
# +-------------------------------+
# |2|0|3|0|8|2|1|0|0|1|0|0|5|0|0|0|
# +-------------------------------+
# +---TWNSHIP---+-------BLOCK-----+

infc1 = "C:/Data/NewParcels.shp"
infc2 = "Parcels"
outfc = "Parcels_Merge"

# Create a fieldmappings object and two fieldmap objects
#
fieldmappings = arcpy.FieldMappings()
fldmap_TWNSHIP = arcpy.FieldMap()
fldmap_BLOCK = arcpy.FieldMap()

# Create a value table to hold names of input feature classes for Merge tool.
#
vt = arcpy.ValueTable()

# Add all fields from first input feature class to fieldmappings object
#   AddTable is the most efficient way.
#
fieldmappings.addTable(infc1)

# Add the TWNSHIP and BLOCK field from the first input feature class 
#   to fieldmap object.
#
fldmap_TWNSHIP.addInputField(infc1)
fldmap_BLOCK.addInputField(infc1)
vt.addRow(infc1)

# Add all fields from second input feature class to fieldmappings object
#
env.workspace = "C:/Data/Boulder.gdb"
fieldmappings.addTable(infc2)

# Add the TWNSHIP and BLOCK field from the second input feature class 
#   to fieldmap object.
#
fldmap_TWNSHIP.addInputField(infc2)
fldmap_BLOCK.addInputField(infc2)
vt.addRow(infc2)

# Set the starting and ending positions of the input field in the fieldmap.
#   This is for TWNSHIP
for x in range(0, fldmap_TWNSHIP.inputFieldCount):
    fldmap_TWNSHIP.setStartTextPosition(x, 0)
    fldmap_TWNSHIP.setEndFieldPosition(x, 6)

# Set the starting and ending positions of the input field in the fieldmap.
#   This is for BLOCK
for x in range(0, fldmap_BLOCK.inputFieldCount):
    fldmap_BLOCK.setStartTextPosition(x, 7)
    fldmap_BLOCK.setEndFieldPosition(x, 15)

# Get the new field object from fieldmap, set field name, place back in fieldmap.
#
fld_TWNSHIP = fldmap_TWNSHIP.outputField
fld_TWNSHIP.name = "TWNSHIP"
fldmap_TWNSHIP.outputField = fld_TWNSHIP
fld_BLOCK = fldmap_BLOCK.outputField
fld_BLOCK.name = "BLOCK"
fldmap_BLOCK.outputField = fld_BLOCK

# Add the new fieldmap object to fieldmappings object.
fieldmappings.addFieldMap(fldmap_TWNSHIP)
fieldmappings.addFieldMap(fldmap_BLOCK)

#Run the Merge tool
arcpy.Merge_management(vt, outfc, fieldmappings) 

Verwandte Themen


7/10/2012