Сегодня: |
||||||||
Выбор и использование персональных навигаторов GPS |
||||||||
| Главная | | Описания | | Статьи | | Программы | | Загрузка | | Ссылки | | Разное |
Создание карт с автоматической прокладкой маршрута.
Появление функций создания карт с возможностью автоматической прокладки маршрута движения (роутинга) в редакторе GPSMapEdit явилось значительным событием в деле самостоятельного создания карт. Немаловажной причиной этого можно считать так же то, что автор компилятора cGPSmapper выложил к свободному скачиванию и использованию триал-версию компилятора с поддержкой всех атрибутов
прокладки маршрута - cGPSmapper Personal, что позволило многим владельцам навигаторов Garmin пользоваться такой интересной функцией в своих картах. В данной статье
будет рассматриваться вариант создания карт
с поддержкой автоматической прокладки
маршрута для навигационной программы -
В самом начале стоит немного объяснить, что такое
прокладка маршрута и в чём состоит разница в картах с ним и без него.
Автоматическая прокладка маршрута или как сейчас принято говорить - роутинг (от английского "routing"), что в данном контексте значит "движение по определённому(оптимальному) маршруту", как следует из названия, позволяет в автоматическом режиме проложить оптимальный маршрут от текущего местоположения до места, указанного пользователем. Причём маршрут прокладывается только по дорогам. Промежуточные точки
в маршруте так же поддерживаются. Это позволяет создавать довольно сложные маршруты, учитывающие все нюансы предстоящей поездки. Кроме этого, обычно есть механизмы ведения по маршруту, включая голосовые и визуальные предупреждения о предстоящих манёврах, перепрокладку маршрута в случае ухода с запланированного маршрута, расчёт времени и расстояния до конечной точки с учётом характеристик маршрута и пр. Разумеется, для того, чтобы такие возможности стали доступны, карты должны обладать соответствующими свойствами, позволяющими программе работать в таком режиме. Эти свойства содержатся в так называемом дорожном графе. Вот его то мы и попытаемся поэтапно создать.
Начальные требования к карте.
Рассмотрим обязательные требования к картам, в которые планируется добавить атрибуты дорожного графа. Сразу хочется сказать о том, что данные для прокладки маршрута всегда берутся только в самого подробного уровня детализации. Это аксиома. То есть дорожный граф должен обязательно быть на уровне с самой большой битностью. Для данной карты, конечно. Если граф содержится на более высоких уровнях, то он просто игнорируется.
Программа Навител Навигатор позволяет объединять карты в атласы. Это значит, что она может анализировать какая из имеющихся в атласе карт наиболее подходит для визуализации для конкретного местоположения и масштаба. Очень удобная функция. Более того, Навител Навигатор может прокладывать маршрут сразу через несколько карт, объединённых в атлас и содержащих дорожный граф. В том случае, когда в одном атласе обнаруживаются несколько карт с поддержкой прокладки маршрута, то данные для прокладки маршрута берутся из самого детального уровня той карты, которая есть для данного местоположения. Но для этого необходимо указывать места перехода с одной карты на другую. Об этом и о многом другом и будет рассказано ниже.
Данные для дорожного графа могут создаваться только для некоторых типов линий. А именно - для линий дорог. Ни точки, ни полигоны таких данных иметь не могут. Перечислю все типы линий, которые могут содержать данные дорожного графа. Для набора объектов Гармина не все типы действительны. Они отмечены минусом.
Обратите внимание, что некоторые типы дорог могут присутствовать только на картах для навигационной программы Навител Навигатор. Это видно по примечанию.
Теперь перейдём к одной из самых ответственных операций подготовки карты перед созданием дорожного графа - правильная стыковка узлов линий дорог в местах пересечений. Здесь следует запомнить одно простое правило - узлы дорожного графа (об этом чуть позже) могут быть созданы только в совпадающих узлах линий дорог. Совпадающими считаются те узлы, которые имеют одинаковые координаты или находятся друг от друга на расстоянии меньшем, чем половина шага текущей сетки генерализации. Ещё одним серьёзным моментом является ограничение на самопересечение линий. Причём самопересечением считается случай, когда начало и конец линии находятся в одних координатах. Это часто бывает, например, при отображении колец кругового движения. В этом случае следует разрезать такую линию на две части с помощью инструмента "Split Polyline".
Примеры самопересечений:
Поэтому при создании дорог лучше всего включать функцию "Stick to neighbours". В таком режиме при приближении курсор сам будет позиционироваться на ближайшем узле соседнего объекта.
Для полноценного восприятия карты необходимо чётко придерживаться разграничения дорог по их назначению. То есть не следует типы улиц, предназначенные для городов, присваивать загородным дорогам. И наоборот. Это позволит в некоторой степени автоматизировать процесс создания дорожного графа, так как редактор GPSMapEdit позволяет выполнить эту операцию.
Что ещё можно отметить? В первую очередь нужно внимательно проанализировать дорожную сеть карты и попытаться представить, как должны будут прокладываться маршруты по особо сложным участкам дороги. Особое внимание следует уделить развязкам, многоуровневым дорогам, дорогам, разделённым на части газоном или ограждением и пр. Всё можно будет исправить в процессе отладки дорожного графа, но лучше некоторые ситуации предусмотреть заранее. Но, как известно, знание приходит с опытом. В данной статье я постараюсь дать основную информацию по принципам создания дорожного графа в картографическом редакторе GPSMapEdit.
Прежде чем мы начнём, следует разобраться из чего состоят данные о дорожном графе.
Узлы дорожного графа
Как отмечалось выше, узлы дорожного графа
можно создать только в том случае, если в одних и тех же координатах есть два и более узла разных линий. Перед созданием узлов
дорожного графа следует включить специальный вид отображения карты -
Show Routing Nodes. В этом случае можно будет видеть, какие узлы соединены, а какие ещё нет. Причём количество состыкованных узлов можно будет оценить по цвету. Так
же цвет и размер узлов дорожного графа покажет
некоторые другие характеристики.
Примечание: Узлы дорожного графа
для
наглядности увеличены в три раза.
Для ручного создания узла дорожного графа нужно: 1. Выбрать инструмент - Edit Nodes; 2. Подвести курсор к пересечению дорог с совпадающими узлами линий; 3. Нажать правую кнопку мыши; 4. В контекстном меню выбрать команду - Connect to Nearest Nodes.
После этого (при включенном режиме Show Routing Nodes) в месте выбранного пересечения дорог появится специальная метка узла дорожного графа. Свойства такого узла можно посмотреть в окне его свойств - Node Properties (вкладка Routing). Здесь будет указана принадлежность узла линии к узлу дорожного графа (This node is routing graph node), номер узла дорожного графа (ID) и признак данного узла как внешнего (Is external node). О присутствующем здесь же окне ограничения поворотов "Turn restrictions" пойдёт разговор ниже.
Следует помнить, что автоматическая прокладка маршрута по определённой дороге будет возможна только в том случае, если начальный и конечный узел линии этой дороги будут помечены как участвующие в прокладке маршрута. Для этого нужно в свойствах этих узлов поставить галочку в пункте "This node is routing graph node". Интересной особенностью узла дорожного графа, расположенного на линии дороги и не соединённого ни с одной из других дорог, является то, что это является признаком для возможности разворота в этом месте. Иначе разворот по маршруту положится через ближайший узел дорожного графа.
Теперь стоит рассказать о так называемых внешних узлах дорожного графа. Если обычные узлы дорожного графа действуют только на самом подробном уровне детализации одной карты, то внешние узлы дорожного графа позволяют программе создавать маршруты сразу по нескольким картам одновременно. В этом случае программе достаточно обнаружить два или более узлов дорожного графа на разных картах с одинаковыми координатами и пометкой, что это внешние узлы дорожного графа. При этом маршрут будет продолжен с одной карты на другую. Это правило действует в пределах карт, объединённых в атлас. Если внешних узлов дорожного графа более двух, то маршрут будет проложен по той карте, которая имеет более подробный уровень детализации и данные о дорожном графе. Обозначить узел дорожного графа как внешний можно, отметит пункт "Is external node". Внешние узлы дорожного графа выделяются на карте несколько увеличенным размером (см. таблицу выше).
Если в контекстном меню пункт "Connect to Nearest Nodes" будет неактивен, значит в указанном месте нет двух и более узлов разных линий, имеющих одни координаты или расстояние между ними находится дальше, чем половина шага сетки генерализации. В этом случае следует или создать в нужном месте узел линии (Add Nodes) или переместить (Edit Nodes) ближайший узел линии дороги в координаты узла, с которым нужно установить связь.
Так же возможно и разорвать связь в узле
дорожного графа. Для этого в контекстном меню следует выбрать
"Disconnect Nodes". После соединения узлов линии в один
узел дорожного графа, при перемещении будут передвигаться все узлы линий, соединённые в данном узле
дорожного графа. При этом упрощается процесс последующего уточнения дорожной сети карты.
Классы дорог определяют статус дороги по отношению друг к другу. Совместно с данными скоростного режима, эти параметры позволяют гибко управлять возможностями прокладки маршрута. Так, например, если есть две дороги с одинаковыми характеристиками, но разным классом дорог, то маршрут будет проложен по дороге с наиболее высоким классом дороги (это поведение дополнительно регулируется настройками программы). Выбрать класс дороги можно в окне свойство объекта (Object Properties) на вкладке "Routing". Параметры задаются через выпадающее меню "Route class".
Всего имеется 5 градаций статуса дорог:
Примечание: В данном примере
линий использована дорога со скоростным
режимом до 90 км/ч (см. ниже).
Смысл статуса дороги становится понятным сразу, как только мы представим распределение автомобильных потоков. По центральным дорогам движение более активное. На них более качественное покрытие, больше полос. Поэтому по таким дорогам передвигаться более комфортно, чем по другим - более малым. Поэтому прокладка маршрута происходит исходя из проезда по более комфортной дороге. И таким критерием как раз и являются данные о статусе дорог. Основным критерием выбора статуса дороги может служить только знание реальной обстановки на данной дороге. Иногда малая дорога оказывается, по разным причинам, лучше для проезда, чем идущая рядом более крупная. Если дорога незнакомая, то тут лучше всего ориентироваться на её обозначение на растровых картах. Так же как и в случае с типами дорог, следует сохранять предложенное разделение по принадлежности к городским улицам и загородным дорогам.
Ниже выбора классов дорог, находятся пункты выбора ограничений движения транспорта. Самым востребованным пунктом, без сомнения, является указатель одностороннего движения - One way. Остальные пункты для наших стран пока ещё не столь актуальны, хотя все они так же учитываются при прокладке маршрута. Перечислю их все:
Скоростной режим.
Скоростной режим - важнейший параметр для построения маршрута. Поэтому к нему необходимо относиться соответствующим образом. Чем выше разрешённая скорость для конкретной дороги, тем выше её приоритет в процессе выбора маршрута движения. Скоростной режим вкупе со статусом дороги и дополнительными параметрами дают программе прокладки маршрута достаточно информации для прокладки наиболее оптимального маршрута. Выбор параметров скоростного режима происходит в том же окне, где определяются классы дорог. В выпадающем меню "Speed limit" можно увидеть достаточно богатый выбор:
Примечание: В данном примере линий, использована дорога со статусом 2 (см. выше).
В таблице даны приблизительные критерии выбора параметров скоростного режима. Они могут изменяться по ситуации. Обычно вопросов по недостатку вариантов нет.
Прежде чем начать задавать параметры классов и скоростного режима дорог, лучше всего переключить вид отображения карты -
Show Road Classes. Это приведёт к тому, что все линии дорог будут отображаться по разному, исходя из присвоенных им параметров класса и
ограничения скорости. Без этих атрибутов все дороги будут в виде серых линий. Дороги, имеющие эти параметры, будут выделяться цветом - для заданной скорости и толщиной линии - для классов дорог.
Ниже даны все варианты цвета в зависимости
от параметра скоростного режима.
Ограничение поворотов
Довольно интересной дополнительной возможностью описания свойств узлов дорожного графа, является указание на запрет поворотов. Дело в том, что очень часто возникает необходимость указать, какие именно маневры запрещено совершать в определённых местах дорог. Это касается дорожных указателей типа "Поворот налево запрещён", случаев, когда маршрут прокладывается по сложной дорожной развязке и в очень многих других случаях.
Эти параметры задаются в окне, где мы уже были когда рассматривали свойства узла дорожного графа - Node Properties (вкладка Routing). За выбор ограничений поворота отвечает поле "Turn Restrictions". На нём в виде схем замечательно видно все возможные варианты движения для конкретного узла дорожного графа. Для указания маневра, который запрещено выполнять, следует всего лишь отметить его галочкой. При этом изменится цвет рисунка-схемы. Для разрешённых маневров он будет светло-зелёным, а для запрещённых - светло-красным.
Для внешнего узла дорожного графа параметры ограничения поворотов игнорируются. Разворот в таком месте будет выполнен только в случае, когда в текущем атласе нет других карт с внешними узлами дорожного графа, имеющими одинаковые с данным внешним узлом дорожного графа координаты.
Следует сказать, что узлы дорожного графа, содержащие данные с ограничениями поворотов, имеют свой особый признак - красную окантовку. Поэтому их довольно легко определить на карте
(см. выше).
Закрепление практикой
Вот мы и рассмотрели все основные составляющие дорожного графа. Теперь пришла пора заняться практикой. Как пример, давайте попробуем создать дорожный граф для одного типичного случая. Он должен будет содержать как можно большее количество атрибутов, которые были перечислены выше. Ну и конечно такая, которую я достаточно хорошо знаю. Думаю для этого нам вполне подойдёт одна развязка.
Как видно на космическом снимке, это мост с довольно стандартными элементами движения. Для верности подгрузим имеющиеся треки.
Теперь обычным способом нарисуем карту, содержащую все необходимые нам объекты. Получится приблизительно вот так.
Обратите внимание, что большинство дорог я нарисовал одной линией, и только две - двойной. Именно эти две дороги
в нижней части карты имеют разделительную
полосу в виде газона. Это сделано в первую очередь для наглядности. Так же на этом этапе создания карты необходимо указать признак "Has direction" для односторонних дорог. При присваивании атрибута односторонней дороги очень внимательно смотрите за протяжённостью этого сегмента дороги. Как правило, односторонние участки дорог, особенно такие, как отображены в нашем примере, непродолжительны. В местах стыка односторонней и обычной дороги необходимо обязательно разрывать линию с помощью инструмента "Split". С этого места работаем только над созданием дорожного графа. В первую очередь расставим классы дорог. Очевидно, что главными в данном случае являются три дороги. Они выделяются, так как им присвоен соответствующий тип.
Переключаемся на отображение классов дорог.
Серые линии дорог подтверждают, что классы нашим дорогам ещё не присвоены. После операций по присваиванию статуса каждой из дорог, по описанных выше технологии, вид карты несколько меняется.
По данному виду можно сказать, какие из дорог являются приоритетными в плане прокладки маршрута, а какие нет. По красному цвету дорог видно, что по умолчанию у дороги выставлена допустимая скорость как для пешехода - 5км/ч. Это неправильно. В нашем случае у всех имеющихся дорог следует выставить максимально допустимую скорость. Согласно ПДД, в населенных пунктах она должна быть не более 60 км/ч. Сделаем это. Единственное, что хочу добавить - присвоение атрибутов класса дорог и скоростных ограничений возможно делать сразу для нескольких выделенных дорог. В этом случае необходимо, удерживая Shift, выделить нужные дороги и в контекстном меню выбрать пункт "Modify/Routing", а далее по выбору "Speed Limit..." или "Route Class..."
Теперь пришла пора создания узлов дорожного графа. Напомню, что в местах пересечений дорог, должны быть узлы с одинаковыми координатами. Там, где дороги не соединяются, как например в нашем случае, когда горизонтально расположенная дорога проходит под мостом, создавать узлы не стоит. Немного приоткрою завесу тайны. Теперь уже можно. Операции присвоения классов дорог и узлов дорожного графа очень удобно делать в автоматическом режиме.
Для этого нужно выбрать команду "Tools/Generate Routing Nodes/at Coinciding Nodes of Polylines". Я специально не упоминал о ней раньше, чтобы вы могли чётко представлять себе значение определённых терминов, а так же на что необходимо обращать внимание при возникновении ошибок создания и прокладки маршрута. В данном случае будет вполне оправданно воспользоваться именно этим способом.
Не забываем переключиться в режим отображения узлов дорожного графа - Show Routing Nodes.
Так. Вот и я ошибся. Обратите внимание на цвет узлов дорожного графа. Синий цвет означает, что в этих местах нет соединения с другой линией и данный узел является конечным. Те узлы дорожного графа, что расположены по краям карты являются конечными на самом деле, и к ним претензий нет. А вот с двумя узлами явно что-то не то. Первый, это съезд с моста направо возле гаражей, второй - левая дорога возле канала. Там никак не должно быть синих узлов дорожного графа. Давайте посмотрим в чём проблема.
Так, всё ясно. В первом случае причиной проблемы является отсутствие узла на линии в месте соединения улиц, а во втором несовпадение координат узлов двух линий. Это исправить достаточно легко. В результате всё получается как надо. Скриншот не привожу, так как и так всё понятно.
Кажется всё сделано верно. Однако, уверяю вас, маршрут в некоторых случаях будет прокладывается неправильно. Резонный вопрос - где именно и почему. Для получения ответа на этот вопрос давайте посмотрим на некоторые участки нашей карты и представим, как может прокладываться маршрут в нынешней ситуации. Вот и пример.
Если внимательно проанализировать ситуацию, то станет ясно, что такие маневры сейчас разрешены нашим нынешним дорожным графом.
Или вот ещё пример.
Кроме этих ошибок , на данной карте можно найти ещё не одну подобную возможность неправильной прокладки маршрута. Не будем спорить, насколько вероятны данные случаи. Факт тот, что нынешний дорожный граф содержит ошибки. Поэтому пришла пора вспомнить о возможности применения ограничения поворотов. Так как всё делается по аналогии, то я покажу только один случай применения данной возможности. Остальные производятся точно так же. Возьму случай, из первого примера, средний узел дорожного графа с ошибкой. Там, где нарисованы два ошибочные направления движения. Для наглядности я покажу все варианты из поля "Turn restrictions". Так оно выглядит сейчас.
Как вы уже наверняка заметили, программа уже выделила как невозможные те варианты, которые определяются наличием у линий признака направления дороги. Это очень облегчает работу с программой. Теперь сделаем необходимые корректировки запретов.
А так то же поле выглядит после указания необходимых ограничений.
Как говорилось ранее, узлы дорожного графа, содержащие данные об ограничениях поворота, внешне отличаются наличием красной окантовки.
Всё. Теперь можно сказать, что данная карта содержит данные о дорожном графе. Несмотря на то, что в данном случае все дороги имеют одинаковую разрешённую скорость движения, маршрут будет строиться по тем дорогам, которые имеют больший статус. Если по различным причинам нужно, чтобы по некоторым дорогам маршрут проходил только в случае крайней необходимости, можно немного снизить разрешённую скорость. При этом в процессе создания маршрута будет произведён анализ на наличие наиболее скоростных дорог, что в свою очередь приведёт к исключению такой дороги из маршрута. Таким образом, умело манипулируя классом и допустимой скоростью дорог, можно добиться очень хороших результатов при создании карт с возможностью автоматического создания маршрута.
Проверка дорожного графа
Перед компиляцией карты в конечный формат, всем обладателям навигаторов Garmin необходимо проверить карту на наличие специфических ошибок. Для этого в редакторе GPSMapEdit существует специальный инструмент. Для его вызова необходимо выбрать Tools/Verify map... Появится следующее окно:
В верхней части окна можно видеть четыре критерия проверки на возможные ошибки. 1. Check polygons for self-intersection (Проверка полигонов на самопересечения). Опасность самопересекающихся полигонов в непредсказуемом результате их вида после нарезки полигонов в процессе сохранения карты в конечный формат. Наиболее опасна эта ошибка для крупных полигонов.
2. Check routable polylines for self-intersection (Проверить линии дорожного графа на самопересечения). Формат Garmin не позволяет осуществлять прокладку маршрута, если имеются самопересекающиемя линии. Поэтому в процессе работы компилятора cGPSmapper будет выдана соответствующая ошибка и процесс компилирования будет остановлен.
3. Find misaligned routing graph nodes (Найти некорректные связи узлов дорожного графа). Обнаружение случайно разорванных узлов дорожного графа позволит избежать проблем с некорректной прокладкой маршрута.
4. Find too close nodes (<5.4m) (Найти близкорасположенные узлы дорожного графа (менее 5,4м). Дело опять касается формата Garmin. Нахождение узлов дорожного графа на расстоянии менее 5,4м друг от друга считается ошибкой. Видимо, это каким-то образом связано с минимальным расстоянием узлов сетки генерализации и есть риск получить одинаковые координаты для нескольких узлов дорожного графа, что, конечно, будет ошибкой.
После выполнения проверки на выбранные виды ошибок (Start), в полях Result появится перечень обнаруженных ошибок. При двойном клике на строке ошибки или выборе строки ошибки и нажатии Locate, автоматически будет вызван тот участок карты, на котором обнаружена ошибка. Для устранения ошибки окно поиска ошибок нужно будет закрыть. После устранения ошибки и последующего открытия окна Verify map..., перечень ошибок для данной карты останется. Строки с исправленными ошибками будут отмечены как устранённые.
Тестирование дорожного графа
Начиная с версии GPSMapEdit 1.0.37.2, в программе появился отладчик дорожного графа, который имитирует прокладку маршрута примерно так, как это происходит в конечном устройстве. Вызвать отладчик можно через "Tools/Test Routing Graph" или специальной кнопкой в поле инструментов. В результате появится окно:
Здесь возможно использовать следующие функции:
1. Rebuild All Routes (Создать вновь все маршруты). Часто, при отладке маршрута, требуется проверить как будет строится маршрут с учётом произведённых поправок. Чтобы не указывать вновь его точки начала и конца, необходимо просто нажать эту кнопку. Маршрут будет пересчитан по новой.
2. Delete All Routes (Удалить все маршруты). Стандартная функция удаления созданных ранее маршрутов.
3. Enable multiple routes (Включить режим многоэлементного маршрута). Если эта функция включена, то можно имитировать построение маршрута, содержащего промежуточные точки. В противном случае тестовые маршруты смогут проходить только через две точки - начало и конец.
4. Find shortest (fastest) path (Найти кратчайший (скорейший) путь). Указание критерия построения маршрута с учётом данных дорожного графа. Обычно используется построение скорейшего маршрута.
5. Vehicle: (Средство передвижения:) - Выбор вида средства передвижения. Обычно - Автомобиль/Мотоцикл.
6. Avoid toll (unpaved) roads (Избегать платных (труднопроходимых) дорог). Указание критерия построения маршрута с учётом данных дорожного графа.
Так же есть инструменты, позволяющие загрузить и сохранить файлы с маршрутами, а так же показать маршрут во весь экран. Для этого предназначены интуитивно понятные кнопки с верхней правой части окна отладчика.
После указания на карте первой и второй точки тестируемого маршрута, на карте появляется линия (цвет настраивается в "Tools/Options.../View/Routes", показывающая как, исходя из существующих данных дорожного графа, будет проложен маршрут. Точки маршрута будут показаны в виде флажков.
Заключение
Сохранение карты в формат
программы Навител Навигатор происходит без
каких-либо нюансов. А вот владельцам
навигаторов Гармин следует не забыть
поставить галочку в свойствах карты на
вкладке cGPSmapper - Enable Automatic Route. Ещё раз
напомню, что чтобы ведение по маршруту заработало в
Гарминах, карты обязательно нужно
компилировать с помощью cGPSmapper версии Personal. Дополнение 1. Атлас- основные понятия.
В последнее время мне стало поступать много вопросов, связанных с созданием карт, предназначенных для использования в составе атласов. Этот момент выше затрагивался, но, видимо, не в необходимой степени. Поэтому я решил осветить этот вопрос несколько подробнее.
В первую очередь хочу ещё раз подчеркнуть то, что при создании маршрута между несколькими картами в составе атласа, его прокладка возможна лишь через внешние узлы роутинга. Они потому и называются внешними, потому что позволяют "перескакивать" с карты на карту при автоматической прокладке маршрутов. Простые узлы дорожного графа такими свойствами не обладают. Они действительны только на той карте, на которой они расположены.
При создании внешних узлов дорожного графа следует так же соблюдать одно обязательное условие - координаты пар таких узлов обязательно должны иметь одинаковые координаты. Строго говоря, допускается отклонение в координатах, равное шагу сетки генерализации для нулевого уровня детализации более подробной карты.
Для простоты, хочу показать основные принципы работы атласа из двух карт на простейших примерах.
Итак, у нас есть три карты. Две из них - подробные карты двух городов, третья - карта, покрывающая территорию между этими двумя городами. Назовём последнюю - обзорная карта. Изобразим это таким вот образом:
Извините, не художник. :) Но думаю понятно, что в данном случае рассматриваются только уровни детализации карт, которые содержат дорожный граф, т.е. самые детальные (Level0). Так же я попытался схематически изобразить, что карты городов более детальны, чем верхняя (обзорная) карта. Для того, чтобы в дальнейшем рассматривать варианты прокладки маршрута, предположим, что нам надо проложить маршрут из точки 1 в точку 2. Они показаны на верхней карте. В том состоянии, в котором сейчас находятся все три карты маршрут будет проложен так, как показано красной линией на рисунке ниже.
Так как внешних узлов дорожного графа в показанных картах нет совсем, то при прокладке маршрута, он будет прокладываться по той карте, которая сейчас видна. В нашем случае это обзорка. Маршрут построен, но без учёта гораздо более подробных проездов, которые есть на картах городов.
Теперь выставим на картах внешние узлы, но так, чтобы их пары не совпадали по координатам и попробуем ещё раз проложить тот же маршрут:
Сами внешние узлы условно обозначены жёлтыми прямоугольниками. Как видно, даже при наличии внешних узлов, маршрут проложился всё так же через обзорную карту. Как вы уже догадались, всему вина - несовпадение координат внешних узлов дорожного графа. При этом маршрут как бы не может перескочить с карты на карту, т.к. его не может принять другой внешний узел на другой карте. Он находится совершенно в других координатах.
Теперь расставим всё как положено.
Теперь, если смотреть по обзорной карте, видно, что маршрут построен с учётом проездов, существующих на картах городов, хотя их нет на самой обзорной карте. Соответственно, точки переходов между картами в атласе расставлены правильно.
Помимо вопросов про значение внешних узлов и суть атласов, часто задаётся вопрос про достаточность и места простановки внешних узлов на самостоятельно изготовленных картах. Часто создатели карт населённых пунктов предпочитают ставить внешние узлы дорожного графа в конце дорог, выходящих из населённых пунктов. Получается примерно так, как схематически показано на приведённых выше рисунках. Очень часто такой подход оказывается вполне достаточным и обеспечивающем полностью корректную прокладку маршрутов в атласе.
Однако бывают случаи, когда приходится выставлять дополнительные внешние узлы. Для определения необходимости и места выставления внешних узлов надо в первую очередь представить себе возможные варианты прокладки маршрутов в атласе. Именно в атласе, а на просто на одной карте. Чаще всего такие случаи бывают, когда стыкуются карты разных авторов.
Проще всего показать один из таких случаев на примере. Поэтому вот один из тех случаев, с которыми столкнулся я в процессе создания свих карт. В этом случае карты были мои и я быстро разобрался в чём дело.
На скриншоте показана карта города. Сам город расположен правее. Левее - выезд из города. Выше и ниже пригородные дороги, ведущие в дачные кооперативы. Внешний узел один. Он виден в левой части скриншота. При прокладке маршрута через обзорную карту, он прокладывался несколько странно. Дело в том, что в то время дороги с названием "Кудемское шоссе" на карте города ещё не было. Но она была на обзорной карте. Так же на обзорке была основная трасса с внешним узлом, совпадающим с внешним узлом на карте города. В этом случае, при прокладке любого маршрута из города на Кудемское шоссе, маршрут прокладывался минуя перекрёсток через внешний узел, затем обратно по той же дороге до перекрёстка и далее уже по шоссе вёл корректно.
В то время я не собирался делать карту города вместе с окрестностями. Поэтому мной было принято решение о введении дополнительного внешнего узла на перекрёстке дорог. После этого прокладка маршрута стала корректной.
Разбирая детальнее этот случай можно найти ещё несколько вариантов выхода из положения - укоротить трассу до перекрёстка, ввести небольшой участок шоссе со своим внешним узлом и пр. Но, по некоторым причинам, мне на тот момент было наиболее удобно воспользоваться возможностью, с помощью введения ещё одного внешнего узла дорожного графа, исправить сложившуюся ситуацию с некорректной прокладкой маршрута.
Автор: Владимир
Выложено: 20.12.2006 Обновление 1: 13.09.2007 Обновление 2: 15.04.2008
|