Beschreiben von Daten
Geoverarbeitungswerkzeuge können alle Datentypen verwenden, z. B. Geodatabase-Feature-Classes, Shapefiles, Raster, Tabellen, Topologien und Netzwerke. Jedes Datenelement verfügt über bestimmte Eigenschaften, auf die Sie zugreifen, mit denen Sie den Ablauf eines Skripts steuern oder die Sie als Parameter eines Werkzeugs verwenden können. Der Ausgabe-Feature-Typ des Werkzeugs Überschneiden (Intersect) hängt beispielsweise vom Shape-Typ der Daten ab, die einander überschneiden sollen: Punkt, Linie oder Polygon. Wenn das Werkzeug Überschneiden (Intersect) in einem Skript für eine Liste von Eingabe-Datasets ausgeführt wird, müssen Sie in der Lage sein, die Shape-Typen der Eingabe-Datasets zu erkennen, damit der richtige Ausgabe-Shape-Typ festgelegt werden kann. Sie können die Funktion Describe verwenden, um die Shape-Typen aller Eingabe-Datasets zu ermitteln.
Mit der Funktion Describe können die Eigenschaften eines Datasets bestimmt und die entsprechenden Entscheidungen getroffen werden. Im folgenden Beispiel verwendet das Skript die Describe-Funktion beispielsweise zum Auswerten des Shape-Typs (Polylinie, Polygon, Punkt usw.) von Eingabedaten und zum Bestimmen des geeigneten Geoverarbeitungswerkzeugs.
import arcpy inFC = arcpy.GetParameterAsText(0) outFC = arcpy.GetParameterAsText(1) # Describe a feature class # desc = arcpy.Describe(inFC) # Get the shape type (Polygon, Polyline) of the feature class # type = desc.shapeType # If the shapeType is Polygon convert the data to polylines using the FeatureToLine tool, # otherwise just copy the data using the CopyFeatures tool. # if type == "Polygon": arcpy.FeatureToLine_management(inFC, outFC) else: arcpy.CopyFeatures_management(inFC, outFC)
Die Describe-Funktion gibt ein Describe-Objekt zurück, das Eigenschaften wie Datentyp, Felder, Indizes usw. umfasst. Ihre Eigenschaften sind dynamisch. Dies bedeutet, dass je nach beschriebenem Datentyp unterschiedliche Describe-Eigenschaften zur Verfügung stehen.
Describe-Eigenschaften sind in einzelne Eigenschaftengruppen unterteilt. Jedes einzelne Dataset erhält die Eigenschaften von mindestens einer dieser Gruppen. Beim Beschreiben einer Geodatabase-Feature-Class können Sie beispielsweise auf die Eigenschaften der Eigenschaftengruppen GDB FeatureClass, FeatureClass, Table und Dataset zugreifen. Alle Daten erhalten unabhängig vom Datentyp immer die generischen Eigenschaften des Describe-Objekts.
Verwenden von Eigenschaftensätzen
Einige Eigenschaften sind Mitglieder eines Eigenschaftensatzes. Die Toleranzen eines Coverages oder die Verbindungseigenschaften eines Workspaces werden beispielsweise als Eigenschaftensätze zurückgegeben. Eigenschaftensätze verfügen über benannte Eigenschaften, die aus dem Eigenschaftensatz selbst aufgerufen werden können. Im folgenden Beispiel werden die Toleranzen eines Coverages (Fuzzy, Dangle, TicMatch, Edit, NodeSnap, Weed, Grain und Snap) in die Standardausgabe geschrieben:
import arcpy # Create a describe object from a coverage feature class # desc = arcpy.Describe("D:/St_Johns/covs/freshwater") # Create a property set of coverage tolerances # covTols = desc.tolerances # Print each coverage tolerance # print covTols.fuzzy print covTols.dangle print covTols.ticMatch print covTols.edit print covTols.nodeSnap print covTols.weed print covTols.grain print covTols.snap
Eigenschaftensätze werden typischerweise verwendet, wenn die Eigenschaften des beschriebenen Objekts variieren. Die Verbindungseigenschaften (Server, Instanz, Datenbank, Benutzer und Version) eines Enterprise-Geodatabase-Workspaces variieren entsprechend dem jeweiligen Typ der verwendeten ArcSDE-Datenbank. Daher empfiehlt sich hier ein Eigenschaftensatz ohne vordefinierte Menge von Werten.