Como construir um casco mínimo convexo cruzando a linha de 180 graus?

13

Venho construindo cascos convexos para espécies que habitam o Indo-Pacífico (de 20 a 65 graus de longitude). O problema que encontrei é que, para as espécies que podem ser encontradas em ambos os lados da linha de 180 graus de longitude, o casco reconstruído se expande por toda a camada, em vez de incluir os pontos em um polígono muito menor que compreende as duas extremidades da camada. A causa desse comportamento é que essa linha representa a borda da camada e o QGIS não quebra mapas vetoriais (veja a imagem abaixo ... minha 'reputação' agora é 'boa o suficiente para incluí-la, obrigado).

insira a descrição da imagem aqui

Depois de pensar e pesquisar no Google, essas são algumas das abordagens possíveis para o problema que encontrei; no entanto, não tenho muita certeza de seu mérito ou implementação:

  1. Mude o meridiano central de 0 (ou seja, Greenwich) para digamos 150 graus. Como isso pode ser feito? Isso mudaria apenas a exibição do mapa (útil por si só) ou também contribuiria para a construção do casco convexo correto?

  2. Altere o sistema de coordenadas de um formato de +/- 180 graus para um formato de 0 a 360 graus. Aparentemente, algo nesse sentido pode ser alcançado usando a função 'ST_Shift_Longitude' no PostGIS, que adiciona 360 graus às longitudes negativas. Existe uma maneira mais simples de fazer isso? Além disso, essa função produz um mapa centrado em 180 graus, que não seria o fim do mundo, mas um mapa centrado em 150 graus seria melhor (~ o ​​centro do Indo-Pacífico).

    Obrigado pelo seu tempo e ajuda, e desculpe pelo longo post.

Bernardo
fonte
1
Convex cascos só fazem sentido quando um sistema de coordenadas projetadas é usado
2
Embora você esteja certo em geral, @Dan, há muitos casos em que o casco convexo faz sentido - e esse é provavelmente um deles. Podemos definir o casco convexo de qualquer conjunto de pontos na esfera construindo seu cone (que é a união dos raios que se originam no centro da Terra e passando pelos pontos) e cruzando o casco convexo desses raios (considerado como um subconjunto de espaço) com a esfera.
whuber
Uma pergunta relacionada em gis.stackexchange.com/questions/17788 pede para calcular caixas delimitadoras de pontos que podem cruzar o meridiano de + -180 graus. No presente caso, porém, uma solução nas coordenadas projetadas (como sugerido por @Dan Patterson) ou a solução 3D parecem as melhores apostas. Cuidado, porém: a maioria dos GISs ainda tem problemas para lidar com dados que abrangem esse meridiano. Realize testes com conjuntos de dados simples antes de se comprometer com qualquer solução.
whuber

Respostas:

4

Você pode usar o GRASS GIS (no QGIS, disponível na caixa de ferramentas GRASS ou melhor, no plug-in Sextante), capaz de lidar com o contorno global na linha da data.

Aqui está um exemplo com pontos aleatórios nessa zona com polígono convexo do casco gerado com v.hull :

insira a descrição da imagem aqui

markusN
fonte
0

Se você deseja mover o meridiano central do mapa do mundo de Greenwich para algo diferente, obtém os mesmos extravios que encontrou, mas com o plano de fundo do Mapa, se ele for construído por polígonos vetoriais.

Veja estas perguntas e respostas para uma solução alternativa:

Reprojetando o conjunto de dados Natural Earth para World Eckert I

Embora escrito para a projeção de Eckert, deve funcionar para todas as visões mundiais centradas em meridianos diferentes de Greenwich.

Usar um fundo de varredura como o Blue Marble evitaria esse problema.

AndreJ
fonte