Postgis'te çokgenim varsa bu çokgenin içinde rasgele noktaları nasıl bulabilirim?Postgis çokgenin içinde rastgele nokta
5
A
cevap
5
@Mike tarafından atıf yapılan linkte bir kod yoktur, ancak iyi ipuçları Dr.JTS: "dot-density" maps ... "Aslında bu, içinde bir rastgele yerleştirilmiş N seti oluşturmayı içerir. çokgen verilen ". Bir fonksiyon bunu yapar: giriş poligon, çıkış rasgele puantır.
Bu bağlantılar SQL/PostGIS işlevi RandomPoint(Geometry)
: sorokine 2011 ve osgeo.org/postgis/wiki ile aynıdır. İkinci bağlantı (wiki) daha eksiksiz, açıklayıcı ve gösterme örnekleri ve sorunun cevabı olan bir RandomPointsInPolygon(geometry,integer)
işlevidir. Bu soru Nasıl göçe http://gis.stackexchange.com/ geçirilebilir
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;
:
noktaları arasındaki "alan başına noktalarının yoğunluğu" girişine solion veya ortalama mesafe uzatma? –