Проект навигации карты, Как дорожные данные обычно, хранил/представлял?

Указатель NULL - это тот, который указывает на никуда. Когда вы разыскиваете указатель p, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p является нулевым указателем, местоположение, хранящееся в p, является nowhere, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception.

В общем, это потому, что что-то не было правильно инициализировано.

16
задан Dominique Fortin 27 March 2017 в 17:50
поделиться

6 ответов

Предыдущие ответы все обращаются к системам GIS. Это не то, как работают PNDs (Портативные Навигационные приборы). Они слишком просты запустить desktop/workstattion программное обеспечение GIS уровня.

Вместо этого PNDs хранят информацию в значительной степени как предполагаемый Simucal. Дороги разломаны на сегменты. Это сохраняет модель намного более простой. В сегменте не изменяются атрибуты как максимальная скорость.

Для планирования целей дорожные сегменты действуют как края в графике. Для каждого оба хранятся узлы, поступая и исходящие узлы. Планирование затем сделано с помощью измененного* алгоритм. Вес ребра обычно является не расстояниями, но оцененное время прохождения (или в случае TomToms, фактическое, измеренное время).

Дорожные сети обычно hiearchical, тем не менее, и нормальный* медленный начинающий. Когда перемещение от одного города до другого,* потратит чрезмерную проверку количества времени через город запуска. Однако мы, которых знают люди, лучше использовать магистрали при путешествовании на большие расстояния. Это - то, для чего они создаются. PNDs аналогично предпочитают магистрали. И поскольку магистрали намного более редки, это сохраняет большую память.

Другая оптимизация вперед и обратный поиск; Вы планируете с обеих сторон к некоторой срединной точке. Большое преимущество этого состоит в том, что, если Вы принимаете неправильный оборот, можно искать снова от новой стартовой точки. Дерево обратного поиска неизменно, поскольку Ваше место назначения не перемещалось.

8
ответ дан 30 November 2019 в 22:24
поделиться

Точным путем это хранится, зависит от формата; существует "куча" различных форматов GIS. GDAL является превосходной свободной библиотекой для чтения (почти) всех их.

Обычно дороги будут сохранены в файле как "слой строк", который является рядом ломаных линий с приложенными метаданными. Таким образом, каждая дорога будет иметь серию вершин, и в зависимости от качества Ваших данных она будет, надо надеяться, иметь информацию таким как, являются ли они односторонними или нет, оценки скорости и своего рода идентификатор соединения.

Да, они обычно преобразовываются в ориентированного графа для решения. Вес ребра может быть расстоянием или, более полезно, время, потраченное для перемещения того края.

Решение быстро является компромиссом между предварительным вычислением, и пространство памяти (встроенное устройство может требовать другого выбора здесь к ПК). Существуют некоторые очень интересные алгоритмы там для того, чтобы сделать это.

2
ответ дан 30 November 2019 в 22:24
поделиться

Если Вы хотите, чтобы некоторый код посмотрел на получить некоторое представление о том, как приложения маршрутизации работают, попытайтесь взглянуть на некоторые приложения маршрутизации, связанные от Wiki openstreetmap.org. Navit и Gosmore являются и открытым исходным кодом и довольно легкий настроить в частности.

Nic Roets, разработчик приложения Gosmore записал интересное сообщение о своем выборе для представления дорожно-векторных данных, которые могут представлять интерес для Вас также.

Если Вы хотите взглянуть на Gosmore в действии, это - бэкенд yournavigation.org, направляющего веб-сайт на основе openstreetmap данных.

2
ответ дан 30 November 2019 в 22:24
поделиться

Я не знаю специфических особенностей о единицах системы навигации, но в стандартном мире GIS, данные карты хранятся в основном как набор полигонов, строк и точек, каждый описанный его координатами (и используемая проекция и некоторые другие параметры). Например, один из наиболее распространенных форматов, файлов форм, описан здесь, , и основанный на базе данных стандарт формата здесь .

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

Для несколько другого подхода к устройству хранения данных, проверьте OpenStreetMap

6
ответ дан 30 November 2019 в 22:24
поделиться

Для улучшенной скорости рисования за счет большего количества устройства хранения данных и ограниченного разрешения, много приложений будут использовать растровый формат, на который геоссылаются, такой в качестве GeoTiff.

, Учитывая довольно настойчивый комментарий Zich ниже того

"Данные находятся в векторе во всех Системах навигации без исключения!"

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

На самом простом уровне карта и компас являются системой навигации. Замените карту маленьким экраном, масштабируемую растровую карту и GPS, и у Вас все еще есть система навигации. Большая часть низкого и среднего конца морские системы навигации все еще прокладывает себе путь с диаграммами, представляющими береговую линию и морское дно и GPS, чтобы дать Вам местоположение и эхо, звучащее для глубины.

В более усовершенствованном конце спектра, автономные автоматизированные системы навигации такой как Марс система навигации Ровера генерирует модели DTM на лету как основание для навигации малой дальности, и спутник собрал демократов для более длительной навигации диапазона.

, Чтобы предположить, что вся работа систем навигации как потребитель Garmin или устройства Tom Tom является довольно наивным предположением. FWIW, много современных устройств Garmin также включают основанные на растре данные DEM , где недорогой GPS heighting может быть дико неточным.

-1
ответ дан 30 November 2019 в 22:24
поделиться

Mohammed: Хорошо, я не вдавался в большое количество подробностей там, потому что исходный вопрос казался довольно удобным на том аспекте. Если Вы не знакомы с теорией графов, это - вероятно, хорошая идея сделать немного чтения на нем теперь - Википедия хорошо для введения.

То, что обычно происходит, - то, что в данных GIS дороги хранятся как ломаные линии с приложенными метаданными. Это хорошо для отображения их на экране и т.д., но смочь переместиться по ним необходимо знать, которые подключены друг к другу. Таким образом в метаданных обычно существует идентификатор узла для каждого конца дороги, таким образом, можно сказать, что "это - дорожный сегмент 457, это идет от узла 332 к узлу 667". Таким образом, когда Вы читаете в данных GIS, Вы создаете представление их как ряд узлов, соединенных дугами (т.е. график).

Если те метаданные, не доступные, Вы могли бы вывести его, от которого дороги имеют то же, запускают/заканчивают координаты (дело обстоит так с некоторыми not-so-wonderful данными GIS). "Направленный" бит просто означает, что дороги имеют направление - некоторые из них могут быть перемещены вперед в любом направлении, но другие являются только односторонними.

Типичный алгоритм для нахождения пути через диграф является алгоритмом Dijkstra; различные производные используются на практике. В основном это включает перемещение от узла до узла вдоль дуг графика, таким образом, Вам нужны соответствующие структуры данных для поддержки этого.

Надежда, которая помогает...

2
ответ дан 30 November 2019 в 22:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: