Структура данных для больших географических координат? - PullRequest
1 голос
/ 28 марта 2012

Меня не волнует используемый язык.

У меня есть большая база данных около 84,1 тыс. Записей для различных авиационных координат по всему миру, они отформатированы следующим образом:

A1 023 UBL 15.245197 104.865917
A1 024 BUTRA 15.418278 105.596083
A1 025 PAPRA 15.766667 107.183333
A1 026 BATEM 15.931389 107.765556
A1 027 DAN 16.052778 108.198333
A1 028 BUNTA 16.833334 109.395000
A1 029 LENKO 17.416667 110.300000
A1 030 IKELA 18.661667 112.245000
A1 031 IDOSI 19.000000 112.500000
A1 032 CH 22.219542 114.030056

Первое число - это воздушный маршрут (их сотнииз этих).Второе число - это позиция, которую координата занимает с точки зрения последовательности воздушного маршрута.Третий - это название исправления, 4-й и 5-й - сами координаты.

Лучший способ описать это было бы шоссе.Допустим, А1 - это шоссе.UBL, BUTRA, PAPRA и т. Д. - все это выходы.023, 024, 025 - это порядок, с которым вы столкнетесь с этими выходами (я увижу UBL после 22 выходов, так как это 23-й, затем BUTRA, 24, затем PAPRA, 25).

Однако, эти выходы ведут к новым шоссе, а не к городам.Например, выход UBL ведет на

A1 023 UBL 15.245197 104.865917
G473 006 UBL 15.245197 104.865917
R470 001 UBL 15.245197 104.865917
W1 018 UBL 15.245197 104.865917
W4 031 UBL 15.245197 104.865917
W5 013 UBL 15.245197 104.865917

Моя конечная цель состоит в том, чтобы, используя эти точки, найти кратчайшее расстояние между двумя городами, используя эти воздушные маршруты.Однако это не моя проблема.Я могу понять это, но я не уверен, какую структуру использовать для хранения этой вещи.Именно мой учитель программирования первым предложил, что мне понадобится какая-то структура для организации данных.

Я думаю ... поскольку у меня будут первые и последние доступные точки, для поиска по списку, захвата всех возможных "магистралей", к которым ведет эта точка, используйте что-то вроде A *найти кратчайший путь и ограничить количество ветвей, используя некоторые ограничения расстояния.Однако, как я уже сказал, мне неясно, какую структуру данных использовать.

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 28 марта 2012

Вы должны использовать пространственную структуру данных, такую ​​как PM1 Quadtree .

Вам также следует сравнить его с PM2 Quadtree и PM3 Quadtree , чтобы увидеть, какое из них лучше подходит для ваших ограничений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...