Làm cách nào để bảo tồn cấu trúc liên kết trong khi chỉnh sửa đa giác trong OpenLayers?


9

Tôi đang đối mặt với vấn đề này: Tôi có một bản đồ chloropleth dựa trên một tập hợp đa giác với một số dữ liệu. Sử dụng WFS-T (postgis, geoserver, openlayers) tôi có thể chỉnh sửa hình dạng của đa giác. Điều này hoạt động tốt.

Đa giác của tôi trông giống như biên giới nhà nước. Họ đã chia sẻ các đỉnh biên giới. Khi tôi chỉnh sửa hình dạng của một số đa giác (ví dụ: di chuyển các đỉnh bằng cách sử dụng notifyFeature), tôi cần ảnh hưởng đến hình học của bất kỳ đa giác lân cận nào. Không nên có lỗ hoặc chồng chéo.

Có khả năng làm việc đó không?

Cảm ơn


Có lẽ;) Tôi không tin OpenLayers hỗ trợ mọi thứ như thế này, nhưng nó có thể thực hiện được. Bạn có thể đại diện cho mỗi đường viền bằng một linestring và sửa đổi các linestrings. Sau đó, khi linestring được cập nhật, bạn cập nhật hai (hoặc nhiều) đa giác chạm vào đường viền, loại bỏ đường viền cũ và chèn đường viền mới.
canisrufus

Câu trả lời:



2

Chỉ có manh mối, đừng nghĩ OpenLayers có thể làm điều đó. Hầu hết các máy tính để bàn nguồn mở không thể thực hiện được một đỉnh của các đỉnh khác nhau, vì vậy việc thực hiện trực tuyến này dường như là một giấc mơ đối với tôi.

Đối với hình học đơn giản, ảnh chụp nhanh có thể đủ http://openlayers.org/dev/examples/snicking.html Không đủ chín chắn, tôi hy vọng https://github.com/bjornharrtell/jsts sẽ là một cách để thực hiện giao lộ (và giải quyết vấn đề của bạn một cách không chắc chắn) về phía khách hàng trước khi gửi lại nội dung. Hiện tại, tôi sẽ suy nghĩ thêm về việc xử lý sau khi vẽ bằng các kích hoạt PostGIS cho việc này và gửi lại các bản vẽ đã sửa. Việc triển khai cấu trúc liên kết trong PostGIS có thể giúp http://www.postgresql-simes.org/2/sandro_santilli_-_topology_with_postgis_2.0 Luôn ở phía máy chủ, xem các khả năng của WPS có thể http://community.esdi-humboldt.eu/document/show /4

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.