ST_GENERATEPOINTS
📄字数 1.1K
👁️阅读量 加载中...
功能描述
在指定区域内生成一定数量伪随机点的多点对象。
语法格式
sql
GEOMETRY ST_GENERATEPOINTS(GEOMETRY geom, INTEGER npoints);
GEOMETRY ST_GENERATEPOINTS(GEOMETRY geom, INTEGER npoints, INTEGER seed);参数说明
- geom:目标 GEOMETRY 对象。
- npoints: 伪随机点数量。
- seed:随机种子值,用于重新生成一个确定性的点序列,必须大于零。可选,默认为 0。
函数返回类型
GEOMETRY 类型
使用说明
- 返回仅包含 M 值大于或等于最小值且小于或等于最大值的顶点的几何图形。
- 如果省略最大值参数,则仅考虑最小值。
- 如果生成的几何图形的顶点太少,则将返回空几何图形。
- 该函数主要与 ST_SETEFFECTIVEAREA 结合使用。 ST_EFFECTIVEAREA 用其 M 值设置顶点的有效区域。
- 该函数无需任何计算,过滤,即可获得几何的简化版本。
- 当没有足够的点满足条件时, ST_SIMPLIFYVW 返回具有足够点的几何图形,而 ST_FILTERBYM 返回空几何图形。
- 返回的几何图形可能无效。
- 该函数返回所有维度,包括 Z 和 M 值。
示例
使用随机种子值 1996,在原始多边形上生成了一个包含 12 个点的多点对象:
sql
SQL> SELECT ST_AsText(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;
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| EXPR1 |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| MULTIPOINT((71.14981192524266 75.20637645038869),(89.5596321078803 84.09687254961308),(99.93863864558948 109.93899627812891),(114.81846354881739 110.30786412589646),(51.12508568243695 57.628458411627896),(80.4613757316102 79.06043538830104),(66.69719046413023 59.774229927365454),(73.5742517718167 74.87355222192218),(92.52534901008693 88.86894680273741),(105.3369282808336 110.66675534782661),(48.153450979405704 49.63407693379398),(59.63627131147453 64.89835919642846)) |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
(1 row)