Come preservare la topologia durante la modifica dei poligoni in OpenLayers?


9

Sto affrontando questo problema: ho una mappa dei cloropleti basata su un insieme di poligoni con alcuni dati. Usando WFS-T (postgis, geoserver, openlayer) sono in grado di modificare la geometria dei poligoni. Funziona benissimo.

I miei poligoni sembrano confini di stato. Hanno vertici dei bordi condivisi. Quando modifico la geometria di alcuni poligoni (ad es., Muovo i vertici usando un metodo di modifica), devo influenzare la geometria di qualsiasi poligono vicino. Non dovrebbero esserci buchi o sovrapposizioni.

È possibile farlo?

Grazie


Probabilmente;) Non credo che OpenLayers supporti qualcosa di simile fuori dalla scatola, ma sarebbe implementabile. È possibile rappresentare ciascun bordo con una stringa di linea e modificare le stringhe di linea. Quindi, quando la stringa lineare viene aggiornata, aggiorni i due (o più) poligoni che toccano il bordo, rimuovendo il vecchio bordo e inserendo quello nuovo.
canisrufus,

Risposte:



2

Solo indizi, non pensare che OpenLayers sia in grado di farlo. La maggior parte dei GIS desktop open source non è in grado di eseguire lo snap su una linea di vertici diversi, quindi farlo online mi sembra un sogno.

Per una geometria semplice, lo snap può essere sufficiente http://openlayers.org/dev/examples/snapping.html Non abbastanza maturo, spero che https://github.com/bjornharrtell/jsts sarà un modo per fare intersezione (e risolvere indirettamente il problema) sul lato client prima di inviare nuovamente il contenuto. Per il momento, penserò di più all'elaborazione dopo aver disegnato utilizzando i trigger PostGIS per questo e rispedendo i disegni corretti. L'implementazione della topologia in PostGIS può aiutare http://www.postgresql-sessions.org/2/sandro_santilli_-_topology_with_postgis_2.0 Sempre sul lato server, vedere le possibilità di WPS forse http://community.esdi-humboldt.eu/documents/show / 4

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.