Công cụ Tạo điểm ngẫu nhiên có thể tạo một số điểm nhất định trong đa giác. Tôi tự hỏi, được đưa ra một hộp giới hạn, có cách nào để tôi có thể tạo các điểm ngẫu nhiên bên ngoài các đa giác đó không?
Công cụ Tạo điểm ngẫu nhiên có thể tạo một số điểm nhất định trong đa giác. Tôi tự hỏi, được đưa ra một hộp giới hạn, có cách nào để tôi có thể tạo các điểm ngẫu nhiên bên ngoài các đa giác đó không?
Câu trả lời:
Cá nhân tôi không thích thuật toán điểm ngẫu nhiên trong ArcGIS. Ngoài ra, sử dụng chức năng Môi trường mô hình hóa không gian địa lý (GME) genrandompnts
. Bạn sẽ có thể xác định các đa giác cụ thể trong đó các điểm ngẫu nhiên sẽ bị loại trừ (xem khu vực được tô sáng trong .jpg đính kèm). Tốt nhất của tất cả các phần mềm này là miễn phí.
GME cung cấp cho bạn một bộ công cụ phân tích và mô hình hóa, từ 'khối xây dựng nhỏ' mà bạn có thể sử dụng để xây dựng một quy trình công việc phức tạp, đến các chương trình phân tích hoàn toàn khép kín. Nó cũng sử dụng phần mềm nguồn mở R cực kỳ mạnh mẽ làm công cụ thống kê để điều khiển một số công cụ phân tích. Một trong nhiều điểm mạnh của R là nó là nguồn mở, hoàn toàn minh bạch và được ghi chép rõ ràng: các đặc điểm quan trọng đối với bất kỳ phần mềm phân tích khoa học nào.
Bạn sẽ phải tạo ra một đa giác bánh rán với lỗ bánh rán đại diện cho không gian phi điểm bên trong và một số phạm vi không gian đại diện cho khu vực giới hạn của khu vực đa giác.
Xin lỗi, tôi không thể cưỡng lại. Vì luôn luôn tốt để biết những gì đang diễn ra dưới mui xe với một cái gì đó như GME, đây là một giải pháp trong mã R thực tế.
require(sp)
require(rgeos)
# Create example polygon data
x <- readWKT("POLYGON ((0 0, 0 10, 10 10, 10 0, 0 0))")
y <- readWKT("POLYGON ((3 3, 7 3, 7 7, 3 7, 3 3))")
# Calculate difference in polygon geometries to create null polygon
d <- gDifference(x,y)
# Create random sample in non-null polygon
rs <- spsample(d, 20, type="random")
# Plot results
plot(d, col="red")
plot(rs,pch=19,col="black",add=TRUE)
Cách tiếp cận này có thể rất khác so với cách GME thực hiện điều này nhưng đang sử dụng các lớp không gian R sp gốc và một thư viện cấu trúc liên kết khá mới làm cho mã rất hiệu quả. Điều này cũng đưa ra một ví dụ có thể dễ dàng được bọc trong một vòng lặp for.