Đa giác Voronoi ràng buộc QGIS


9

Tôi có một shapefile của đa giác, là biên giới hiệu quả của một đơn vị địa lý (xem xét như một ví dụ trong 50 tiểu bang của chúng tôi, mỗi tiểu bang có một số điểm.).

Tôi muốn tạo đa giác Voronoi từ các điểm , với lời cảnh báo rằng biên giới trạng thái hạn chế hiệu quả các đa giác Voronoi được tạo từ các điểm trong trạng thái đó.

Cách sử dụng nhiều lao động để làm điều này sẽ là tạo 50 shapefile riêng lẻ cho mỗi trạng thái, tạo đa giác Voronoi trong mỗi trạng thái, sau đó kết hợp chúng lại với nhau theo cách thủ công.

Có cách nào dễ dàng hơn để làm điều này, lý tưởng nhất là trong QGIS (đang sử dụng 2.18 trên Mac) không?


1
Tại sao không tạo đa giác Voronoi cho toàn bộ lớp điểm, sau đó giao kết quả với lớp ranh giới địa lý?
csk

Chỉ cần làm rõ một nhà nước có thể có nhiều điểm?
đom đóm-cam

Câu trả lời:


3

Đó là một quá trình gồm nhiều bước, vì vậy bạn nên tạo một mô hình hoặc tập lệnh tùy chỉnh. Để tránh các đa giác thuộc về các điểm đa giác lân cận, bạn sẽ cần phải lặp qua lớp trạng thái của mình. Làm việc với các đa giác trạng thái và một tập hợp các điểm ngẫu nhiên, tôi sẽ thực hiện quy trình này để bạn có thể hiểu những gì đang diễn ra bên trong mô hình của chúng tôi.

điểm nhà nước

Bên trong mô hình

  1. Trích xuất theo vị trí
    • Trích xuất các tính năng từ: points_layer
    • Trường hợp các tính năng: intersect
    • Bằng cách so sánh với các tính năng từ: polygons_layer

trích xuất trạng thái của điểm

  1. Đa giác Voronoi
    • Lớp đầu vào: 'Extracted (location)' from algorithm 'Extract by location'
    • Vùng đệm: 500(Có vẻ như quá mức, nhưng chúng tôi muốn đảm bảo rằng đa giác Voronoi của bạn hoàn toàn bao phủ trạng thái mà chúng đang ở. Vì chúng tôi sẽ cắt lớp này trong bước tiếp theo, chúng tôi không liên quan đến việc chúng tôi tạo ra nó như thế nào.)
    • Thuật toán cha mẹ: Extract by location

voronoi của nhà nước

  1. Kẹp
    • Lớp đầu vào: 'Voronoi polygons' from algorithm 'Voronoi polygons'
    • Lớp phủ: polygons_layer
    • Được cắt bớt: output
    • Các thuật toán cha mẹ: Extract by locationVoronoi polygons

cắt xén

Như bạn có thể thấy, chúng ta có các đa giác Voronoi bị ràng buộc trạng thái trong đó các điểm từ các quốc gia lân cận không ảnh hưởng đến sự sắp xếp của chúng.

Đây là hình ảnh của mô hình:

mô hình xử lý

Hình ảnh không truyền tải điều này, nhưng lưu ý rằng đầu vào lớp đa giác của mô hình là một Vector Featuresđối tượng, không phải là a Vector Layer.

Chạy mô hình

Khi bạn chạy mô hình của mình, điều quan trọng là bạn nhấp vào biểu tượng để lặp qua các tính năng của lớp States.

tùy chọn lặp

Khi bạn đã chạy mô hình, bạn chỉ cần chạy các lớp vectơ hợp nhất trên các đầu ra để có được đầu ra một lớp, nếu điều đó quan trọng với bạn. Thật không may, tôi không biết một cách dễ dàng để hợp nhất nhiều đầu ra mô hình trong chính mô hình đó (xin vui lòng, ai đó sẽ sửa cho tôi nếu có gì đó).

Nếu bạn cảm thấy thoải mái với Python, bạn có thể dễ dàng sửa đổi tập lệnh đã xuất của mô hình này để xử lý bước bổ sung đó. Tuy nhiên, vì bạn không đề cập đến các giải pháp dựa trên mã trong câu hỏi của mình, tôi sẽ loại bỏ nó.


1
Làm việc hoàn hảo! Tôi ngạc nhiên, tôi đã đập đầu vài giờ về cùng một vấn đề và tôi vừa sao chép mô hình của bạn và nhận được kết quả từ đầu tiên. Tôi nợ bạn một chầu bia.
sys49152

1

Tương tự như câu trả lời mà @csk đưa ra cho bạn, bạn có thể thử hai phương án này:

1- Bao gồm các nút của đa giác trạng thái vào công cụ Voronoi.

  • Các nút từ lớp States (Sử dụng các nút Extract).
  • Hợp nhất điểm và nút.

nhập mô tả hình ảnh ở đây - Công cụ Voronoi với Điểm và Nút.

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

  • Bước cuối cùng là cắt clip Voronoi của bạn với lớp States (nếu bạn cần).

    2- Sử dụng Voronoi trực tiếp trên lớp Point bằng cách sử dụng bộ đệm để "mở rộng" chúng thành phần mở rộng Trạng thái đầy đủ.

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

  • Clip với lớp Nhà nước.

Như bạn thấy bạn sẽ nhận được kết quả khác nhau. Nó phụ thuộc vào những gì bạn đang tìm kiếm.

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.