Tạo các điểm phân bố đồng đều trong một ranh giới không đều


8

Tôi cần tạo ra một loạt các điểm phân bố đồng đều trong một loạt các đa giác bị cắt lẻ (trước đây là hình vuông, nhưng bây giờ là hình vuông có lỗ bánh rán).

Cách tôi đã giải quyết vấn đề này cho đến nay là tạo một fishnet của đa giác và sau đó sử dụng tâm của mỗi đơn vị mà fishnet tạo ra.

Tuy nhiên, vấn đề đã trở nên phức tạp hơn và bây giờ tôi có đa giác phức tạp hơn. Các trọng tâm của các đơn vị fishnet không còn đủ tốt.

Tôi đã cố gắng chuyển đổi các đa giác thành một raster và sau đó sử dụng công cụ Split cho các raster và tạo một đầu ra với một số đơn vị diện tích bằng nhau được chỉ định, nhưng điều đó sẽ không hoạt động, vì dữ liệu vectơ đầu vào của tôi không cần thiết vaues cho quá trình raster đó để chạy đúng.

Tôi đang làm việc với Arc 9.3 (nhưng cũng có quyền truy cập vào một số gói phần mềm khác)


3
"Phân bố đồng đều" có thể có nghĩa là một số thứ, bao gồm cách đều nhau trên lưới được xác định trước, cách đều nhau trên lưới có nguồn gốc ngẫu nhiên (và có thể là hướng ngẫu nhiên), một điểm nằm ngẫu nhiên trong mỗi ô lưới, ngẫu nhiên đồng nhất (không cần lưới) và thậm chí ngẫu nhiên với xu hướng tránh nhau. Bạn có thể nói cụ thể hơn về cái mà bạn cần không?
whuber

Tương tự với câu hỏi này? gis.stackexchange.com/questions/4828/ Mạnh
Kirk Kuykendall

@whuber: Chà ... thành thật mà nói, tôi không chắc lắm. Lý tưởng nhất là các điểm sẽ được trải ra sao cho khoảng cách giữa các điểm được cân bằng càng nhiều càng tốt. Họ không cần phải ở trong một lưới hoàn hảo. Liệu có phải là ngẫu nhiên thống nhất?
Kapjaki

Đây là những điều tinh tế, nhưng không, cân bằng khoảng cách phá hủy phần lớn sự ngẫu nhiên. Nó đảm bảo rằng kiến ​​thức về một địa điểm làm cho kiến ​​thức về các địa điểm gần đó dễ dự đoán hơn nhiều; đặc biệt, vùng lân cận (nhỏ) ngay lập tức của bất kỳ điểm nào sẽ không có điểm khác. Điều đó không thống nhất chút nào! Một nơi tốt để bắt đầu khi nghĩ về những điều như vậy là suy nghĩ về cách các điểm sẽ được sử dụng. Nếu họ thiết kế mọi thứ, như trồng cây, thì cách xa nhau là tuyệt vời. Tuy nhiên, nếu bạn định thực hiện bất kỳ phân tích thống kê nào với họ, thì hãy coi chừng!
whuber

@Whuber: thực sự, những điều phức tạp mà bạn nói đến là mới đối với tôi. Mục đích của việc này là để hiển thị các vị trí tiềm năng cho các giếng dầu trong một khu vực nhất định. Tính ngẫu nhiên là không bắt buộc, chỉ có khoảng cách giữa các điểm được tối đa hóa và phân phối ít nhất là một phần đồng đều trong đa giác giới hạn.
Kapjaki

Câu trả lời:


3

Trong QGIS nếu bạn cài đặt gói fTools , có một tùy chọn để tạo 'Điểm thông thường' (Công cụ -> Công cụ nghiên cứu -> Điểm thường xuyên)

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


Điều này sẽ tạo ra một mạng lưới các điểm, có lẽ? Và không bị hạn chế nằm trong một đa giác hoặc tập hợp đa giác? (Đó không phải là một lời chỉ trích: sau này người ta có thể xóa tất cả các điểm nằm bên ngoài đa giác.)
whuber

2
@whuber: Tất cả các điểm sẽ nằm trong đa giác được chỉ định bởi "Lớp ranh giới đầu vào"
underdark

2

Bạn có thể làm điều đó trong PostGIS với một truy vấn giống như thế này:

SELECT grid.the_geom FROM 
(select st_setsrid(st_point(x, y), polygon_srid) AS the_geom from 
(select generate_series(minX, maxX, grid_size) AS x) AS a,
(select generate_series(minY, maxY, grid_size) AS y) AS b) AS grid,
polygon_table
WHERE ST_Within(grid.the_geom, polygon_table.the_geom);

Bạn có thể dùng thử tại postgisonline với ví dụ này:

SELECT grid.the_geom FROM 
(select st_setsrid(st_point(x, y), 3021) AS the_geom from 
(select generate_series(130000, 142000, 500) AS x) AS a,
(select generate_series(260000, 270000, 500) AS y) AS b) AS grid,
lakes
WHERE ST_Within(grid.the_geom, lakes.the_geom);

Đặt truy vấn ở trên trong vùng văn bản ở trên cùng và nhấn nút Map1. Bạn cũng có thể chọn "hồ" từ danh sách thả xuống nền để xem đa giác được sử dụng để điền vào các điểm.

/ Nicklas


Bài viết của Nicklas dường như đang đi đúng hướng. Có cách nào để xác định có bao nhiêu điểm bạn muốn phân phối trong hồ thoguh không? Tôi đã tìm kiếm một phương pháp như thế này trong một thời gian. Cảm ơn, Ray

Có cách nào đó để tạo 'khối' từ đa giác dựa trên việc chia tổng diện tích bằng nhau không? Tức là Nếu muốn có 9 điểm, hãy chia đa giác thành 9 'khối' có diện tích bằng nhau, và sau đó lấy tâm từ những điểm đó?
Kapjaki

Vì đa giác có thể có bất kỳ hình dạng kỳ lạ nào, tôi đoán rằng nó sẽ cần một số thuật toán thử và sai để đạt được điều đó.
Nicklas Avén

Điều này dường như làm việc tốt. Thật không may, tôi không hiểu chính xác làm thế nào tôi có thể sử dụng nó. Làm cách nào để có được dữ liệu của riêng tôi vào kịch bản?
Kapjaki

@Kapjaki, tải đa giác của bạn vào bảng postgis và trong ví dụ đầu tiên của tôi thay đổi "olygon_table" thành bất cứ tên nào là bảng đa giác của bạn. thay đổi trong Gener_series để phù hợp với phạm vi đa giác của bạn và thay đổi từ 500 thành bất kỳ kích thước lưới nào bạn muốn. truy vấn có thể được viết lại để tìm phạm vi trực tiếp. nhưng không phải từ điện thoại của tôi trong xe hơi :)
Nicklas Avén

0

Bạn có thể sử dụng thuật toán Lloyds:

https://en.m.wikipedia.org/wiki/Lloyd%27s_alacticm

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.