Select to view content in your preferred language

Getting ObjectID's using Fieldmapping in FeatureClasstoFeatureClass tool

3024
7
Jump to solution
06-06-2013 09:21 AM
MarcCusumano
Occasional Contributor
I have field mapping working for all fields but when I try to pull the ObjectID's in I get an error message:

"FieldMappings: Error in getting field map from field mapping for GetFieldMap"

Here is my code:

CONVERSION_InputPrefix = "Database Connections\\Sun120 - 5151.sde\\" CONVERSION_CPTestPoint = CONVERSION_InputPrefix + "CONVERSION.GasDataset\\CONVERSION.CPTestPoint"   try:     fieldmappings = arcpy.FieldMappings()     fieldmappings.addTable(CONVERSION_CPTestPoint)         fieldmap_CPTESTPOINT = fieldmappings.getFieldMap(fieldmappings.findFieldMapIndex("OBJECTID"))     fieldmap_CPTESTPOINT.addInputField(CONVERSION_CPTestPoint, "OBJECTID")      fieldmap_CPTESTPOINT = fieldmappings.getFieldMap(fieldmappings.findFieldMapIndex("GAS_CORR_TEST_STA_NO"))     fieldmap_CPTESTPOINT.addInputField(CONVERSION_CPTestPoint, "GAS_CORR_TEST_STA_NO")     fieldmap_CPTESTPOINT = fieldmappings.getFieldMap(fieldmappings.findFieldMapIndex("STATE_MCD"))     fieldmap_CPTESTPOINT.addInputField(CONVERSION_CPTestPoint, "STATE_MCD")     fieldmap_CPTESTPOINT = fieldmappings.getFieldMap(fieldmappings.findFieldMapIndex("DISTRICT_NAME"))     fieldmap_CPTESTPOINT.addInputField(CONVERSION_CPTestPoint, "DISTRICT_NAME")      fieldmappings.removeFieldMap(fieldmappings.findFieldMapIndex("ANCILLARYROLE"))     fieldmappings.removeFieldMap(fieldmappings.findFieldMapIndex("ENABLED"))     fieldmappings.removeFieldMap(fieldmappings.findFieldMapIndex("CREATIONUSER"))     fieldmappings.removeFieldMap(fieldmappings.findFieldMapIndex("DATECREATED"))     fieldmappings.removeFieldMap(fieldmappings.findFieldMapIndex("DATEMODIFIED"))     fieldmappings.removeFieldMap(fieldmappings.findFieldMapIndex("LASTUSER"))     fieldmappings.removeFieldMap(fieldmappings.findFieldMapIndex("LEGACYID"))     fieldmappings.removeFieldMap(fieldmappings.findFieldMapIndex("INSTALLATIONDATE"))     fieldmappings.removeFieldMap(fieldmappings.findFieldMapIndex("COMMENTS"))     fieldmappings.removeFieldMap(fieldmappings.findFieldMapIndex("LOCATIONDESCRIPTION"))     fieldmappings.removeFieldMap(fieldmappings.findFieldMapIndex("OPERATINGSTATUS"))     fieldmappings.removeFieldMap(fieldmappings.findFieldMapIndex("PROPERTYUNITCODE"))     fieldmappings.removeFieldMap(fieldmappings.findFieldMapIndex("SUBTYPECD"))     fieldmappings.removeFieldMap(fieldmappings.findFieldMapIndex("SYMBOLROTATION"))     fieldmappings.removeFieldMap(fieldmappings.findFieldMapIndex("GASTRACEWEIGHT"))     fieldmappings.removeFieldMap(fieldmappings.findFieldMapIndex("ISR_NO"))     fieldmappings.removeFieldMap(fieldmappings.findFieldMapIndex("ISR_SEQ_NO"))     fieldmappings.removeFieldMap(fieldmappings.findFieldMapIndex("ISR_EXTERNAL_NO1"))     fieldmappings.removeFieldMap(fieldmappings.findFieldMapIndex("SAP_EQUIPMENT_NO"))     fieldmappings.removeFieldMap(fieldmappings.findFieldMapIndex("SAP_FUNCTIONAL_LOCATION"))     fieldmappings.removeFieldMap(fieldmappings.findFieldMapIndex("TESTPOINTTYPE"))     fieldmappings.removeFieldMap(fieldmappings.findFieldMapIndex("WIRECOUNT"))     fieldmappings.removeFieldMap(fieldmappings.findFieldMapIndex("APPT_NO"))     fieldmappings.removeFieldMap(fieldmappings.findFieldMapIndex("STREET_NAME1"))     fieldmappings.removeFieldMap(fieldmappings.findFieldMapIndex("STREET_NAME2"))     fieldmappings.removeFieldMap(fieldmappings.findFieldMapIndex("ZIP_CODE"))     fieldmappings.removeFieldMap(fieldmappings.findFieldMapIndex("DELETE_INDICATOR"))     fieldmappings.removeFieldMap(fieldmappings.findFieldMapIndex("CATHODICPROTECTIONDEVICE"))     fieldmappings.removeFieldMap(fieldmappings.findFieldMapIndex("CIVIC_NO"))     fieldmappings.removeFieldMap(fieldmappings.findFieldMapIndex("CPSYSTEMOBJECTID"))     fieldmappings.removeFieldMap(fieldmappings.findFieldMapIndex("CONVERSIONID"))     fieldmappings.removeFieldMap(fieldmappings.findFieldMapIndex("STR_SEQ_ID"))     fieldmappings.removeFieldMap(fieldmappings.findFieldMapIndex("IMAGEID"))     fieldmappings.removeFieldMap(fieldmappings.findFieldMapIndex("IMAGELINK"))      except Exception as e:     print e     logging.error(": Error setting up field mappings: %s" %(str(e)))     msgTxtErr = msgTxtErr + "\n" + "* Error setting up field mappings: " + str(e)     flMail(from_addr, to_addr, msgTxtErr)


