6 votos

Ajustar los polígonos a los límites y rellenar los huecos

Este es el problema: enter image description here

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í)

enter image description here

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

enter image description here

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?

enter image description here

¿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..

enter image description here

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.

2voto

Dr Herbie Puntos 2966
  1. Utilice ST_DumpPoints para obtener un conjunto de vértices para cada polígono en 3 .
  2. A partir de esa construcción Polígonos de Voronoi alrededor de sus vértices
  3. Disolver los Voronois agrupando
  4. Recorte las formas resultantes con el límite de su departamento.

0voto

Chris Kloberdanz Puntos 1871

Puede utilizar ArcGiS y crear topología en su geodatabase. Debe elegir una de estas opciones reglas para los polígonos (para sus shapefiles 1 y 3). Entonces podrá validar las topologías y corregir todos los errores.

0 votos

Entiendo la forma de topología, también tenía esta forma enlace y esto enlace pero estaba buscando una forma de geometría para resolver esto. ¿No hay una forma de geometría para hacer esto?

0voto

kervin Puntos 7620

Después de hacer una topología, comprueba el Alinear el borde herramienta. Haz clic en el borde que quieres mover y luego en el borde donde quieres que vaya.

Con varios polígonos, estire el límite de uno, por un solo vértice, hasta la arista a la que quiere alinear, y utilice la misma herramienta. Repite la operación para el resto de ellos.

Whoops, no me di cuenta de que esto era PostGIS, ignorar.

1 votos

Entiendo que esto se haga manualmente pero estaba buscando un modo automático porque tengo muchos límites de departamentos con muchos polígonos múltiples dentro de cada departamento.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X