Estoy sorprendido de que no haya una solución para esto en R espacial
Brad Nesom
Respuestas:
8
Este es un viejo problema sin una solución simple. El único enfoque que encontré es hacer una función que le dé un encabezado y el número de partes y la computadora realice pruebas hasta que obtenga áreas iguales. Hay una función LISP con eso en AutoCAD. En postgis funciona igual, aquí hay un extracto de PostGIS en acción de Manning, este código divide un polígono en dos partes iguales:
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;
Un enfoque podría ser dividir el polígono completamente en triángulos, cada uno con un área determinada. Entonces se trataría de agrupar esos triángulos (adyacentes) de nuevo en polígonos de área de tamaño (más o menos) / n. Esta sería una especie de versión personalizada del problema de "suma de subconjuntos" o "mochila" (y no sabría cómo comenzar con eso con PostGIS).
Respuestas:
Este es un viejo problema sin una solución simple. El único enfoque que encontré es hacer una función que le dé un encabezado y el número de partes y la computadora realice pruebas hasta que obtenga áreas iguales. Hay una función LISP con eso en AutoCAD. En postgis funciona igual, aquí hay un extracto de PostGIS en acción de Manning, este código divide un polígono en dos partes iguales:
fuente
Un enfoque podría ser dividir el polígono completamente en triángulos, cada uno con un área determinada. Entonces se trataría de agrupar esos triángulos (adyacentes) de nuevo en polígonos de área de tamaño (más o menos) / n. Esta sería una especie de versión personalizada del problema de "suma de subconjuntos" o "mochila" (y no sabría cómo comenzar con eso con PostGIS).
fuente