Again if I comment out the ObjectID portion the code runs fine and I get the fields I want in the output. What do I have to do to get the existing ObjectID
Tags (2)
0 Kudos
1 Solution

Accepted Solutions
MathewCoyle
Frequent Contributor
This should be all you need if you are going that route.
fld_OBJID.type = "Long"

View solution in original post

0 Kudos
7 Replies
MathewCoyle
Frequent Contributor
Here's a thread that goes through several examples of field mapping.

http://forums.arcgis.com/threads/33060-field-mapping-in-python-for-ArcGIS-10
0 Kudos
MarcCusumano
Occasional Contributor
I used an example in the thread you provided, and it seems to be working. But now it is failing on OID 32768.

ERROR 001156: Failed on input OID 32768, could not write value '32768' to output field O_OID
Failed to execute (FeatureClassToFeatureClass).

try:
    fieldmappings = arcpy.FieldMappings()
    fieldmappings.addTable(CONVERSION_CPTestPoint)

    fldmap_OBJID = arcpy.FieldMap()
    fldmap_OBJID.addInputField(CONVERSION_CPTestPoint, "OBJECTID")
    fld_OBJID = fldmap_OBJID.outputField
    fld_OBJID.name = "O_OID"
    fldmap_OBJID.outputField = fld_OBJID
    fieldmappings.addFieldMap(fldmap_OBJID)


Obvoiusly this new "O_OID" field is a short integer, how can I specify it as a LONG in the fieldmappings?
0 Kudos
ChrisSnyder
Regular Contributor III
Did you define your new OID field  as a Short Integer? If so, make sure it's a Long Integer.
0 Kudos
MathewCoyle
Frequent Contributor
Yes you'll need to specify the type due to some quirks in how field mapping is implemented by Esri through arcpy. A long or double should suit your needs.

I go through the same issue in this thread.

http://forums.arcgis.com/threads/72269-field-map-problems
0 Kudos
MarcCusumano
Occasional Contributor
Matt, I'm having trouble understanding your solution in that thread because it is much more elaborate than what I'm trying to do. I just need to set one field to LONG or TEXT.
0 Kudos
MathewCoyle
Frequent Contributor
This should be all you need if you are going that route.
fld_OBJID.type = "Long"
0 Kudos
MarcCusumano
Occasional Contributor
This should be all you need if you are going that route.
fld_OBJID.type = "Long"


This worked great, thank you!
0 Kudos