ST_GeneratePoints — Erzeugt einen Multipunkt aus zufälligen Punkten, die in einem Polygon oder MultiPolygon enthalten sind.
geometry ST_GeneratePoints(geometry g, integer npoints, integer seed = 0);
ST_GeneratePoints erzeugt einen Multipunkt, der aus einer bestimmten Anzahl von Pseudo-Zufallspunkten besteht, die innerhalb des Eingabebereichs liegen. Der optionale Wert seed wird verwendet, um eine deterministische Folge von Punkten zu erzeugen, und muss größer als Null sein.
Verfügbarkeit: 2.3.0
Erweiterung: mit 3.0.0 wurde das Argument "seed" hinzugefügt
Erzeugt einen Multipunkt, der aus 12 Punkten besteht, die über das ursprüngliche Polygon gelegt werden, unter Verwendung eines zufälligen Startwertes 1996
SELECT ST_GeneratePoints(geom, 12, 1996)
FROM (
SELECT ST_Buffer(ST_GeomFromText('LINESTRING(50 50,150 150,150 50)'),
10, 'endcap=round join=round') AS geom
) AS s;
Bei einer Tabelle mit Polygonen s sind 12 einzelne Punkte pro Polygon zu ermitteln. Die Ergebnisse sind bei jedem Durchlauf anders.
SELECT s.id, dp.path[1] AS pt_id, dp.geom
FROM s, ST_DumpPoints(ST_GeneratePoints(s.geom,12)) AS dp;
Generate dot-density points from a polygon table, using the absolute value of an attribute as the number of points and keeping the sign of the attribute for styling.
SELECT z.id,
CASE WHEN z.count_delta < 0 THEN -1 ELSE 1 END AS sign,
dp.path[1] AS pt_id,
dp.geom
FROM zones AS z
CROSS JOIN LATERAL ST_DumpPoints(
ST_GeneratePoints(z.geom, abs(z.count_delta)::integer, z.id + 1)
) AS dp
WHERE z.count_delta <> 0;