Trích xuất đường trung tâm của một đa giác phức tạp trong PostGIS / Python


8

Bạn có biết làm thế nào để trích xuất đường trung tâm của đa giác sau (Hình 1) bằng các hàm PostGIS hoặc các mô-đun Python không? Tôi đã thử chức năng Voronoi nhưng điều đó không hữu ích cho loại hình này. Tôi muốn một cái gì đó như blackline Fig2.

Hình 1: Hình dạng đa giác Hình 2: Đường tâm


2
Bạn có thể muốn xem câu trả lời này: gis.stackexchange.com/questions/29863/NH Tôi biết nó sử dụng ArcGIS thay thế, nhưng cách tiếp cận có thể hữu ích.
WhiteboxDev


@Jakub Tôi đang cố gắng định cấu hình SFCGAL (cần thiết cho chức năng Skeleton) với db PostGIS hiện có của tôi. Mặc dù tôi đã cài đặt libSFCGAL.sotệp trong /usr/local/libthư mục nhưng không biết cách mang ST_StriaghtSkeleton()db? Bất kỳ ý tưởng?
Zia

PostGIS cần được biên dịch với sự hỗ trợ của SFCGAL, nhưng đó là một câu hỏi khác nhau và không phải là điều mà tôi quá quen thuộc.
Jakub Kania

@Jakub Cảm ơn. Tôi đã bằng cách nào đó giải quyết cấu hình SFCGAL này bởi bản thân mình ở đây
Zia

Câu trả lời:


4

Đây có thể là một công cụ sai cho bạn, nhưng bạn có thể làm điều đó một cách đơn giản với plugin OpenJUMP và Skeletonizer. Có thể tải xuống plugin từ http://sourceforge.net/projects/jump-pilot/files/OpenJUMP_plugins/More%20Plugins/JUMP%20Skeletonizer%20Plugin/

Tệp zip chứa một hướng dẫn tốt. Plugin có nghĩa là cho các luồng và các vùng nước nhưng đa giác của bạn bắt chước một luồng với tôi.

Đây là đa giác của bạn khi tôi số hóa nó. Lưu ý các đỉnh trong các đường trung tâm của đầu vào / đầu ra.

nhập mô tả hình ảnh ở đây

Điểm vào số hóa trên một lớp riêng biệt. Các điểm phải chụp theo các đỉnh trên ranh giới đa giác.

nhập mô tả hình ảnh ở đây

Sử dụng các công cụ Skeletonizer và điền vào các trường

nhập mô tả hình ảnh ở đây

Nhận kết quả

nhập mô tả hình ảnh ở đây


Thật không may, tập tin jar không chứa hướng dẫn sử dụng. Bạn có thể vui lòng hướng dẫn tôi cách thêm plugin này vào OpenJump-GUI không?
Zia

Nhìn vào bên trong zip , trong skeletonizer-1.0 \ doc \ bạn sẽ tìm thấy tệp "SkeletonizerUserGuide.doc". Quá trình cài đặt được thực hiện bằng cách thả các tệp jar từ skeletonizer-1.0 \ lib \ vào thư mục lib \ ext trong OpenJUMP.
dùng49584

Tuy nhiên, có vẻ như hầu hết các lọ hoặc phiên bản mới hơn đã được đưa vào OpenJUMP trong \ lib hoặc trong \ lib \ ext. Có lẽ tốt nhất là chỉ sao chép những thứ dường như bị thiếu. Khởi động lại là cần thiết sau khi thêm lọ mới.
dùng49584

Tôi tìm thấy cái lọ này ở đây . Nhưng tôi gặp lỗi này java.lang.Exception: Could not determine shapefile type - data is either all GeometryCollections or empty (Illegal State Exception)khi chạy plugin Skeletonizer này
Zia

3

Nếu đa giác của bạn là raster, hãy số hóa nó.

Khi đa giác của bạn thực sự là đa giác :), một giải pháp đầu tiên nằm ở đó, như @WhiteboxDev nói, đó là bộ xương thẳng, nhưng có một vấn đề là, ngoài đường trung tâm bạn muốn, nó cũng trả về rất nhiều phân đoạn tỏa ra từ đường đó đường viền của đa giác của bạn. Nhưng nếu bạn có PostGIS 2.2+, bạn có thể sử dụng ST_ApproximateMedialAxis()thay thế, đó là những gì bạn muốn.

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.