Các vectơ Skeletonize trong QGIS / Python


8

Tôi đang cố gắng tìm một công cụ để tạo bộ xương của một tập dữ liệu vectơ lớn bằng cách sử dụng QGIS và gói của nó. Nó phải được gọi trực tiếp theo chương trình thông qua Python hoặc dòng lệnh (QGIS, GRASS, OGR, v.v ... đều ổn).

Mục tiêu là một đa giác mỏng lớn với các lỗ đại diện cho các khu vực đường phố và tôi cần có được một xấp xỉ mạng lưới đường thông qua quá trình khung xương.

Những gì tôi tìm thấy cho đến nay:

  • GRASS 7.0 có v.skeletonđủ tốt nhưng dường như không được tích hợp với QGIS trong tương lai gần.
  • CGAL có thuật toán skeletonize, tất nhiên, nhưng hỗ trợ Python rất kém.
  • pySkeleton không làm việc cho tôi và tôi có lẽ không có thời gian để cứu vãn mã.

Các lựa chọn thay thế khác (openJump skeletonizer, plugin ArcGIS cũ này ...) không thể dễ dàng cắm vào QGIS / Python.

Bất cứ một đề nghị nào khác?


4
GRASS 7.0 "có thể gọi trực tiếp theo chương trình thông qua Python hoặc dòng lệnh", vậy tại sao giải pháp của bạn cũng phải được ràng buộc chặt chẽ với QGIS? Ngoài ra, còn PostGIS thì sao? Dữ liệu của bạn được lưu trữ như thế nào?
alphabetasoup

2
Tôi muốn đăng giải pháp dưới dạng plugin QGIS có thể sử dụng trực tiếp - do đó tôi muốn gắn bó với phiên bản GRASS được đóng gói bởi QGIS.
Jan Šimbera

Câu trả lời:


6

Tài liệu này "Đa dạng hóa bộ xương sử dụng PostGIS" mô tả một quy trình sử dụng các công cụ từ PostGISGRASS , cả hai đều thể gọi được. Nó đề cập đến việc sử dụng PostGIS để tạo bộ xương của các vectơ và làm sạch nó bằng cách sử dụng lại PostGIS hoặc GRASS.

Có các công cụ hiện có từ Hộp công cụ xử lý , hy vọng đơn giản hóa mọi thứ khi gọi từ Python / dòng lệnh, chẳng hạn như:

Hi vọng điêu nay co ich!


Cảm ơn! Tuy nhiên, tôi phải giả sử rằng không có PostGIS nào được cài đặt ...
Jan Šimbera

@ JanŠimbera - Chào mừng bạn và chúc may mắn! Nghe có vẻ như là một vấn đề rất thú vị mà bạn có :)
Joseph

4

Một tùy chọn có phần tròn trịa có thể là sử dụng mô đun khung xương lưới của SAGA ( http://www.saga-gis.org/saga_module_doc/2.1.3/imagery_seributionation_1.html ), thông qua QGIS hoặc sử dụng saga_cmdtiện ích dòng lệnh . Trước tiên, bạn phải chuyển đổi đa giác của mình sang raster SAGA.

Mặt khác, như đã nêu bởi @ Alpha-beta-soup, bạn có thể sử dụng v.skeletontừ GRASS trên dòng lệnh.

Để sử dụng công cụ dòng commnand từ bên trong Python, hãy sử dụng subprocessmô-đun để truyền chuỗi lệnh cho hệ thống.


Cám ơn vì sự gợi ý. Tôi không muốn chuyển đổi sang raster vì phạm vi lớn và tôi cần kết quả với độ phân giải tốt; Tôi đang nghĩ về điều đó như là một lựa chọn cuối cùng.
Jan Šimbera
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.