Làm cách nào để chuyển đổi một shapefile thành CSV với các nút và liên kết?


12

Có cách nào để chuyển đổi một shapefile tuyến tính thành một tệp CSV có định dạng sau:

Node_1, Node_2, attribute_1, ...., attribute_x
     1       2       "hello"        567845.334

Tôi đã xem xét GDAL / OGR2OGRPostGIS và tôi không nghĩ sẽ chuyển đổi dữ liệu sang định dạng tôi muốn.

Tôi không phiền khi viết một kịch bản để thực hiện nó, nếu tôi được hướng dẫn đúng hướng.


Trong ví dụ của bạn, Node_1, Node_2 là tọa độ thực của tính năng của bạn, phải không? Ý tôi là, từ ví dụ của bạn, tôi thực sự sẽ cho rằng bạn muốn xuất cấu trúc liên kết từ shapefile; như trong Node_1 là FNODE của bạn, Node_2 là TNODE của bạn và hình học chỉ được lưu trữ một lần. Nếu vậy, câu trả lời rất khác nhau và bạn sẽ cần một cái gì đó ngoài OGR để xây dựng cấu trúc liên kết.
Ragi Yaser Burhum

@rburhum tôi muốn thực hiện bảng của mình theo thuật toán mạng cổ điển. Định dạng thường là, nút 1 đến nút 2 với chi phí X
dassouki

Câu trả lời:


8

Các chương trình tiện ích có trong OGR (OGR2OGR) sẽ không làm điều này trực tiếp, nhưng sẽ rất dễ sử dụng OGR để thực hiện điều này.

Bạn sẽ cần phải viết một tập lệnh / chương trình bằng bất kỳ ngôn ngữ nào được OGR hỗ trợ. Bạn chỉ cần mở nó ra shapefile, đọc từng tính năng và viết ra các điểm + dữ liệu theo định dạng CSV.

C ++ mẫu trên Wiki thực sự hiển thị gần như mọi lệnh gọi API OGR cần thiết cho việc này.


Cảm ơn các phản ứng nhanh chóng. Tôi đang xem gdal.org/ogr/ogr%5Fapitut.html ví dụ python đầu tiên, xuất ra từ tệp SHP sang CSV. Ví dụ được thực hiện cho một lớp điểm, có sự khác biệt đáng kể nào để chuyển đổi nó cho một lớp đường không? Định dạng của tên nút là gì? Nó sẽ là một con số? Tôi có thể liên kết nó với một lớp điểm khác có tất cả các tên nút trong đó không?
dassouki

Trong một dòng, các tính năng sẽ là ogr.wkbLine thay vì ogr.wkbPoint. Bạn có thể trả lại tên dưới dạng chuỗi bằng tính năng.GetFieldAsString (col). Không có cách nào để xử lý "liên kết" trực tiếp trong OGR, vì vậy bạn phải mở bảng dữ liệu khác và tự tìm kiếm hoặc sao chép tên trong GIS trước.
Reed Copsey

Điều đó có ý nghĩa; tôi sẽ dùng thử và cập nhật cho bạn về cách tôi thực hiện. Tôi đang làm tất cả điều này để tôi có thể thực hiện một số phân tích mạng trên một lớp dòng.
dassouki
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.