Este es el problema:
Dónde:
1: límite del departamento
3: polígonos dentro del límite del departamento que "tocan" el límite del departamento(1). No es necesario que encajen bien dentro de
2: agujeros entre 1 y 3
Tengo que "ajustar" las formas poligonales (3) para que "coincidan" con el límite del departamento (1) rellenando los huecos (2)
Uso de PostGIS:
Mi primer enfoque fue obtener el st_pointonsurface de todos los números 2 y 3 por departamentos. Luego asignar los agujeros (2) al polígono más cercano por pointonsurfaces entre sí.
Ver imagen (de otro límite de departamento, pero el mismo problema, superando las líneas punteadas sin color de relleno son zonas de polígonos que superaron el límite del departamento que ya he cortado por el límite del departamento por lo que no hay problema allí)
Esto funcionó pero me trajo otro problema::
- algunos (muchos) agujeros (2) que estaban unidos al polígono más cercano (por st_pointonsurface) eran líneas realmente largas
Aquí (2) son los agujeros que se unieron al polígono más cercano, y el resultado son nuevos polígonos "extraños" con líneas realmente largas.
Puedo usar cualquiera de ArcGIS 10, Quantum GIS y PostGIS para resolver esto, pero no consigo una forma de resolverlo.
EDITAR
¿Qué reglas pueden ser útiles para este problema?
¿Cómo se resolverá la topología cuando varios polígonos luchen por conseguir el mismo hueco?
EDITAR 2
Uso del enfoque geométrico con PostGIS.
una idea: - hacer topes de los múltiples polígonos que están dentro del límite del departamento - obtener la st_intersección entre el polígono amortiguado y el polígono original + el agujero. De esta manera, el nuevo polígono "amortiguado" sólo mantendrá el búfer en el que se toca el área intersectada por el "agujero".
- Esto puede funcionar con ejemplos simples .. pero con agujeros y polígonos del mundo real ..
- Esto nos dejará otro problema: los solapamientos entre los diferentes polígonos de la memoria intermedia dentro de las zonas de agujeros..
0 votos
Siguiendo con la ruta de PostGIS, he tenido buenos resultados asignando agujeros a los polígonos en función del límite compartido más largo en lugar de la distancia más cercana basada en
ST_PointOnSurface
. Si tienes astillas muy, muy largas, puede que tengas que añadir una lógica para dividir los polígonos de las astillas si superan un determinado tamaño.