Comment conserver la topologie lors de l'édition de polygones dans OpenLayers?

9

Je suis confronté à ce problème: j'ai une carte chloroplèthe basée sur un ensemble de polygones avec quelques données. En utilisant WFS-T (postgis, geoserver, openlayers) je suis capable de modifier la géométrie des polygones. Cela fonctionne bien.

Mes polygones ressemblent à des frontières d'État. Ils ont partagé des sommets de bordure. Lorsque je modifie la géométrie d'un polygone (par exemple, déplacer des sommets à l'aide de modifyFeature), je dois affecter la géométrie de tout polygone voisin. Il ne doit pas y avoir de trous ni de chevauchements.

Est-il possible de le faire?

Merci

volda
la source
Probablement;) Je ne crois pas qu'OpenLayers supporte quoi que ce soit de ce genre, mais il serait implémentable. Vous pouvez représenter chaque bordure avec une chaîne de lignes et modifier les chaînes de lignes. Ensuite, lorsque la chaîne de lignes est mise à jour, vous mettez à jour les deux (ou plus) polygones qui se touchent à la bordure, supprimant l'ancienne bordure et insérant la nouvelle.
canisrufus

Réponses:

2

Seuls des indices, ne pense pas que OpenLayers est capable de le faire. La plupart des SIG de bureau open source ne sont pas en mesure de faire une capture sur une ligne de sommets différents, donc faire cela en ligne me semble un rêve.

Pour une géométrie simple, la capture peut être suffisante http://openlayers.org/dev/examples/snapping.html Pas assez mature, j'espère que https://github.com/bjornharrtell/jsts sera un moyen de faire l'intersection (et résolvez votre problème de manière indirecte) côté client avant de renvoyer le contenu. Pour le moment, je penserai davantage au traitement après le dessin à l'aide de déclencheurs PostGIS pour cela et je renverrai les dessins corrigés. L'implémentation de la topologie dans PostGIS peut aider http://www.postgresql-sessions.org/2/sandro_santilli_-_topology_with_postgis_2.0 Toujours côté serveur, voir les possibilités de WPS peut-être http://community.esdi-humboldt.eu/documents/show / 4

ThomasG77
la source