Запис векторного шару у файл CSV з геометрією за допомогою PyQGIS?


12

Я використовую Python, намагаюся записати файл векторного шару в файл CSV з цим кодом:

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

Він може експортувати до xyz.csv, але в csv відображаються лише атрибути, а не стовпець геометрії.

Як я можу експортувати як атрибутні, так і просторові дані у файл CSV?


1
Ось те саме питання і рішення [посилання] [1]. [1]: gis.stackexchange.com/questions/43129/…
mete7

Вибачте, що питання не зрозуміло. в моїй роботі використовують python з pyqgis write vector шар у файл CSV. Я хочу, щоб файл CSV мав геометрію, але це не так. ще потрібна відповідь
Анубіз

Залежить від того, який тип векторного шару потрібно експортувати. Для точкового шару ви можете просто додати lat, довгі значення як стовпці таблиці атрибутів. Для всіх інших вам потрібен WKT
Curlew

Дякую, Curlew, я працюю з точковим і багатокутним шаром. для точкового шару ви маєте на увазі додати lat, lon стовпець у таблиці атрибутів? як щодо багатокутника?
Анубіз

3
Це справді дублікат? Це питання, зокрема, спрямоване на python, на який не поширюється відповідна відповідь.
Маттіас Кун

Відповіді:


9

Аналогічна відповідь була надана з цього повідомлення:

Збережіть як .csv з координатами в QGIS 2.2 і PyqGIS

Просто додайте layerOptions ='GEOMETRY=AS_XYZв кінці:

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

Привіт, я зіткнувся з проблемою в цьому. Якщо я введіть це в консолі, він не зберігає Просторові дані, а лише атрибути. Але якщо я збережу його вручну, він працює. Я використовую QGIS 2.14.12.
Сонячний Найк

2
@SunnyNaik - layerOptionsПараметр вимагає переліку рядкових значень, тоді як до цього було достатньо одного значення (як описано в цій публікації ). Отже, ваш останній рядок виглядав би так:QgsVectorFileWriter.writeAsVectorFormat(layer, r'c:\temp\xyz.csv', "utf-8", None, "CSV", layerOptions=['GEOMETRY=AS_XYZ'])
Джозеф
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.