Gravando camada vetorial em arquivo CSV com geometria usando PyQGIS?


11

Eu uso o Python tentar escrever o arquivo de camada de vetor no arquivo csv com este código:

QgsVectorFileWriter.writeAsVectorFormat(mylayer, r'c:\temp\xyz.csv', "utf-8", None, "CSV")

Ele pode exportar para xyz.csv, mas apenas os atributos são exibidos no csv, não na coluna de geometria.

Como posso exportar dados de atributos e espaciais para o arquivo csv?


1
Aqui está a mesma pergunta e a solução [link] [1]. [1]: gis.stackexchange.com/questions/43129/…
— mete7

Sinto muito por fazer a pergunta não clara. meu trabalho usa python com pyqgis write layer vector para arquivo csv. Quero arquivo csv tem geometria, mas não. ainda resposta necessidade
— Anubiz

Depende do tipo de camada vetorial que você deseja exportar. Para a camada de pontos, basta adicionar os valores longos e latinos como colunas da tabela de atributos. Para todos os outros que você precisa WKT
— maçarico

Obrigado Curlew, eu trabalho com camada de ponto e polígono. para camada de ponto, você quer dizer adicionar coluna lat, lon na tabela de atributos? e quanto ao polígono?
— Anubiz 27/05

3
Isso é realmente uma duplicata? Esta pergunta aqui é direcionada particularmente ao python, que não é coberto pela resposta vinculada.
— Matthias Kuhn

Respostas:


8

Uma resposta semelhante foi fornecida neste post:

Salve como .csv com coordenadas no QGIS 2.2 e no PyqGIS

Basta adicionar layerOptions ='GEOMETRY=AS_XYZno final:

layer = QgsVectorLayer("path/to/shapefile", "name", "ogr")
QgsVectorFileWriter.writeAsVectorFormat(layer, r'c:\temp\xyz.csv', "utf-8", None, "CSV", layerOptions='GEOMETRY=AS_XYZ')

Oi, Estou enfrentando um problema nisso, se eu digitar isso no console, ele não salvará os dados espaciais, mas apenas os atributos. Mas se eu salvá-lo manualmente, ele funciona. Estou usando o QGIS 2.14.12.
— Sunny Naik

2
@SunnyNaik - O layerOptionsparâmetro agora requer uma lista de valores de string, enquanto antes um único valor era suficiente (conforme descrito neste post ). Portanto, sua última linha teria a seguinte aparência:QgsVectorFileWriter.writeAsVectorFormat(layer, r'c:\temp\xyz.csv', "utf-8", None, "CSV", layerOptions=['GEOMETRY=AS_XYZ'])
— Joseph
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.