Viết lớp vector vào tệp CSV bằng hình học bằng PyQGIS?


11

Tôi sử dụng Python thử ghi tập tin lớp vector vào tập tin csv với mã này:

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

Nó có thể xuất sang xyz.csv nhưng chỉ các thuộc tính hiển thị trong csv, không phải cột hình học.

Làm cách nào tôi có thể xuất cả dữ liệu thuộc tính và không gian vào tệp csv?


1
Đây là cùng một câu hỏi và giải pháp [link] [1]. [1]: gis.stackexchange.com/questions/43129/ trộm
mete7

Tôi xin lỗi vì làm cho câu hỏi không rõ ràng. công việc của tôi sử dụng python với lớp vector ghi pyqgis vào tập tin csv. Tôi muốn tập tin csv có hình học nhưng không được. vẫn cần câu trả lời
Anubiz

Phụ thuộc vào loại lớp vector bạn muốn xuất. Đối với lớp điểm, bạn chỉ có thể thêm các giá trị lat, long dưới dạng cột của bảng thuộc tính. Đối với tất cả những người khác, bạn cần WKT
Curlew

Cảm ơn bạn Curlew, tôi làm việc với lớp điểm và đa giác. Đối với lớp điểm bạn có nghĩa là thêm cột lat, lon trong bảng thuộc tính? làm thế nào về đa giác?
Anubiz

3
Đây thực sự là một bản sao? Câu hỏi này ở đây đặc biệt nhắm vào python, không được bao phủ bởi câu trả lời được liên kết.
Matthias Kuhn

Câu trả lời:


8

Một câu trả lời tương tự đã được cung cấp từ bài đăng này:

Lưu dưới dạng .csv với tọa độ trong cả QGIS 2.2 và PyqGIS

Chỉ cần thêm layerOptions ='GEOMETRY=AS_XYZvào cuối:

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

Xin chào, tôi đang gặp phải một vấn đề trong vấn đề này, Nếu tôi gõ cái này trong bảng điều khiển thì nó không lưu dữ liệu Không gian mà chỉ lưu các thuộc tính. Nhưng nếu tôi lưu nó bằng tay thì nó hoạt động. Tôi đang sử dụng QGIS 2.14.12.
Nắng Naik

2
@SunnyNaik - layerOptionsTham số hiện yêu cầu một danh sách các giá trị chuỗi trong khi trước khi một giá trị duy nhất là đủ (như được mô tả trong bài đăng này ). Vì vậy, dòng cuối cùng của bạn sẽ trông như sau:QgsVectorFileWriter.writeAsVectorFormat(layer, r'c:\temp\xyz.csv', "utf-8", None, "CSV", layerOptions=['GEOMETRY=AS_XYZ'])
Joseph
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.