回答:
これは簡単な解決策がない古い問題です。私が出会った唯一のアプローチは、見出しを付け、部品の数とコンピューターが同じ面積になるまで試行する機能を作成することです。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;
1つの方法として、ポリゴンを完全に三角形に分割し、それぞれを特定の面積に分割することがあります。次に、それらの(隣接する)三角形を(多かれ少なかれ)サイズarea / nのポリゴンにグループ化しようとする問題になります。これは、「サブセット合計」または「ナップサック」問題の一種のカスタマイズされたバージョンです(そして、PostGISでそれを開始する方法がわかりません)。