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?

Anubiz
fonte
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')
Joseph
fonte
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