Konwertujesz geometrię na WKT za pomocą ArcPy?

13

Chciałbym móc przekonwertować pojedynczą funkcję (lub potencjalnie wiele funkcji) w warstwie ArcGIS na format dobrze znanego tekstu (WKT) podczas operacji geoprzetwarzania przy użyciu Pythona i ArcPy (bez modułów innych niż ArcPy). Celem jest następnie przekazanie WKT do SQL Server Spatial i wykonanie dodatkowego przetwarzania poza zestawem narzędzi ArcGIS GP. Czy istnieje metoda konwersji funkcji geometrii ArcGIS na WKT za pomocą ArcPy?

Przeczytałem już następujące rzeczy, nie znajdując tego, czego szukam:

Najwyraźniej istniało narzędzie o nazwie „ Zapisz funkcje do pliku tekstowego ” (które wydaje się być skryptem w języku Python), które znajdowało się w przyborniku Samples, ale ten przybornik był przestarzały w wersji 10 i nie mogę znaleźć kopii przybornika Samples ( Mam wersję 10.0) na moim komputerze. Jeśli nie ma aktualnych rozwiązań, jeśli ktoś mógłby po prostu wskazać mi kopię próbki, nie miałbym nic przeciwko użyciu tego narzędzia.

RyanKDalton
źródło

Odpowiedzi:

25

Da.searchcursor powinien dla ciebie pracować.

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

PUNKT Z (-119,53753379999995 49,854383300000052 303,1400000000407)

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

Uwaga : tokeny SHAPE @ JSON, SHAPE @ WKB i SHAPE @ WKT zostały udostępnione w ArcGIS 10.1 z dodatkiem Service Pack 1.

Lub, jeśli szukasz przybornika próbek, jak wspomniałeś - jest tam tylko przestarzały. Możesz do niego wywoływać za pomocą skryptów. Jeśli potrzebujesz rzeczywistego zestawu narzędzi, którego możesz użyć, znajdziesz go tutaj w starej galerii modeli i skryptów

EDYCJA (dodatkowy przykład) ... Ponieważ tak ładnie pytałeś: :)

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

Jest to to samo, co zapytanie / wyrażenie typu „wybierz według atrybutów”. Mam pole o nazwie „TYPE” i wartość „a”.

KHibma
źródło
+1 Za dołączenie przykładu - czy wymagałoby to zbyt wiele za drugi pokazujący, w jaki where_clausesposób zostanie wdrożony? :)
elrobis
Chociaż niestety nie mam jeszcze dostępu do wersji 10.1, ostatecznie udało mi się zaktualizować skrypt Pythona, z którym się łączyłeś. Dzięki!
RyanKDalton
+1 dla „POINT Z” wydaje się, że „POINT” nie obsługuje 3D w trybie arcpy.
geogeek 10.10.2013
5

Nie jestem w stanie tego potwierdzić, ale ta strona dokumentująca SearchCursor (arcpy.da), omawiająca field_namesparametr, zauważa:

Z ArcGIS Help 10.1 - SearchCursor (arcpy.da)

Dostęp do dodatkowych informacji można uzyskać za pomocą tokenów (takich jak OID @) zamiast nazw pól:

SHAPE @ WKT — Reprezentacja dobrze znanego tekstu (WKT) dla geometrii OGC. Zapewnia przenośną reprezentację wartości geometrii jako ciąg tekstowy

Uwaga: tokeny SHAPE @ JSON, SHAPE @ WKB i SHAPE @ WKT zostały udostępnione w ArcGIS 10.1 z dodatkiem Service Pack 1 .

Co myślisz?

elrobis
źródło
1
+1 Także myślę, że @RyanDalton może być w stanie znaleźć funkcje zapisu do pliku tekstowego tutaj .
PolyGeo
4

Wystarczy dodać to, jeśli jest to przydatne dla kogoś ...

# 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
źródło
3

Narzędzie Zapisz funkcje do pliku tekstowego można znaleźć tutaj .

Jest powiązany ArcGIS Idea tutaj które przyciąga, moim zdaniem, perplexingly kilku głosów.

PolyGeo
źródło