Запис векторного шару у файл 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.