Nếu tôi có đa giác trong Postgis, làm cách nào tôi có thể tìm các điểm ngẫu nhiên trong đa giác này?Điểm ngẫu nhiên Postgis bên trong một đa giác
5
A
Trả lời
5
Liên kết được trích dẫn bởi @Giống như không có mã, nhưng các đầu mối tốt từ các bản đồ "tỷ lệ chấm mật" của Dr.JTS: "... Điều này liên quan đến việc tạo một tập hợp N điểm ngẫu nhiên nằm trong đa giác nhất định ". Một hàm làm điều này: đầu vào là đa giác, đầu ra các điểm ngẫu nhiên.
Các liên kết này có cùng chức năng SQL/PostGIS RandomPoint(Geometry)
: sorokine 2011 và osgeo.org/postgis/wiki. Liên kết thứ hai (wiki) hoàn chỉnh hơn, giải thích và hiển thị các ví dụ, và một hàm RandomPointsInPolygon(geometry,integer)
đó là câu trả lời cho vấn đề.
Mở rộng solion nhập "mật độ điểm cho mỗi khu vực", hay khoảng cách trung bình giữa các điểm:
CREATE OR REPLACE FUNCTION RandomPointsInPolygon(
geom geometry, -- the polygon
avg_dist float DEFAULT 20.0, -- average of 20 units between points
min_pts integer DEFAULT 1, -- min. of points
max_pts integer DEFAULT 1000 -- max. of points
) RETURNS SETOF geometry AS
$$
SELECT CASE WHEN npts=1 THEN ST_Centroid($1)
ELSE RandomPointsInPolygon($1,npts)
END
FROM (
SELECT CASE WHEN d<$3 THEN $3 WHEN d>$4 THEN $4 ELSE d END AS npts
FROM (SELECT (st_area($1)/(pi()*($2/2.0)^2))::integer AS d) AS t
) AS t2;
$$ LANGUAGE SQL;
câu hỏi này có thể được di chuyển đến http://gis.stackexchange.com/ Làm thế nào để di chuyển? –