Algoritmo para corrigir erros topológicos em aplicativos de software GIS

19

Pergunta relacionada aqui.

Percebo que garantir a correção topológica é essencial para aplicativos GIS, isso ocorre porque a entrada da operação booleana do usuário ou do polígono pode ter sérios problemas topológicos (mesmo que os polígonos pareçam corretos) que comprometeriam a qualidade das operações subseqüentes.

Polígono limpo é como os Geo Wizards fazem para garantir a correção da topologia.

Arcgis também tem um comando para limpar as lascas.

Minha pergunta não é sobre como usar os pacotes de software existentes para garantir que os dados de entrada do polígono estejam topologicamente corretos; em vez disso, minha pergunta é sobre como esses pacotes de software implementam esses procedimentos de limpeza. Em outras palavras, qual é o algoritmo que posso usar para garantir a correção de todos os erros topológicos, considerando um conjunto de entradas poligonais?

Graviton
fonte
2
Existe outra ferramenta do ArcGIS GP, chamada "Integrate", que tem uma breve explicação do algoritmo no recurso de ajuda: help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//… - No entanto, não está especificado corretamente.
Allan Adair
Seu próprio link da Geo Wizards realmente representa os algoritmos razoavelmente bem. O que mais você espera?
precisa saber é o seguinte
@hohanvdw, o que o link mostra não é algoritmo, mas etapas sobre como usar o software para ativar o algoritmo para limpar o polígono. A diferença entre os dois é enorme.
Graviton 22/09
1
Procurar algoritmos de planarização pode gerar algo útil.
Kirk Kuykendall
@KirkKuykendall, não sei bem como a planarização ajuda. Eu pensei que é mais aplicável à teoria dos grafos, em vez deste tipo de material de geometria computacional?
Graviton 23/09

Respostas:

7

Uma rápida pesquisa no Google Scholar exibiu os seguintes artigos bem citados:

blah238
fonte
+1 Parece um papel bem pensado. Eu gostaria que os autores definissem o que eles querem dizer com "cena".
Kirk Kuykendall
Obrigado, adicionei um segundo artigo (de um dos mesmos autores), mas à primeira vista ainda não sei dizer o que é uma 'cena'.
precisa saber é o seguinte
10

Você pode encontrar uma descrição detalhada das rotinas de limpeza topológica no código-fonte e nos manuais do GRASS GIS: http://grass.osgeo.org/programming7

As rotinas de limpeza estão codificadas aqui: http://trac.osgeo.org/grass/browser/grass/trunk/vector/v.clean

Exemplos para as rotinas subjacentes:

Os conceitos subjacentes estão descritos aqui: http://grass.osgeo.org/programming7/vectorlib.html#vlibTopoExamples

markusN
fonte
4

Embora não seja um algoritmo, esta página fornece algumas informações sobre que tipos de erros de topologia o "check geometry" procura nas ferramentas do ArcGIS Check Geometry / Repair Geometry. http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//00170000003v000000

Null geometry: The record will be deleted from the feature class. To keep records with null geometry, uncheck the tool dialog option Delete Features with    Null Geometry, or in scripting set the delete_null parameter to KEEP_NULL.
Short segment: The geometry's short segment will be deleted.
Incorrect ring ordering: The geometry will be updated to have correct ring ordering.
Incorrect segment orientation: The geometry will be updated to have correct segment orientation.
Self intersections: the areas of overlap in a polygon will be dissolved.
Unclosed rings: The unclosed rings will be closed by connecting the ring's end points.
Empty parts: The parts that are null or empty will be deleted.
Duplicate vertex: One of the vertices will be deleted.
Mismatched attributes: The Z or M coordinate will be updated to match.
Discontinuous parts: Multiple parts will be created from the existing discontinuous part.
Empty Z values: The Z value will be set to 0.
Michael Markieta
fonte
3

Não acho que haja uma maneira de automatizar completamente a correção de erros topológicos em um determinado conjunto de dados. Algumas coisas, como dangles, podem automatizar a divisão e excluir o dangle resultante. Mas e as lascas entre dois polígonos adjacentes, qual polígono deve ser mesclado com qual lasca para eliminá-lo? Esse tipo de pergunta parece precisar da entrada do usuário. Para identificar os erros, no entanto, acho que os algoritmos usam algum tipo de variação do DE-9IM (Dimensionally extended 9 something something). Acho que sua melhor aposta seria olhar para o Java Topology Suite (JTS). Especificamente a classe Geometry Graph. Eu acho que isso poderia ser usado para construir os diferentes componentes de uma geometria específica e, em seguida, usado para verificar diferentes problemas de topologia. Eu nunca fiz isso, mas olhei para ele há não muito tempo.

Se você não estiver familiarizado com Java, GEOS é o sabor C ++ do JTS ou NetTopologySuite é o sabor C #.

Espero que ajude.

dslamb
fonte
1

A documentação do comando Integrar do ArcGIS já foi mencionada, mas a ESRI também produziu um documento técnico Noções básicas sobre processamento geométrico no ArcGIS documentando a lógica de processamento usada pelo Integrate (e operações de geoprocessamento que envolvem tolerância em geral). Isso se concentra na prevenção e correção de erros topológicos gerados a partir do geoprocessamento. Existem algumas referências fornecidas que também podem ser úteis.

Andy Harfoot
fonte