I am trying to create an attribute index in a feature class in FME 2011. I couldn't find any trasnformer that does it. So I'm thinking may be I can use "PythonCaller" transformer to call "Add Attribute Index" geoprocessing method from ArcGIS. Is it possible?
Here's the syntax I copied from ArcGIS Help menu:
arcpy.AddIndex_management ("counties.shp", "NAME;STATE_FIPS;CNTY_FIPS", "#", "NON_UNIQUE", "NON_ASCENDING")
Thank you in advance.
Sam
Thank you Mark and blah238. So, I intalled FME2012 on my machine and used python26.dll as my custon python interpreter and copied Mark's code. For Entry point, I entered the name of the class "MyIndexingScript". I'm getting the following error:
Python Exception : Object: Error in executing tool
Error encountered while calling method `input'
PythonFactory failed to process feature
import fmeobjects
import arcpy
class MyIndexingScript(object):
def __init__(self):
self.featureList = []
def input(self,feature):
self.featureList.append(feature)
arcpy.AddIndex_management (self, "YORK_PARCEL_ID;PARCEL_GIS_ID", "PIndex", "UNIQUE", "ASCENDING")
def close(self):
self.pyoutput(feature)
Best Answer
If you can use the File Geodatabase API writer in FME2012-SP2, then there will be a setting in the feature type/writer to enable setting an attribute index.
Unfortunately, for the moment, it's limited to only that writer (not the ArcObjects Geodatabase writer) which has a number of other limitations.
In the meantime you are correct, a call using the PythonCaller should work.
I am no Python expert, but you will need to make sure you call it as a Class and not a Function - because a function will execute once per feature, and you only need it to run once in total.
So I would think something like:
...but you will want to check the help doc for the PythonCaller and probably take a look on fmepedia.com for examples. Also check out fmeevangelist.com and search for Python content. There are some examples I created that might be of use.