Como preservar a topologia ao editar polígonos no OpenLayers?


9

Estou enfrentando esse problema: tenho um mapa de cloropletos com base em um conjunto de polígonos com alguns dados. Usando o WFS-T (postgis, geoserver, openlayers), sou capaz de editar a geometria dos polígonos. Isso funciona bem.

Meus polígonos parecem fronteiras de estado. Eles compartilharam vértices de borda. Quando edito a geometria de algum polígono (por exemplo, movo os vértices usando modifyFeature), preciso afetar a geometria de qualquer polígono vizinho. Não deve haver orifícios ou sobreposições.

É possível fazê-lo?

obrigado


Provavelmente;) Eu não acredito que o OpenLayers suporte algo assim imediatamente, mas seria implementável. Você pode representar cada borda com uma cadeia de linhas e modificar as cadeias de linha. Em seguida, quando a cadeia de linhas é atualizada, você atualiza os dois (ou mais) polígonos que tocam na borda, removendo a borda antiga e inserindo a nova.
Canisrufus

Respostas:



2

Apenas pistas, não pense que o OpenLayers é capaz de fazê-lo. A maioria dos GIS de desktop de código aberto não é capaz de fazer ajustes em uma linha de vértice diferente, portanto, fazer isso on-line me parece um sonho.

Para uma geometria simples, o snap pode ser suficiente http://openlayers.org/dev/examples/snapping.html Não maduro o suficiente, espero que https://github.com/bjornharrtell/jsts seja uma maneira de fazer interseções (e resolver indiretamente o seu problema) no lado do cliente antes de enviar o conteúdo de volta. Por enquanto, vou pensar mais sobre o processamento após desenhar usando os acionadores PostGIS para isso e enviar de volta os desenhos corrigidos. A implementação da topologia no PostGIS pode ajudar http://www.postgresql-sessions.org/2/sandro_santilli_-_topology_with_postgis_2.0 Sempre no lado do servidor, veja as possibilidades do WPS talvez http://community.esdi-humboldt.eu/documents/show / 4

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.