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.

Eigenschaften des Describe-ObjektsArcInfo-FeldeigenschaftenArcInfo-TabelleneigenschaftenCAD-Zeichnungs-Dataset-EigenschaftenCAD-FeatureClass-EigenschaftenCoverage-FeatureClass-EigenschaftenCoverage-EigenschaftenDataset-EigenschaftendBASE-TabelleneigenschaftenFeatureClass-EigenschaftenDateieigenschaftenOrdnereigenschaftenGDB-FeatureClass-EigenschaftenGDB-TabelleneigenschaftenEigenschaften von "Geometrisches Netzwerk"Layer-EigenschaftenKartendokument-EigenschaftenMosaik-Dataset-EigenschaftenNetwork Analyst-Layer-EigenschaftenNetzwerk-Dataset-EigenschaftenPRJ-DateieigenschaftenRaster-Band-EigenschaftenRaster-KatalogeigenschaftenRaster-Dataset-EigenschaftenRelationshipClass-EigenschaftenRepresentationClass-EigenschaftenSchematic-Dataset-EigenschaftenSchematic-Diagramm-EigenschaftenSchematic-Ordner-EigenschaftenSDC-FeatureClass-EigenschaftenShapefile-FeatureClass-EigenschaftenTabelleneigenschaftenTableView-EigenschaftenTextdatei-EigenschaftenTIN-EigenschaftenWerkzeugeigenschaftenToolbox-EigenschaftenTopologie-EigenschaftenVPF-Coverage-EigenschaftenVPF-FeatureClass-EigenschaftenVPF-TabelleneigenschaftenWorkspace-Eigenschaften

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.

Verwandte Themen


7/10/2012