Como os diferentes sistemas GIS determinam o interior de um polígono?

11

Estou interessado em entender como os sistemas GIS do mundo real e seus dados codificam polígonos.

Especificamente, como eles resolvem a ambiguidade do interior de um polígono em uma esfera?

Antecedentes: em 2D, é trivial escolher o lado do limite que possui uma área finita, pois o plano 2D é infinito. No entanto, uma esfera é finita, portanto, é impossível saber de que lado está dentro sem fazer suposições adicionais.

Possíveis abordagens que eu conheço:

  1. Regra da mão direita : os limites externos são sempre especificados no sentido horário e os furos são especificados no sentido anti-horário. (É claro que também existe a regra da mão esquerda).
  2. Área menor : para qualquer anel, sempre escolha o lado com a menor área. Não tenho certeza de como você especificaria um polígono de grande alcance: talvez um anel externo vazio seguido de orifícios?
  3. Equiretangular : Basta considerar a projeção equiretangular em um plano 2D infinito. No entanto, isso pressupõe que os recursos sejam cortados no antemeridiano; caso contrário, seria necessário um fallback para um dos dois métodos acima.

Minha preferência pessoal é a primeira abordagem, mas estou interessado em entender se isso é comum nos sistemas GIS padrão.

Jason Davies
fonte

Respostas:

3

Principais sistemas GIS e seus métodos para resolver a ambiguidade inerente:

  • ESRI : regra do pé direito.
  • ArcGIS : regra do pé direito.
  • SQL Server 2012 : regra do pé esquerdo. Antes do SQL Server 2012, polígonos maiores que o hemisfério geravam um erro.

GeoJSON não especifica uma ordem.

Jason Davies
fonte
1
A especificação revisada do GeoJSON ( tools.ietf.org/html/rfc7946 ) especifica que "os anéis poligonais DEVEM seguir a regra da direita para orientação (anéis externos no sentido anti-horário, anéis internos no sentido horário)".
Perrygeo 5/11
1

Se entendi sua pergunta corretamente, você quer saber como o GIS executa um ponto no teste de polígono esférico. Aqui está um algoritmo que encontrei em geospatialmethods.org :

  1. Conecte o ponto ao ponto externo conhecido com um grande arco circular.
  2. Para cada grande arco circular que é um lado do teste de polígono esférico, se ele cruzar o arco construído na etapa 1 e contar o número de interseções.
  3. Se o número total de interseções for ímpar, o ponto especificado estará dentro do polígono esférico. se o número total de interseções for uniforme, o ponto estará fora do polígono esférico.

Eu acho que ainda é baseado no algoritmo planar de construção de um raio de teste do ponto em questão para um ponto conhecido por estar fora do polígono, seguido pela contagem de quantas arestas o raio cruza que você mencionou.

Também é discutido em profundidade em um artigo da NASA JPL sobre algoritmos em polígonos em uma esfera . Está na página 11. Obviamente, existem algumas otimizações:

Primeiro, evite executar os cálculos de trigonometria esférica computacionalmente caros quando possível, verificando o raio de teste em uma caixa delimitadora pré-calculada antes de observar qualquer uma das bordas do polígono. Se o raio de teste cruzar a caixa delimitadora, Q será verificado em cada um dos vértices do polígono. Não faz sentido testar se Q está em uma aresta neste momento, porque isso será revelado quando os testes de interseção forem executados e o restante das arestas puderem ser ignoradas nesse momento.

Eu acho que você achará o artigo mais interessante :)

RK
fonte
Isso parece responder a uma pergunta diferente. Uma polilinha fechada, sem interseção automática, divide uma esfera em dois componentes conectados. O OP pergunta como o SIG determina - ou como é informado - quais desses componentes devem ser considerados "internos" e quais "externos"? O site que você cita discute essa questão sob o título "Adivinha ponto externo", enfatizando que é apenas adivinhar qual componente deve estar dentro.
whuber
Oh ... Drat. Mal entendeu sua pergunta. Eu confundi com a versão esférica do ponto no teste de polígono. Vou revisá-lo assim que eu encontrar uma resposta.
RK
Bem, eu apreciei as referências que você encontrou, então espero que você as inclua na sua resposta revisada :-).
whuber
Eu também espero. Ou talvez eu faça apenas uma pergunta e responda ;-) Seria uma pena desperdiçá-las.
RK:
1
Obrigado pela resposta detalhada! Infelizmente, como @whuber aponta, isso não responde à minha pergunta específica. :) Descrevi possíveis abordagens para resolver a ambiguidade inerente de onde está o interior de um polígono, mas estou interessado em saber o que abordam os softwares GIS do mundo real.
Jason Davies