Перетворення геометрії в WKT за допомогою ArcPy?


13

Я хотів би мати змогу перетворити одну особливість (або потенційно багато функцій) у шарі ArcGIS у добре відомий текст (WKT) формат під час операції геообробки за допомогою Python та ArcPy (немає модулів, які не належать до ArcPy). Метою є передати WKT на просторовий сервер SQL Server та здійснити додаткову обробку поза набором інструментів GP ArcGIS. Чи існує метод перетворення функцій геометрії ArcGIS у WKT через ArcPy?

Я вже читав наступне, не знаходячи того, що я після:

Мабуть, раніше був інструмент під назвою " Написати функції в текстовий файл " (який, схоже, є сценарієм Python), який знаходився в наборі інструментів Samples, але цей інструментарій застарілий у версії 10, і я не можу знайти копію Пакету інструментів Samples ( У мене на машині v10.0). Якщо не існує поточних рішень, якби хтось міг просто вказати мені на копію зразка, я також був би непоганий із використанням цього інструменту.

Відповіді:


25

Da.search курсор повинен працювати для вас.

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

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

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

Примітка. Токени SHAPE @ JSON, SHAPE @ WKB і SHAPE @ WKT стали доступними в ArcGIS 10.1 Service Pack 1.

Або, якщо ви користуєтесь зразком інструментів, як ви згадали, - його там, просто застаріле. Ви можете зателефонувати в нього за допомогою сценаріїв. Якщо вам потрібна реальна панель інструментів, яку ви можете використовувати, її тут на старій галереї моделей та сценаріїв

EDIT (додатковий приклад) ... Тому що ви так гарно запитали: :)

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

Це точно так само, як тип запиту / виразу типу "виділити за атрибутами". У мене є поле під назвою "TYPE" і значення "a".


+1 Для включення прикладу --- чи буде просити надто багато для другого, що показує, як це where_clauseбуде реалізовано? :)
elrobis

Хоча я, на жаль, ще не маю доступу до 10.1, я в кінцевому підсумку зміг оновити сценарій Python, до якого ви пов’язані. Спасибі!
RyanKDalton

+1 для "POINT Z", здається, що "POINT" не підтримує 3D в архпії.
geogeek

5

Я не готовий це підтвердити, але ця сторінка, що документує SearchCursor (arcpy.da), обговорюючи field_namesпараметр, зазначає наступне:

ДО довідки ArcGIS 10.1 - SearchCursor (arcpy.da)

Додаткову інформацію можна отримати за допомогою токенів (наприклад, OID @) замість імен полів:

SHAPE @ WKT - добре відоме подання тексту (WKT) для геометрії OGC. Він забезпечує портативне подання значення геометрії у вигляді текстового рядка

Примітка. Токени SHAPE @ JSON, SHAPE @ WKB і SHAPE @ WKT стали доступними в ArcGIS 10.1 Service Pack 1 .

Що ти думаєш?


1
+1 Крім того , я думаю , що @RyanDalton може бути в змозі знайти Write Features в текстовий файл тут .
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

3

Інструмент " Записати функції в текстовий файл" можна тут .

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.