Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


ST_BUILDAREA

📄字数 2.8K
👁️阅读量 加载中...

功能描述

创建由几何体的线条形成的多边形几何体。

语法格式

sql
GEOMETRY ST_BUILDAREA(GEOMETRY geom);

参数说明

  • geom:目标 GEOMETRY 对象;

函数返回类型

GEOMETRY 类型

使用说明

  • 输入可以是 LINESTRING、MULTILINESTRING、POLYGON、MULTIPOLYGON 或 GEOMETRYCOLLECTION。
  • 结果是多边形或多多边形,具体取决于输入。
  • 如果输入线条未形成多边形,则返回 NULL。
  • 与 ST_MAKEPOLYGON 不同,此函数接受由多条线形成的环,并且可以形成任意数量的多边形。
  • 此方法将内环转换为孔。 要将内环也转换为多边形,请使用 ST_POLYGONIZE。
  • 输入线条必须正确,节点才能使此功能正常工作。ST_NODE 可用于节点线。
  • 如果输入线条交叉,此函数将生成无效的多边形。ST_MAKEVALID 可用于确保输出有效。

示例

输入线,生成多边形:

sql
SQL> WITH data(geom) AS (
     SELECT 'LINESTRING (180 40, 30 20, 20 90)'::geometry union all
     SELECT 'LINESTRING (180 40, 160 160)'::geometry UNION all
     SELECT 'LINESTRING (160 160, 80 190, 80 120, 20 90)'::geometry UNION all
     SELECT 'LINESTRING (80 60, 120 130, 150 80)'::geometry UNION all
     SELECT 'LINESTRING (80 60, 150 80)'::geometry
     )
     SELECT ST_AsText( ST_BuildArea( ST_Collect( geom ))) FROM data;

+------------------------------------------------------------------------------------------+
|                                          EXPR1                                           |
+------------------------------------------------------------------------------------------+
| POLYGON((180 40,30 20,20 90,80 120,80 190,160 160,180 40),(150 80,120 130,80 60,150 80)) |
+------------------------------------------------------------------------------------------+

(1 row)

用两个圆形多边形创建一个环形:

sql
SQL> SELECT ST_AsText(ST_BuildArea(ST_Collect(inring,outring)))
     FROM (SELECT
         ST_Buffer('POINT(100 90)', 25) As inring,
         ST_Buffer('POINT(100 90)', 50) As outring) As t;

+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    EXPR1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| POLYGON((150 90,149.0392640201615 80.24548389919359,146.19397662556435 70.86582838174552,141.57348061512727 62.22148834901989,135.35533905932738 54.64466094067263,127.77851165098011 48.42651938487274,119.1341716182545 43.80602337443566,109.75451610080641 40.960735979838475,100 40,90.24548389919359 40.960735979838475,80.86582838174552 43.80602337443566,72.2214883490199 48.42651938487273,64.64466094067262 54.64466094067262,58.426519384872734 62.22148834901989,53.80602337443566 70.8658283817455,50.960735979838475 80.24548389919357,50 90,50.960735979838475 99.75451610080641,53.80602337443566 109.13417161825448,58.42651938487273 117.7785116509801,64.64466094067262 125.35533905932738,72.22148834901989 131.57348061512727,80.86582838174549 136.19397662556432,90.24548389919357 139.0392640201615,99.99999999999999 140,109.75451610080641 139.0392640201615,119.1341716182545 136.19397662556435,127.7785116509801 131.57348061512727,135.35533905932738 125.35533905932738,141.57348061512727 117.77851165098011,146.19397662556432 109.13417161825453,149.0392640201615 99.75451610080644,150 90),(125 90,124.51963201008076 94.87725805040321,123.09698831278216 99.56708580912726,120.78674030756363 103.88925582549005,117.67766952966369 107.67766952966369,113.88925582549004 110.78674030756363,109.56708580912725 113.09698831278217,104.87725805040321 114.51963201008076,100 115,95.12274194959679 114.51963201008076,90.43291419087274 113.09698831278216,86.11074417450995 110.78674030756363,82.32233047033631 107.67766952966369,79.21325969243637 103.88925582549005,76.90301168721783 99.56708580912724,75.48036798991924 94.87725805040321,75 90,75.48036798991924 85.12274194959679,76.90301168721783 80.43291419087275,79.21325969243637 76.11074417450995,82.32233047033631 72.32233047033631,86.11074417450995 69.21325969243637,90.43291419087275 66.90301168721783,95.1227419495968 65.48036798991924,100 65,104.87725805040321 65.48036798991924,109.56708580912725 66.90301168721783,113.88925582549005 69.21325969243637,117.67766952966369 72.32233047033631,120.78674030756363 76.11074417450995,123.09698831278217 80.43291419087275,124.51963201008076 85.12274194959679,125 90)) |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

(1 row)