ST_TriangulatePolygon — 計算多邊形的約束德洛內三角剖分
geometry ST_TriangulatePolygon(
geometry geom)
;
計算多邊形的約束德洛內三角剖分。支援孔洞和多重多邊形。
多邊形的「約束德洛內三角剖分」是由多邊形的頂點形成的一組三角形,完全覆蓋該多邊形,並且在所有可能的三角剖分中具有最大的總內角。它提供了多邊形「最佳品質」的三角剖分。
可用性:3.3.0。
需要 GEOS >= 3.11.0。
正方形的三角剖分。
SELECT ST_AsText( ST_TriangulatePolygon('POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))')); st_astext --------------------------------------------------------------------------- GEOMETRYCOLLECTION(POLYGON((0 0,0 1,1 1,0 0)),POLYGON((1 1,1 0,0 0,1 1)))
字母 P 的三角剖分。
SELECT ST_AsText(ST_TriangulatePolygon( 'POLYGON ((26 17, 31 19, 34 21, 37 24, 38 29, 39 43, 39 161, 38 172, 36 176, 34 179, 30 181, 25 183, 10 185, 10 190, 100 190, 121 189, 139 187, 154 182, 167 177, 177 169, 184 161, 189 152, 190 141, 188 128, 186 123, 184 117, 180 113, 176 108, 170 104, 164 101, 151 96, 136 92, 119 89, 100 89, 86 89, 73 89, 73 39, 74 32, 75 27, 77 23, 79 20, 83 18, 89 17, 106 15, 106 10, 10 10, 10 15, 26 17), (152 147, 151 152, 149 157, 146 162, 142 166, 137 169, 132 172, 126 175, 118 177, 109 179, 99 180, 89 180, 80 179, 76 178, 74 176, 73 171, 73 100, 85 99, 91 99, 102 99, 112 100, 121 102, 128 104, 134 107, 139 110, 143 114, 147 118, 149 123, 151 128, 153 141, 152 147))' ));
多邊形三角剖分
SELECT ST_TriangulatePolygon( 'POLYGON (( 10 190, 10 70, 80 70, 80 130, 50 160, 120 160, 120 190, 10 190 ))'::geometry );
ST_AsText 輸出
GEOMETRYCOLLECTION(POLYGON((50 160,120 190,120 160,50 160)) ,POLYGON((10 70,80 130,80 70,10 70)) ,POLYGON((50 160,10 70,10 190,50 160)) ,POLYGON((120 190,50 160,10 190,120 190)) ,POLYGON((80 130,10 70,50 160,80 130)))
![]() 原始多邊形 |
![]() 三角剖分的多邊形 |