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
Eigenschaften
Eigenschaft | Erläuterung | Datentyp |
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
Methode | Erlä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
Parameter | Erläuterung | Datentyp |
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 |
Parameter | Erläuterung | Datentyp |
table_dataset |
The table added to the field map. | String |
field_name |
The field name. | String |
Datentyp | Erläuterung |
Integer |
The index position of the field name. |
Parameter | Erläuterung | Datentyp |
index |
The index position. | Integer |
Datentyp | Erläuterung |
Integer |
The end text position. |
Parameter | Erläuterung | Datentyp |
index |
The index position. | Integer |
Datentyp | Erläuterung |
String |
The input field name. |
Parameter | Erläuterung | Datentyp |
index |
The index position. | Integer |
Datentyp | Erläuterung |
String |
The input table name. |
Parameter | Erläuterung | Datentyp |
index |
The index position. | Integer |
Datentyp | Erläuterung |
Integer |
The start text position. |
Parameter | Erläuterung | Datentyp |
index |
The index position. | Integer |
Parameter | Erläuterung | Datentyp |
index |
The index position. | Integer |
end_position |
The end position of an input text value. | Integer |
Parameter | Erläuterung | Datentyp |
index |
The index position. | Integer |
start_position |
The start position of an input text value. | Integer |
Codebeispiel
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)