Considere esta situação simples em que três arestas se conectam em um nó:
Eu gostaria de escrever uma descrição sucinta e clara do relacionamento entre A e B de modo a diferenciá-lo do relacionamento entre A e C. Algo como “ao atravessar o nó no sentido horário, A é adjacente? para B, mas A não é adjacente? para C. " Mas não é realmente adjacência.
Disse de uma maneira diferente: imagine que você está de pé no nó e está voltado para A. Você começa a girar no sentido horário. A próxima vantagem que você encontrará é B, não C.
Existe uma maneira de descrever essa relação entre A e B de uma maneira mais sucinta, formal ou correta do que escrevi acima?
Ele deve ser direcional (um relacionamento desse tipo existe no sentido horário de A e outro existe no sentido anti-horário). E deve escalar até casos em que mais de três arestas estão conectadas no nó. Talvez tenha algo a ver com roteamento? (Estou pensando sobre isso no contexto das redes rodoviárias.)
Duas abordagens que eu já tentei, mas ainda não fui longe:
Referências de topologia semelhantes ao 9IM : Eu olhei para o DE-9IM e, embora eu não seja um matemático, acho que ainda posso dizer pelos diagramas e termos que ele não cobre esse tipo de relacionamento. Também não o encontro nas descrições de topologia da ajuda da ESRI ou da Oracle . (Talvez haja algo lá, mas eu ainda não o encontrei!)
Rostos : brinquei com o fato de que o lado "norte" de A também pode ser delimitado por B, mas não por C. No entanto, como você pode ver no diagrama aqui, isso nem sempre é verdade. Imagine que meu diagrama é um extrato de uma rede de estradas em que A e C são vias arteriais e B é uma estrada sem saída curta.
Eu suspeito que pode não haver um único termo para o que estou tentando dizer; no mínimo, eu gostaria de descrever esse relacionamento de uma maneira mais simples do que eu fiz acima. Esta é uma pergunta independente de plataforma. No momento, estou apenas procurando as palavras certas. Mais tarde, tentarei implementar o conceito em python (pyqgis ou arcpy) em um shapefile, para que quaisquer respostas com esse ponto final em mente sejam particularmente interessantes, mas não necessárias.
fonte
Respostas:
Sei que estou um pouco atrasado para a festa aqui, mas isso é algo bastante interessante, e espero que minha resposta possa ser útil.
O que você está perguntando é uma relação qualitativa; o irmão muitas vezes ignorado da relação quantitativa. O raciocínio qualitativo surge com bastante frequência na ciência geoespacial. Exemplos de consultas incluem: Quais parcelas são adjacentes a esta? Quais recursos estão dentro da sobreposição da região A e da região B? Quais regiões são côncavas? Qual estrada está à esquerda? As relações são: adjacentes a, dentro de, côncavas e esquerdas de. As consultas qualitativas geralmente passam despercebidas ou desvalorizadas quando comparadas a perguntas quantitativas, como qual é maior, menor ou maior em número.
Uma relação qualitativa que recebe duas entradas é chamada de relação binária. Existem duas notações comuns para isso: - isLeftOf (A, B) Esta é uma notação de prefixo. - A isLeftOf B Esta é uma notação de infixo.
Nos exemplos acima, havia também uma relação unária: isConcave. Essa relação relaciona uma região a si mesma e retornaria um valor booleano.
Todos os predicados espaciais de Egenhofer no modelo de 9 interseções (referenciados no 9EIM) são relações binárias entre duas regiões. Você também pode estar interessado no RCC de Randell, Cui e Cohn (http://en.wikipedia.org/wiki/Region_connection_calculus). As relações qualitativas (topológicas) dadas nesta área de estudo relacionam regiões para regiões, e trabalhos posteriores relacionam linhas para regiões e linhas para linhas. No entanto, isso não é exatamente o que você está procurando.
OK, desculpe a digressão, mas espero que ajude com o aspecto terminológico da sua pergunta.
A @whuber estava no caminho certo ao sugerir a lista de arestas duplamente conectadas (DCEL). Este é um parente próximo de mapas combinatórios, frequentemente usados sob as coberturas em sistemas CAD e bordas aladas. O conceito de borda alada (http://en.wikipedia.org/wiki/Winged_edge) é como o padrão de texto conhecido define um buraco em um polígono (http://en.wikipedia.org/wiki/Well-known_text #Geometric_objects). Observe no polígono que a ordem dos pontos externos é no sentido anti-horário e no sentido horário para os pontos internos. Uma pequena fada caminhando ao longo da fronteira nessa ordem sempre veria o interior da região à sua esquerda.
Nos mapas combinatórios e no DCEL, o ponto principal é que esses objetos sejam definidos em uma superfície orientável. Não precisamos entrar nas formalidades matemáticas - a idéia é bem simples: se você pode definir a direção na superfície, como em qualquer sistema de referência espacial em um GIS, então você tem uma superfície orientável. Portanto, se você pode definir uma direção, pode definir uma ordem direcional em torno de qualquer ponto da superfície. Com a ordem direcional, você pode definir isLeftOf (A, B), isRotationallyAdjacentTo (A, B) e assim por diante.
Definir a ordem em torno de um vértice em um gráfico incorporado em uma superfície requer duas atribuições: 1) atribuir etiquetas aos pontos finais da aresta e 2) atribuir uma convenção para ordem em torno de um vértice. Se a ordem dos elementos em uma matriz (por exemplo, [A, B, C] na sua imagem) estiver no sentido horário, podemos dizer qual aresta está à esquerda de B.
No seu exemplo, cada elemento é adjacente aos outros. Esse fato também é visível na matriz, porque na verdade representa uma permutação, ou seja, a ordem é importante, mas qual elemento é o primeiro não. Então [A, B, C] é equivalente a [C, A, B]. Em outras palavras, a matriz envolve o último elemento adjacente ao primeiro.
fonte
Quando você olha para os gráficos de topologia e conectividade obtidos de fornecedores como Teleatlas, Navteq, ESRI, etc., você começará a ver um padrão (é claro que todos têm sua própria maneira "especial" de fazer as coisas).
Pessoalmente , embora 1) Topologia Geoespacial e 2) Gráficos de Roteamento sejam apenas Gráficos e possam ser generalizados para serem representados na mesma estrutura de dados, tento evitar isso o máximo possível.
Eu tento fazer uma distinção na minha cabeça.
São apenas gráficos e pertencem à abrangência da ciência , mas há uma clara vantagem de não generalizar como a mesma coisa. Eles servem a propósitos diferentes e é muito mais fácil otimizar e aplicar operações quando são especializados para esse objetivo específico.
A ESRI faz isso. Eles possuem uma estrutura gráfica para Topologia Geoespacial (TopologyGraph) e uma estrutura Gráfico diferente para Problemas de Roteamento (conjunto de dados da rede). Caramba, eles ainda têm uma Estrutura Gráfica mais antiga - Redes Geométricas - que serve bem para problemas de fluxo em redes de serviços públicos.
Indiscutivelmente, no mundo PostgreSQL / PostGIS, também encontramos isso. Existe uma estrutura de dados para roteamento e outra para topologia geoespacial .
Na sua pergunta, você está falando sobre gráficos e navegando neles no sentido horário e anti-horário, bem como faces, o que me faz pensar que você deseja uma estrutura especializada para (1).
Para "Topologia geoespacial", acho que uma boa maneira de representar esse tipo de topologia é o que o Escritório Hidrográfico do Reino Unido faz em sua Descrição de topologia completa da57 .
Muito parecido com o que todas as principais implementações fazem.
Agora, se o que você está procurando é roteamento, o gráfico se torna diferente com base na necessidade de conectividade unidirecional ou bidirecional. No final, tudo se resume a:
Boa sorte e deixe-nos saber como é o seu projeto.
fonte