Je suis surpris qu'il n'y ait pas de solution pour cela dans R spatial
Brad Nesom
Réponses:
8
Il s'agit d'un ancien problème sans solution simple. La seule approche que j'ai rencontrée est de faire une fonction que vous donnez un titre et le nombre de pièces et l'ordinateur fasse des essais jusqu'à ce qu'il obtienne des surfaces égales. Il existe une fonction LISP avec celle d'AutoCAD. Dans postgis, cela fonctionne de la même manière, voici un extrait de PostGIS en action de Manning, ce code divise un polygone en deux parties égales:
WITH RECURSIVEref(the_geom, env) AS (
SELECT the_geom,
ST_Envelope(the_geom)As env,
ST_Area(The_geom)/2As targ_area,1000As nit
FROM us.states
WHERE state ='Idaho'),
T(n,overlap) AS (
VALUES (CAST(0AsFloat),CAST(0AsFloat))
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;
Une approche pourrait être de diviser complètement le polygone en triangles, chacun avec une zone donnée. Il s'agirait alors d'essayer de regrouper ces triangles (adjacents) en polygones de taille (plus ou moins) de surface / n. Ce serait une sorte de version personnalisée du problème de "somme de sous-ensemble" ou de "sac à dos" (et je ne saurais pas comment commencer avec PostGIS).
Réponses:
Il s'agit d'un ancien problème sans solution simple. La seule approche que j'ai rencontrée est de faire une fonction que vous donnez un titre et le nombre de pièces et l'ordinateur fasse des essais jusqu'à ce qu'il obtienne des surfaces égales. Il existe une fonction LISP avec celle d'AutoCAD. Dans postgis, cela fonctionne de la même manière, voici un extrait de PostGIS en action de Manning, ce code divise un polygone en deux parties égales:
la source
Une approche pourrait être de diviser complètement le polygone en triangles, chacun avec une zone donnée. Il s'agirait alors d'essayer de regrouper ces triangles (adjacents) en polygones de taille (plus ou moins) de surface / n. Ce serait une sorte de version personnalisée du problème de "somme de sous-ensemble" ou de "sac à dos" (et je ne saurais pas comment commencer avec PostGIS).
la source