Convertendo geometria em WKT usando o ArcPy?

13

Eu gostaria de poder converter um único recurso (ou potencialmente muitos recursos) em uma camada do ArcGIS para o formato de texto conhecido (WKT) durante uma operação de geoprocessamento usando Python e ArcPy (nenhum módulo que não seja o ArcPy). O objetivo é passar o WKT para o SQL Server Spatial e fazer processamento adicional fora do conjunto de ferramentas do ArcGIS GP. Existe um método para converter recursos de geometria do ArcGIS para WKT via ArcPy?

Eu já li o seguinte, sem encontrar o que estou procurando:

Aparentemente, costumava haver uma ferramenta chamada " Write Features To Text File " (que parece ser um script Python) que estava na caixa de ferramentas Samples, mas essa caixa de ferramentas foi preterida na versão 10 e não consigo encontrar uma cópia da Samples Toolbox ( Eu tenho a v10.0) na minha máquina. Se não houver soluções atuais, se alguém puder me indicar uma cópia da amostra, eu também ficaria bem em usar essa ferramenta.

RyanKDalton
fonte

Respostas:

25

Um da.searchcursor deve funcionar para você.

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

PONTO Z (-119.53753379999995 49.854383300000052 303.14500000000407)

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

Nota : Os tokens SHAPE @ JSON, SHAPE @ WKB e SHAPE @ WKT foram disponibilizados no ArcGIS 10.1 Service Pack 1.

Ou, se você estiver atrás da caixa de ferramentas de amostras como você mencionou - está lá, apenas obsoleta. Você pode entrar nele ainda com scripts. Se você precisar da caixa de ferramentas real que pode usar, está aqui na antiga Galeria de modelos e scripts

EDIT (exemplo extra) ... Porque você pediu muito bem: :)

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

É exatamente o mesmo que um tipo de consulta / expressão "selecionar por atributos". Eu tenho um campo chamado "TYPE" e um valor 'a'.

KHibma
fonte
+1 Para incluir o exemplo --- seria pedir muito um segundo, mostrando como where_clauseisso seria implementado? :)
elrobis
Embora eu ainda não tenha acesso à versão 10.1, finalmente consegui atualizar o script Python ao qual você vinculou. Obrigado!
precisa saber é o seguinte
+1 para "PONTO Z" parece que o "PONTO" não suporta 3D no arco.
geogeek
5

Não estou preparado para confirmar isso, mas esta página documentando SearchCursor (arcpy.da), discutindo o field_namesparâmetro, observa o seguinte:

FROM ArcGIS Help 10.1 - SearchCursor (arcpy.da)

Informações adicionais podem ser acessadas usando tokens (como OID @) no lugar dos nomes de campo:

SHAPE @ WKT - A representação de texto conhecido (WKT) para geometria OGC. Ele fornece uma representação portátil de um valor de geometria como uma sequência de texto

Nota: Os tokens SHAPE @ JSON, SHAPE @ WKB e SHAPE @ WKT foram disponibilizados no ArcGIS 10.1 Service Pack 1 .

O que você acha?

elrobis
fonte
1
+1 Além disso, acho que o @RyanDalton pode encontrar recursos de gravação em arquivo de texto aqui .
PolyGeo
4

Basta adicionar isso caso seja útil para alguém ...

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

A ferramenta Write Features to Text File pode ser encontrada aqui .

Há uma idéia relacionada ao ArcGIS aqui que atraiu, na minha opinião, desconcertantemente poucos votos.

PolyGeo
fonte