Я пытаюсь создать карту с данными, указывающими некоторые рейсы, и хочу использовать дуги Большого круга, чтобы соединить источник и пункты назначения.
По сути, я хочу сделать что-то похожее на знаменитую карту Facebook:
Я использовал функции, приведенные в этом посте: https://gis.stackexchange.com/a/5205/442 , (то есть в этой статье блога: http://anitagraser.com/2011/08/20/visualizing-global-connections / ) и я мог бы получить линии, но они пересекают Международную линию дат, а также собираются в столбах:
@underdark, упомянул в связанном посте блога, что эти строки нужно разделять, но я не знаю, как разделить их автоматически в PostGIS.
Кроме того, также необходимо разрешить связывание линий возле полюсов.
Как мне выполнить оба этих действия, если у меня есть точечные местоположения для начала и окончания этих рейсов?
источник
Ответы:
Принципы, описанные в этом посте, перенесены в PostGIS общего назначения.
http://blog.cartodb.com/jets-and-datelines/
В основном, используйте
ST_Segmentize
на географии, и немного магии, чтобы разрезать линии пересечения линии даты.источник
Вы можете рассчитать геодезические. Говоря, что вы хотите показать геодезическую от A до B, вы можете сначала вычислить расстояние и азимут от A до B (обратная геодезическая задача), а затем вычислить точки от A до нескольких точек между A и B (прямая геодезическая задача). Я добавил простой скрипт в Python, используя GeographicLib, просто выводя материал в GeoJSON:
Результатом является истинная геодезическая между точками в WGS-84. Конечно, вы можете затем преобразовать координаты в любую проекцию, которая вам нужна. Результат, визуализированный на geojson.io, выглядит следующим образом:
источник