def __init__(self, inputFC, templateFC = None, explicitSpatialRef = None, silentWarnings = False, useChordal = True): #### Validate Input Feature Class #### ERROR.checkFC(inputFC) try: self.inPath, self.inName = OS.path.split(inputFC) except: self.inPath = None self.inName = inputFC #### Validate Template FC #### if templateFC != None: if ARCPY.Exists(templateFC) == False: templateFC = None #### ShapeFile Boolean #### self.shapeFileBool = False if self.inPath: self.shapeFileBool = UTILS.isShapeFile(inputFC) #### Create Feature Layer if LYR File #### path, ext = OS.path.splitext(inputFC) if ext.upper() == ".LYR": tempFC = "SSDO_FeatureLayer" DM.MakeFeatureLayer(inputFC, tempFC) inputFC = tempFC #### Describe Input #### self.info = ARCPY.Describe(inputFC) #### Assure Input are Features with OIDs #### if not self.info.hasOID: ARCPY.AddIDMessage("ERROR", 339, self.inName) raise SystemExit() #### Assign Describe Objects to Class Attributes #### self.inputFC = inputFC self.catPath = self.info.CatalogPath self.shapeType = self.info.ShapeType self.oidName = self.info.oidFieldName self.dataType = self.info.DataType self.shapeField = self.info.ShapeFieldName self.templateFC = templateFC self.hasM = self.info.HasM self.hasZ = self.info.HasZ self.silentWarnings = silentWarnings #### Set Initial Extent Depending on DataType #### if self.dataType in ["FeatureLayer", "Layer"]: try: tempInfo = ARCPY.Describe(self.catPath) extent = tempInfo.extent except: #### in_memory, SDE, NetCDF etc... #### extent = self.info.extent self.fidSet = self.info.FIDSet if self.fidSet == "": self.selectionSet = False else: self.selectionSet = True else: extent = self.info.extent self.fidSet = "" self.selectionSet = False self.extent = extent #### Set Spatial Reference #### inputSpatRef = self.info.SpatialReference inputSpatRefName = inputSpatRef.name if explicitSpatialRef: #### Explicitely Override Spatial Reference #### self.templateFC = None self.spatialRef = explicitSpatialRef else: #### 1. Feature Dataset, 2. Env Setting, 3. Input Hierarchy #### self.spatialRef = UTILS.returnOutputSpatialRef(inputSpatRef, outputFC = templateFC) self.spatialRefString = UTILS.returnOutputSpatialString(self.spatialRef) self.spatialRefName = self.spatialRef.name self.spatialRefType = self.spatialRef.type #### Warn if Spatial Reference Changed #### if not silentWarnings: UTILS.compareSpatialRefNames(inputSpatRefName, self.spatialRefName) #### Check for Projection #### if self.spatialRefType.upper() != "PROJECTED": if self.spatialRefType.upper() == "GEOGRAPHIC": self.useChordal = useChordal if not explicitSpatialRef: if self.useChordal: ARCPY.AddIDMessage("WARNING", 1605) else: ARCPY.AddIDMessage("WARNING", 916) else: self.useChordal = False if not explicitSpatialRef: ARCPY.AddIDMessage("WARNING", 916) else: self.useChordal = False #### Angular/Linear Unit Info #### self.distanceInfo = UTILS.DistanceInfo(self.spatialRef, useChordalDistances = self.useChordal) #### Create Composition and Accounting Structure #### self.fields = {} self.master2Order = {} self.order2Master = {} #### Obtain a Full List of Field Names/Type #### self.allFields = {} listFields = self.info.fields for field in listFields: name = field.name.upper() self.allFields[name] = FCField(field) #### Set Z and M Flags and Defaults #### zmInfo = UTILS.setZMFlagInfo(self.hasM, self.hasZ, self.spatialRef) self.zFlag, self.mFlag, self.defaultZ = zmInfo self.zBool = self.zFlag == "ENABLED" #### Render Type #### self.renderType = UTILS.renderType[self.shapeType.upper()]
def __init__(self, inputFC, templateFC=None, explicitSpatialRef=None, silentWarnings=False, useChordal=True): #### Validate Input Feature Class #### ERROR.checkFC(inputFC) try: self.inPath, self.inName = OS.path.split(inputFC) except: self.inPath = None self.inName = inputFC #### Validate Template FC #### if templateFC != None: if ARCPY.Exists(templateFC) == False: templateFC = None #### ShapeFile Boolean #### self.shapeFileBool = False if self.inPath: self.shapeFileBool = UTILS.isShapeFile(inputFC) #### Create Feature Layer if LYR File #### path, ext = OS.path.splitext(inputFC) if ext.upper() == ".LYR": tempFC = "SSDO_FeatureLayer" DM.MakeFeatureLayer(inputFC, tempFC) inputFC = tempFC #### Describe Input #### self.info = ARCPY.Describe(inputFC) #### Assure Input are Features with OIDs #### if not self.info.hasOID: ARCPY.AddIDMessage("ERROR", 339, self.inName) raise SystemExit() #### Assign Describe Objects to Class Attributes #### self.inputFC = inputFC self.catPath = self.info.CatalogPath self.shapeType = self.info.ShapeType self.oidName = self.info.oidFieldName self.dataType = self.info.DataType self.shapeField = self.info.ShapeFieldName self.templateFC = templateFC self.hasM = self.info.HasM self.hasZ = self.info.HasZ self.silentWarnings = silentWarnings #### Set Initial Extent Depending on DataType #### if self.dataType in ["FeatureLayer", "Layer"]: try: tempInfo = ARCPY.Describe(self.catPath) extent = tempInfo.extent except: #### in_memory, SDE, NetCDF etc... #### extent = self.info.extent self.fidSet = self.info.FIDSet if self.fidSet == "": self.selectionSet = False else: self.selectionSet = True else: extent = self.info.extent self.fidSet = "" self.selectionSet = False self.extent = extent #### Set Spatial Reference #### inputSpatRef = self.info.SpatialReference inputSpatRefName = inputSpatRef.name if explicitSpatialRef: #### Explicitely Override Spatial Reference #### self.templateFC = None self.spatialRef = explicitSpatialRef else: #### 1. Feature Dataset, 2. Env Setting, 3. Input Hierarchy #### self.spatialRef = UTILS.returnOutputSpatialRef(inputSpatRef, outputFC=templateFC) self.spatialRefString = UTILS.returnOutputSpatialString( self.spatialRef) self.spatialRefName = self.spatialRef.name self.spatialRefType = self.spatialRef.type #### Warn if Spatial Reference Changed #### if not silentWarnings: UTILS.compareSpatialRefNames(inputSpatRefName, self.spatialRefName) #### Check for Projection #### if self.spatialRefType.upper() != "PROJECTED": if self.spatialRefType.upper() == "GEOGRAPHIC": self.useChordal = useChordal if not explicitSpatialRef: if self.useChordal: ARCPY.AddIDMessage("WARNING", 1605) else: ARCPY.AddIDMessage("WARNING", 916) else: self.useChordal = False if not explicitSpatialRef: ARCPY.AddIDMessage("WARNING", 916) else: self.useChordal = False #### Angular/Linear Unit Info #### self.distanceInfo = UTILS.DistanceInfo( self.spatialRef, useChordalDistances=self.useChordal) #### Create Composition and Accounting Structure #### self.fields = {} self.master2Order = {} self.order2Master = {} #### Obtain a Full List of Field Names/Type #### self.allFields = {} listFields = self.info.fields for field in listFields: name = field.name.upper() self.allFields[name] = FCField(field) #### Set Z and M Flags and Defaults #### zmInfo = UTILS.setZMFlagInfo(self.hasM, self.hasZ, self.spatialRef) self.zFlag, self.mFlag, self.defaultZ = zmInfo self.zBool = self.zFlag == "ENABLED" #### Render Type #### self.renderType = UTILS.renderType[self.shapeType.upper()]