ST_CoverageSimplify — ポリゴンカバレッジのエッジを単純化するウィンドウ関数。
geometry ST_CoverageSimplify(
geometry winset geom, float8 tolerance, boolean simplifyBoundary = true)
;
ポリゴンカバレッジ内でポリゴンのエッジを単純化するウィンドウ関数です。この単純化ではカバレッジのトポロジが保持されます。単純化した出力ポリゴンは共有するエッジに沿って構成され、妥当なカバレッジを形成します。
単純化ではVisvalingam–Whyatt algorithm版を使います。tolerance
パラメータは距離の単位を持ち、単純化する三角形面積の平方根とだいたい同じです。
カバレッジの「内部の」エッジ (二つのポリゴンに共有されている)だけを単純化するには、simplifyBoundary
パラメタをFALSEに設定します。
入力が妥当なカバレッジでない場合には、出力に予期しない何か (境界のインタセクト、共有されているように見えるのに分かれている境界)が出現する可能性があります。カバレッジが妥当かどうかを判断するにはST_CoverageInvalidEdgesを使います。 |
Availability: 3.4.0
GEOS 3.12.0以上が必要です
|
|
WITH coverage(id, geom) AS (VALUES (1, 'POLYGON ((160 150, 110 130, 90 100, 90 70, 60 60, 50 10, 30 30, 40 50, 25 40, 10 60, 30 100, 30 120, 20 170, 60 180, 90 190, 130 180, 130 160, 160 150), (40 160, 50 140, 66 125, 60 100, 80 140, 90 170, 60 160, 40 160))'::geometry), (2, 'POLYGON ((40 160, 60 160, 90 170, 80 140, 60 100, 66 125, 50 140, 40 160))'::geometry), (3, 'POLYGON ((110 130, 160 50, 140 50, 120 33, 90 30, 50 10, 60 60, 90 70, 90 100, 110 130))'::geometry), (4, 'POLYGON ((160 150, 150 120, 160 90, 160 50, 110 130, 160 150))'::geometry) ) SELECT id, ST_AsText(ST_CoverageSimplify(geom, 30) OVER ()) FROM coverage; id | st_astext ----+--------------------------------------- 1 | POLYGON ((160 150, 110 130, 50 10, 10 60, 20 170, 90 190, 160 150), (40 160, 66 125, 90 170, 40 160)) 2 | POLYGON ((40 160, 66 125, 90 170, 40 160)) 3 | POLYGON ((110 130, 160 50, 50 10, 110 130)) 4 | POLYGON ((160 150, 160 50, 110 130, 160 150))