PostGIS:特定の比率でポリゴンを分割する


11

nPostGISでポリゴンをほぼ同じサイズのパーツに分割する便利な方法はありますか?


等しい面積または等しいサイズ(つまり、幅と高さが似ている)ですか?
アンソニー-GISCOE-

割合に関係なく、面積。
アダムMatan


R空間にはこれに対する解決策がないことに
驚いています

回答:


8

これは簡単な解決策がない古い問題です。私が出会った唯一のアプローチは、見出しを付け、部品の数とコンピューターが同じ面積になるまで試行する機能を作成することです。AutoCADにはLISP機能があります。Postgisでも同じように機能します。ここに、ManningのPostGIS in Actionの抜粋を示します。このコードは、ポリゴンを2つの等しい部分に分割します。

WITH RECURSIVE
ref(the_geom, env) AS (
SELECT the_geom,
ST_Envelope(the_geom) As env,
ST_Area(The_geom)/2 As targ_area,
1000 As nit
FROM us.states
WHERE state = 'Idaho'
),

T(n,overlap) AS (
VALUES (CAST(0 As Float),CAST(0 As Float))
UNION ALL
SELECT n + nit, ST_Area(ST_Intersection(the_geom, ST_Translate(env, n+nit, 0)))
FROM T CROSS JOIN ref
WHERE ST_Area(ST_Intersection(the_geom, ST_Translate(env, n+nit, 0)))> ref.targ_area
) ,  

bi(n) AS
(SELECT n
FROM T
ORDER BY n DESC LIMIT 1)  

SELECT bi.n,
ST_Difference(the_geom, ST_Translate(ref.env, n,0)) As geom_part1,
ST_Intersection(the_geom, ST_Translate(ref.env, n,0)) As geom_part2
FROM bi CROSS JOIN ref;

2

1つの方法として、ポリゴンを完全に三角形に分割し、それぞれを特定の面積に分割することがあります。次に、それらの(隣接する)三角形を(多かれ少なかれ)サイズarea / nのポリゴンにグループ化しようとする問題になります。これは、「サブセット合計」または「ナップサック」問題の一種のカスタマイズされたバージョンです(そして、PostGISでそれを開始する方法がわかりません)。


アルゴリズムに関する詳細を教えてください。
マジッド・ホジャティ16
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.