Преобразование геометрии в WKT с использованием ArcPy?

13

Я хотел бы иметь возможность конвертировать один объект (или, возможно, множество объектов) в слое ArcGIS в формат общеизвестного текста (WKT) во время операции геообработки с использованием Python и ArcPy (без модулей, отличных от ArcPy). Цель состоит в том, чтобы затем передать WKT в SQL Server Spatial и выполнить дополнительную обработку вне набора инструментов ArcGIS GP. Есть ли способ для преобразования геометрических объектов ArcGIS в WKT через ArcPy?

Я уже прочитал следующее, не находя, что я после:

Очевидно, раньше использовался инструмент под названием « Запись объектов в текстовый файл » (который выглядит как скрипт Python), который был в наборе инструментов Samples, но этот набор инструментов устарел в версии 10, и я не могу найти копию набора инструментов Samples ( У меня v10.0) на моей машине. Если бы не было текущих решений, если бы кто-то мог просто указать мне на образец, я тоже был бы в порядке с этим инструментом.

RyanKDalton
источник

Ответы:

25

Da.searchcursor должен работать для вас.

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

ТОЧКА Z (-119.53753379999995 49.854383300000052 303.14500000000407)

Документ здесь: http://resources.arcgis.com/en/help/main/10.1/index.html#//002z0000001t000000

Примечание : токены SHAPE @ JSON, SHAPE @ WKB и SHAPE @ WKT были доступны в ArcGIS 10.1 с пакетом обновления 1 (SP1).

Или, если вам нужен пример набора инструментов, как вы упомянули - он там, просто устарел. Вы можете позвонить в него с помощью сценариев еще. Если вам нужен актуальный набор инструментов, который вы можете использовать, он находится здесь, на старой галерее моделей и скриптов

РЕДАКТИРОВАТЬ (дополнительный пример) ... Потому что вы так мило спросили :)

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

Это то же самое, что и тип запроса / выражения «выбор по атрибутам». У меня есть поле с именем «ТИП» и значение «а».

KHibma
источник
+1 Для включения примера --- будет ли он слишком много просить для второго, показывающего, как это where_clauseбудет реализовано? :)
elrobis
Хотя, к сожалению, у меня пока нет доступа к 10.1, я в конечном итоге смог обновить скрипт Python, с которым вы связались. Благодарность!
RyanKDalton
+1 для "POINT Z" кажется, что "POINT" не поддерживает 3D в arcpy.
Geogeek
5

Я не оборудован, чтобы подтвердить это, но эта страница документирования SearchCursor (arcpy.da), обсуждая field_namesпараметр, отмечает следующее:

FROM ArcGIS Help 10.1 - SearchCursor (arcpy.da)

Дополнительную информацию можно получить с помощью токенов (например, OID @) вместо имен полей:

SHAPE @ WKT - широко известное текстовое представление (WKT) для геометрии OGC. Он обеспечивает переносимое представление значения геометрии в виде текстовой строки

Примечание: токены SHAPE @ JSON, SHAPE @ WKB и SHAPE @ WKT были доступны в ArcGIS 10.1 с пакетом обновления 1 (SP1) .

Как вы думаете?

elrobis
источник
1
+1 Кроме того, я думаю, что @RyanDalton может найти функцию записи объектов в текстовый файл здесь .
PolyGeo
4

Просто добавив это на случай, если это кому-нибудь пригодится ...

# 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
источник
3

Инструмент « Запись объектов в текстовый файл» можно найти здесь .

Существует родственный ArcGIS идея здесь , что привлекает, на мой взгляд, загадочно несколько голосов.

PolyGeo
источник