¿Cómo preservar la topología al editar polígonos en OpenLayers?


9

Me enfrento a este problema: tengo un mapa de cloroplasto basado en un conjunto de polígonos con algunos datos. Usando WFS-T (postgis, geoserver, openlayers) puedo editar la geometría de los polígonos. Esto funciona bien

Mis polígonos parecen fronteras estatales. Han compartido vértices fronterizos. Cuando edito la geometría de algún polígono (p. Ej., Mover vértices usando modifyFeature), necesito afectar la geometría de cualquier polígono vecino. No debe haber agujeros ni superposiciones.

¿Es posible hacer lo?

Gracias


Probablemente;) No creo que OpenLayers admita nada como esto fuera de la caja, pero sería implementable. Puede representar cada borde con una cadena lineal y modificar las cadenas lineales. Luego, cuando se actualiza la cadena de líneas, actualiza los dos (o más) polígonos que se tocan en el borde, eliminando el borde anterior e insertando el nuevo.
canisrufus

Respuestas:



2

Solo pistas, no creas que OpenLayers es capaz de hacerlo. La mayoría de los SIG de escritorio de código abierto no pueden ajustar una línea de vértices diferentes, por lo que hacer esto en línea me parece un sueño.

Para una geometría simple, el ajuste puede ser suficiente http://openlayers.org/dev/examples/snapping.html No lo suficientemente maduro, espero que https://github.com/bjornharrtell/jsts sea ​​una forma de hacer intersección (y indirectamente resuelva su problema) en el lado del cliente antes de enviar el contenido. Por el momento, pensaré más en el procesamiento después de dibujar usando los desencadenadores PostGIS para esto y enviaré los dibujos corregidos. La implementación de topología en PostGIS puede ayudar http://www.postgresql-sessions.org/2/sandro_santilli_-_topology_with_postgis_2.0 Siempre en el lado del servidor, vea las posibilidades de WPS tal vez http://community.esdi-humboldt.eu/documents/show / 4

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.