Mengonversi geometri ke WKT menggunakan ArcPy?

13

Saya ingin dapat mengonversi satu fitur (atau berpotensi banyak fitur) dalam lapisan ArcGIS ke format Wellknown Text (WKT) selama operasi geoprocessing menggunakan Python dan ArcPy (tanpa modul non-ArcPy). Tujuannya adalah untuk meneruskan WKT ke SQL Server Spatial dan melakukan pemrosesan tambahan di luar toolset ArcGIS GP. Apakah ada metode untuk mengubah fitur geometri ArcGIS ke WKT melalui ArcPy?

Saya sudah membaca yang berikut ini, tanpa menemukan apa yang saya cari:

Rupanya dulu ada alat yang disebut " Fitur Tulisan Untuk File Teks " (yang tampaknya merupakan skrip Python) yang ada di kotak alat Sampel, tetapi kotak alat itu usang pada versi 10 dan saya tidak dapat menemukan salinan Samples Toolbox ( Saya memiliki v10.0) di komputer saya. Jika tidak ada solusi saat ini, jika seseorang bisa mengarahkan saya ke salinan sampel, saya akan baik-baik saja dengan menggunakan alat itu juga.

RyanKDalton
sumber

Jawaban:

25

Kursor da.search seharusnya bekerja untuk Anda.

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

POINT Z (-119.53753379999995 49.854383300000052 303.14500000000407)

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

Catatan : Token SHAPE @ JSON, SHAPE @ WKB, dan SHAPE @ WKT tersedia di ArcGIS 10.1 Paket Layanan 1.

Atau, jika Anda mencari contoh kotak alat seperti yang Anda sebutkan - itu ada, hanya usang. Anda masih dapat memanggilnya dengan skrip. Jika Anda memerlukan kotak alat aktual yang dapat Anda gunakan, ini ada di Galeri Model dan Script yang lama

Sunting (contoh tambahan) ... Karena Anda bertanya dengan sangat baik: :)

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

Itu sama dengan jenis "pilih menurut atribut" dari kueri / ekspresi. Saya memiliki bidang yang disebut "JENIS" dan dan nilai 'a'.

KHibma
sumber
+1 Untuk menyertakan contoh --- apakah akan meminta terlalu banyak untuk contoh kedua yang menunjukkan bagaimana where_clausepenerapannya? :)
elrobis
Meskipun saya sayangnya belum memiliki akses ke 10.1, saya akhirnya dapat memperbarui skrip Python yang Anda tautkan. Terima kasih!
RyanKDalton
+1 untuk "POINT Z" sepertinya "POINT" tidak mendukung 3D di arcpy.
geogeek
5

Saya tidak diperlengkapi untuk mengkonfirmasi ini, tetapi halaman ini yang mendokumentasikan SearchCursor (arcpy.da), membahas field_namesparameter, mencatat yang berikut:

DARI ArcGIS Bantuan 10.1 - SearchCursor (arcpy.da)

Informasi tambahan dapat diakses menggunakan token (seperti OID @) sebagai ganti nama bidang:

SHAPE @ WKT — Representasi teks terkenal (WKT) untuk geometri OGC. Ini memberikan representasi portabel dari nilai geometri sebagai string teks

Catatan: Token SHAPE @ JSON, SHAPE @ WKB, dan SHAPE @ WKT tersedia di ArcGIS 10.1 Paket Layanan 1 .

Bagaimana menurut anda?

elrobis
sumber
1
+1 Juga, saya pikir @RyanDalton mungkin dapat menemukan Fitur Tulis ke File Teks di sini .
PolyGeo
4

Hanya menambahkan ini jika berguna bagi seseorang ...

# 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
sumber
3

Alat Tulis Fitur ke File Teks dapat ditemukan di sini .

Ada Ide ArcGIS terkait di sini yang telah menarik, menurut pendapat saya, membingungkan beberapa suara.

PolyGeo
sumber