Konvertieren von Geometrie in WKT mit ArcPy?

13

Ich möchte in der Lage sein, ein einzelnes Feature (oder möglicherweise viele Features) in einem ArcGIS-Layer während einer Geoverarbeitungsoperation mit Python und ArcPy (keine Nicht-ArcPy-Module) in das WKT-Format ( Well Known Text ) zu konvertieren. Der Zweck besteht darin, das WKT an SQL Server Spatial weiterzuleiten und eine zusätzliche Verarbeitung außerhalb des ArcGIS GP-Toolset durchzuführen. Gibt es eine Methode zum Konvertieren von ArcGIS-Geometrie-Features in WKT über ArcPy?

Folgendes habe ich schon gelesen, ohne zu wissen, wonach ich gesucht habe:

Früher gab es anscheinend ein Tool namens " Features in eine Textdatei schreiben " (anscheinend ein Python-Skript), das sich in der Samples-Toolbox befand, aber diese Toolbox war in Version 10 veraltet und ich kann keine Kopie der Samples-Toolbox finden ( Ich habe v10.0) auf meinem Rechner. Wenn es keine aktuellen Lösungen gibt und mich jemand auf eine Kopie des Beispiels verweisen könnte, wäre ich auch mit diesem Tool völlig in Ordnung.

RyanKDalton
quelle

Antworten:

25

Ein da.searchcursor sollte für Sie arbeiten.

for row in arcpy.da.SearchCursor("path2data", ["SHAPE@WKT"]):
  print row[0]

PUNKT Z (-119.53753379999995 49.854383300000052 303.14500000000407)

Dokumentieren Sie hier: http://resources.arcgis.com/de/help/main/10.1/index.html#//002z0000001t000000

Hinweis : Die Token SHAPE @ JSON, SHAPE @ WKB und SHAPE @ WKT wurden mit ArcGIS 10.1 Service Pack 1 zur Verfügung gestellt.

Oder, wenn Sie hinter der Beispiel-Toolbox her sind, wie Sie sie erwähnt haben - sie ist einfach veraltet. Sie können immer noch mit Skripten darauf zugreifen. Wenn Sie die aktuelle Toolbox benötigen, die Sie verwenden können, finden Sie diese hier in der alten Modell- und Skriptgalerie

EDIT (extra Beispiel) ... Weil du so nett gefragt hast: :)

for row in arcpy.da.SearchCursor("GPX_Layer", ["SHAPE@WKT"],where_clause="TYPE = 'a'"):
    print row[0]

Dies ist genau das Gleiche wie die Art der Abfrage / des Ausdrucks "Auswahl nach Attributen". Ich habe ein Feld namens "TYPE" und einen Wert "a".

KHibma
quelle
+1 Zum Einbeziehen des Beispiels --- Wäre es zu viel verlangt, wenn ein zweites Beispiel zeigen where_clausewürde , wie das implementiert werden würde? :)
Elrobis
Obwohl ich leider noch keinen Zugriff auf 10.1 habe, konnte ich das Python-Skript, mit dem Sie verlinkt haben, letztendlich aktualisieren. Vielen Dank!
RyanKDalton
+1 für "POINT Z" scheint, dass "POINT" 3D in Arcpy nicht unterstützt.
Geogeek
5

Ich bin nicht , dies zu bestätigen ausgestattet, aber diese Seite Dokumentieren SearchCursor (arcpy.da), diskutieren die field_namesParameter, nimmt die folgenden:

VON ArcGIS Help 10.1 - SearchCursor (arcpy.da)

Auf zusätzliche Informationen kann mit Token (wie OID @) anstelle von Feldnamen zugegriffen werden:

SHAPE @ WKT - Die bekannte Textdarstellung (WKT) für die OGC-Geometrie. Es bietet eine portable Darstellung eines Geometriewerts als Textzeichenfolge

Hinweis: Die Token SHAPE @ JSON, SHAPE @ WKB und SHAPE @ WKT wurden mit ArcGIS 10.1 Service Pack 1 zur Verfügung gestellt .

Was denkst du?

Elrobis
quelle
1
+1 Außerdem denke ich, dass @RyanDalton in der Lage sein könnte, Schreibfunktionen für Textdateien hier zu finden .
PolyGeo
4

Füge dies nur hinzu, falls es für jemanden nützlich ist ...

# Convert to WKT by field name (Shape)
file_path = 'C:\shapefile.shp'
query= arcpy.SearchCursor(file_path)
for row in query:
  the_geom=row.getValue('Shape') # Get Geometry field
  wkt = the_geom.WKT # Convert to WKT, can also use WKB, JSON etc
Matt
quelle
3

Das Werkzeug Features in Textdatei schreiben finden Sie hier .

Es gibt eine ähnliche ArcGIS Idee hier , die angezogen hat, meiner Meinung nach , verblüffend wenige Stimmen.

PolyGeo
quelle