def updateParameters(self): """Modify the values and properties of parameters before internal validation is performed. This method is called whenever a parmater has been changed.""" sr = arcpy.SpatialReference(2275) if arcpy.Describe(self.params[0]).spatialReference != sr: self.params[0].setErrorMessage("Coordinate System Must be SPC 4201")
import arcpy class ToolValidator(object): """Class for validating a tool's parameter values and controlling the behavior of the tool's dialog.""" def __init__(self): """Setup arcpy and the list of tool parameters.""" self.params = arcpy.GetParameterInfo() self.fcfield = (None, None) def initializeParameters(self): """Refine the properties of a tool's parameters. This method is called when the tool is opened.""" return def updateParameters(self): """Modify the values and properties of parameters before internal validation is performed. This method is called whenever a parmater has been changed.""" if self.params[0].value and self.params[1].value: fc, col = str(self.params[0].value), str(self.params[1].value) if self.fcfield != (fc, col): self.fcfield = (fc, col) # Get the unique values of the field 'col' in the feature class 'fc' unique_values = [str(val) for val in sorted( set( row.getValue(col) for row in arcpy.SearchCursor(fc, None, None, col) ) ) ] # Assign the unique_values list to parameters 2 and 3 self.params[2].filter.list = unique_values self.params[3].filter.list = unique_values # Set the default values of parameters 2 and 3 to the first item in the list if self.params[2].value not in self.params[2].filter.list: self.params[2].value = self.params[2].filter.list[0] if self.params[3].value not in self.params[3].filter.list: if self.params[3].filter.list[0] != self.params[2].value: self.params[3].value = self.params[3].filter.list[0] else: self.params[3].value = self.params[3].filter.list[.1] def updateMessages(self): """Modify the messages created by internal validation for each tool parameter. This method is called after internal validation.""" if self.params[2].value == self.params[3].value: self.params[3].setErrorMessage("Values cannot be the same")
def updateParameters(self): """Modify the values and properties of parameters before internal validation is performed. This method is called whenever a parmater has been changed.""" wkid = getattr(getattr(arcpy.Describe(self.params[0]), "spatialReference", None), "factoryCode", None) if wkid != 2275: self.params[0].setErrorMessage("Coordinate System Must be SPC 4201")
print arcpy.Describe(self.params[0]).spatialReference arcpy.AddMessage(arcpy.Describe(self.params[0]).spatialReference)
Les membres connectés peuvent publier, suivre les mises à jour, et plus encore. Nouveau ici ? Inscrivez-vous gratuitement.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.