Estou tentando criar um mapa, com dados indicando alguns vôos, e quero usar o Great Circle Arcs, para conectar a fonte e os destinos.
Basicamente, eu quero fazer algo semelhante ao famoso mapa do Facebook:
Eu usei as funções fornecidas neste post: https://gis.stackexchange.com/a/5205/442 , (ou seja, este artigo de blog: http://anitagraser.com/2011/08/20/visualizing-global-connections / ) e eu pude pegar linhas, mas elas cruzam a Linha Internacional de Data, bem como agrupam-se, nos pólos:
O @underdark mencionou no blog vinculado que essas linhas precisam ser divididas, mas não sei como dividi-las automaticamente no PostGIS.
Além disso, o agrupamento das linhas próximas aos pólos também precisa ser resolvido.
Como faço para ambos, quando tenho os locais dos pontos para o início e o término desses voos?
fonte
Respostas:
Os princípios contidos neste post são transferidos para o PostGIS de uso geral.
http://blog.cartodb.com/jets-and-datelines/
Basicamente, use
ST_Segmentize
na geografia e um pouco de mágica para cortar linhas de cruzamento de linhas de data.fonte
Você pode calcular a geodésica. Dizendo que deseja mostrar a geodésica de A a B, você pode primeiro calcular a distância e o azimute de A a B (problema geodésico inverso) e depois calcular pontos de A a vários pontos entre A e B (problema geodésico direto). Eu adicionei um script simples em Python usando GeographicLib apenas exibindo o material em GeoJSON:
O resultado é a verdadeira geodésica entre os pontos no WGS-84. Obviamente, você pode transformar as coordenadas em qualquer projeção necessária. O resultado visualizado no geojson.io se parece com o seguinte:
fonte