Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


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 类型

使用说明

  1. 返回仅包含 M 值大于或等于最小值且小于或等于最大值的顶点的几何图形。
  2. 如果省略最大值参数,则仅考虑最小值。
  3. 如果生成的几何图形的顶点太少,则将返回空几何图形。
  4. 该函数主要与 ST_SETEFFECTIVEAREA 结合使用。 ST_EFFECTIVEAREA 用其 M 值设置顶点的有效区域。
  5. 该函数无需任何计算,过滤,即可获得几何的简化版本。
  6. 当没有足够的点满足条件时, ST_SIMPLIFYVW 返回具有足够点的几何图形,而 ST_FILTERBYM 返回空几何图形。
  7. 返回的几何图形可能无效。
  8. 该函数返回所有维度,包括 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)