Convertire la geometria in WKT usando ArcPy?


13

Vorrei essere in grado di convertire una singola funzione (o potenzialmente molte funzionalità) in un livello ArcGIS in formato Well Known Text (WKT) durante un'operazione di geoprocessing usando Python e ArcPy (nessun modulo non ArcPy). Lo scopo è quindi passare il WKT su SQL Server Spatial ed eseguire ulteriori elaborazioni al di fuori del set di strumenti ArcGIS GP. Esiste un metodo per convertire le funzioni di una geometria ArcGIS in WKT tramite ArcPy?

Ho già letto quanto segue, senza trovare quello che sto cercando:

Apparentemente esisteva uno strumento chiamato " Scrivi funzionalità nel file di testo " (che sembra essere uno script Python) che si trovava nella casella degli strumenti Samples, ma quella casella degli strumenti era obsoleta alla versione 10 e non riesco a trovare una copia della casella degli strumenti Samples ( Ho v10.0) sulla mia macchina. Se non ci sono soluzioni attuali, se qualcuno potesse semplicemente indicarmi una copia del campione, starei benissimo anche con questo strumento.

Risposte:


25

Un da.searchcursor dovrebbe funzionare per te.

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

PUNTO Z (-119.53753379999995 49.854383300000052 303.14500000000407)

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

Nota : i token SHAPE @ JSON, SHAPE @ WKB e SHAPE @ WKT sono stati resi disponibili in ArcGIS 10.1 Service Pack 1.

Oppure, se stai cercando la casella degli strumenti dei campioni come hai menzionato, è lì, appena deprecata. Puoi chiamarlo con gli script ancora. Se hai bisogno dell'attuale toolbox che puoi usare, è qui nella vecchia Galleria Modello e Script

MODIFICA (esempio extra) ... Perché me l'hai chiesto così bene: :)

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

È lo stesso di un tipo di query / espressione "seleziona per attributi". Ho un campo chiamato "TIPO" e un valore "a".


+1 Per includere l'esempio --- sarebbe chiedere troppo per un secondo che mostra come where_clausesarebbe implementato? :)
elrobis

Mentre purtroppo non ho ancora accesso a 10.1, alla fine sono stato in grado di aggiornare lo script Python a cui ti sei collegato. Grazie!
RyanKDalton,

+1 per "POINT Z" sembra che "POINT" non supporti il ​​3D in arcpy.
geogeek,

5

Non sono in grado di confermarlo, ma questa pagina che documenta SearchCursor (arcpy.da), discutendo il field_namesparametro, osserva quanto segue:

DA ARCGIS Help 10.1 - SearchCursor (arcpy.da)

Ulteriori informazioni sono accessibili tramite token (come OID @) al posto dei nomi dei campi:

SHAPE @ WKT : la rappresentazione del testo noto (WKT) per la geometria OGC. Fornisce una rappresentazione portatile di un valore di geometria come stringa di testo

Nota: i token SHAPE @ JSON, SHAPE @ WKB e SHAPE @ WKT sono stati resi disponibili in ArcGIS 10.1 Service Pack 1 .

Cosa pensi?


1
+1 Inoltre, penso che @RyanDalton possa essere in grado di trovare le funzioni di scrittura nel file di testo qui .
PolyGeo

4

Basta aggiungere questo nel caso sia utile per qualcuno ...

# 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

3

Lo strumento Scrivi funzionalità su file di testo è disponibile qui .

C'è un'idea ArcGIS correlata qui che ha attirato, a mio avviso, pochi voti perplessi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.