Convertir la géométrie en WKT en utilisant ArcPy?

13

J'aimerais pouvoir convertir une seule entité (ou potentiellement plusieurs entités) dans une couche ArcGIS au format WKT ( Well Known Text ) au cours d'une opération de géotraitement à l'aide de Python et ArcPy (pas de modules non ArcPy). Le but est de transmettre ensuite le WKT à SQL Server Spatial et d'effectuer un traitement supplémentaire en dehors du jeu d'outils ArcGIS GP. Existe-t-il une méthode pour convertir une entité géométrique ArcGIS en WKT via ArcPy?

J'ai déjà lu ce qui suit, sans trouver ce que je recherche:

Il existait apparemment un outil appelé " Write Features To Text File " (qui semble être un script Python) qui se trouvait dans la boîte à outils Samples, mais cette boîte à outils était déconseillée dans la version 10 et je ne trouve pas de copie de la boîte à outils Samples ( J'ai v10.0) sur ma machine. S'il n'y a pas de solutions actuelles, si quelqu'un pouvait simplement me diriger vers une copie de l'échantillon, je serais tout à fait d'accord avec l'utilisation de cet outil également.

RyanKDalton
la source

Réponses:

25

Un da.searchcursor devrait fonctionner pour vous.

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

POINT Z (-119.53753379999995 49.854383300000052 303.14500000000407)

doc ici: http://resources.arcgis.com/en/help/main/10.1/index.html#//002z0000001t000000

Remarque : les jetons SHAPE @ JSON, SHAPE @ WKB et SHAPE @ WKT ont été mis à disposition dans ArcGIS 10.1 Service Pack 1.

Ou, si vous recherchez la boîte à outils d'échantillons comme vous l'avez mentionné - c'est là, tout simplement obsolète. Vous pouvez toujours l'appeler avec des scripts. Si vous avez besoin de la boîte à outils que vous pouvez utiliser, c'est ici sur l'ancienne galerie de modèles et de scripts

EDIT (exemple supplémentaire) ... Parce que vous avez demandé si gentiment: :)

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

C'est la même chose qu'un type de requête / expression "sélectionner par attributs". J'ai un champ appelé "TYPE" et une valeur "a".

KHibma
la source
+1 Pour inclure l'exemple --- en demanderait-il trop pour un deuxième montrant comment le where_clauseserait mis en œuvre? :)
elrobis
Bien que je n'aie malheureusement pas encore accès à 10.1, j'ai finalement pu mettre à jour le script Python auquel vous avez lié. Merci!
RyanKDalton
+1 pour "POINT Z", il semble que les "POINT" ne prennent pas en charge la 3D dans arcpy.
geogeek
5

Je ne suis pas équipé pour le confirmer, mais cette page documentant SearchCursor (arcpy.da), discutant le field_namesparamètre, note ce qui suit:

DANS ArcGIS Help 10.1 - SearchCursor (arcpy.da)

Des informations supplémentaires sont accessibles à l'aide de jetons (tels que OID @) à la place des noms de champ:

SHAPE @ WKT —La représentation textuelle bien connue (WKT) de la géométrie OGC. Il fournit une représentation portable d'une valeur de géométrie sous forme de chaîne de texte

Remarque: les jetons SHAPE @ JSON, SHAPE @ WKB et SHAPE @ WKT ont été mis à disposition dans ArcGIS 10.1 Service Pack 1 .

Qu'est-ce que tu penses?

elrobis
la source
1
+1 De plus, je pense que @RyanDalton peut trouver des fonctionnalités d'écriture dans un fichier texte ici .
PolyGeo
4

Il suffit d'ajouter cela au cas où cela serait utile pour quelqu'un ...

# 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
Mat
la source
3

L' outil Écrire des fonctionnalités dans un fichier texte peut être trouvé ici .

Il y a une idée ArcGIS connexe ici qui a attiré, à mon avis, étonnamment peu de votes.

PolyGeo
la source