Карта jnx garmin чем открыть
Теперь, как я делаю карты. Как вы уже наверное поняли мы будем делать тестовые jnx файлы. Т.е. они могут быть использованы на всех приборах с поддержкой BE, но эти приборы должны быть отучены от проверки тестовых jnx, т.е прошиты патченой прошивкой.
Расскажу на примере склеенного атласа арбалет для московской области с привязкой для Ozi Explorer.
Но для начала одно замечание. JNX – это просто контейнер. В нем хранятся карты, в виде кусочков (тайлов), привязка этих кусочков, другая информация (организация тайлов по масштабам и т.д.) Так вот тайлы в jnx хранятся в формате jpeg. Поэтому, если вы хотите получить хороший результат, я вам советую использовать для конвертации в jnx карты в формате jpeg, или tiff. Если исходная карта будет, скажем, в формате gif, то результат будет «мыльным». От этого никуда не уйти, т.к. преобразование gif – jpeg не может пройти без потерь. И дело тут не в конверторе jnx. Так что имеете ввиду.
Итак. Для начала большую, склеенную, карту нам надо разбить на части, поскольку все, известные мне, конвертеры в jnx имеют ограничение на размер входящего файла. Точного ограничения я не знаю. Но по моим экспериментам что-то около 30-40 мегабайт, может быть чуть больше. 64 разрядные версии имеют гораздо меньшие ограничения.
Режу файл я программой Global Mapper.
- Открываем наш исходный файл (нужно открыть файл привязки *.map, карта подтянется автоматически)
- Жмем меню Tools – Configure – закладка “Projection”
- Проверяем, чтобы там стояло Projection – Geographic (lat/lon), Datum – WGS84
- Жмем ОК, если на предыдущем шаге вы что-то меняли, то карта скорее всего исказится, но это не страшно.
- Жмем меню File – Export Raster and Elevation Data – Export GeoTiff
- Устанавливаем: File type – 8 bit Palete Image, Always Generate Sqare Pixel – снимаем, Save map layout – устанавливаем, Generate TFW – устанавливаем. Generate PRJ – устанавливаем
- Если карту надо разрезать, то переходим на закладку Gridding
- Устанавливаем: Specify number of Rows and Columns, думаем, насколько у нас большая карта и устанавливаем на сколько колонок и строк мы ее хотим разбить.
- Жмем ОК, указываем куда сохранять .
- Идем пить чай, пиво, водку, т.к. процесс может занять от нескольких минут до нескольких часов (в зависимости от размера карты).
Теперь собственно конвертация в jnx.
Я использую программу Mapc2Mapc http://www.the-thorns.org.uk/mapping/ (http://www.the-thorns.org.uk/mapping/)
Она платная, что-то около 500 рублей, через PayPal. Но ей можно пользоваться и бесплатно, если через командную строку. Ключ для конвертации -jnx Все нужные настройки, при бесплатном использовании, устанавливаются так же как и в платном варианте - через интерфейс программы (т.е. вы запускаете программу, настраиваете ее, потом закрываете и используете через командную строку).
Устанавливаем Mapc2Mapc. Заходим в настройки (меню Edit – Preferences), проверяем настройки:
- tile width - 1024 x 1024
- jpeg quality - 4 jpeg subsampling – 4 (при этих установка будет максимальное качество и файлы не будут чрезмерно большими)
- Jnx scale – 300 (этот параметр отвечает за масштаб, с которого карта будет появляться на экране прибора, значения в нем какие-то непонятные, как лучше регулировать масштаб я расскажу позже)
- make jnx thumbnails – установлено (в jnx файле, в отдельном слое, автоматически будет формироваться превьюшка вашей карты, для более крупных масштабов, это удобно, но не всегда нужно, к тому же, если качество исходного файла не высокое, таких много на поехали орг, то качество превьюшки будет ужасное, проверить это можно только на практике)
- advanced garmin tile control – установлено
- в меню "Edit" - "Jnx Info Preferences" можно установить параметры для группы карты. Название группы карт надо писать только английскими буквами! Если написать по русски, то прибор просто оставит группу без названия.
Теперь немного про группировку карт. Файлы jnx могут быть сгруппированы. У каждой группы должен быть ID (цифровой, начинается с нуля) и текстовый заголовок (его вы будете видеть в приборе). Понятно, что у всех файлов, принадлежащих одной группе должен быть одинаковый ID и заголовок.
Совет от _Алекс -
"Нюанс при работе с программой mapc2mapc на Windows7(64) во избегании ошибки: "не могу прочитать. ", "нет доступа к файлу. "
Директорию с подлежащими конвертации ххххх.tif и ххххх.tfw предлагаю размещать по адресу:c:\Users\ИмяПользовател я\AppData\Local\*.*"
Карты от веломанцев:
timka: "Предлагаю для скачивания карту Пензенской области генштаб с поехали.орг в формате JNX. Карта в трех слоях - 1км, 2км и 5км. Каждый слой - в отдельном JNX файле.Пензенская Обл ГенШтаб.zip (http://narod.ru/disk/8683681001/Пензенская Обл ГенШтаб.zip.html) "
Semenich: "2км Ленобласти. Делал уже под последнюю прошу Орегона, все работает, выглядит вроде неплохо, если что не так пишите, поправлю.
Выкладываю для скачивания: http://depositfiles.com/files/oeii9qz8f (http://depositfiles.com/files/oeii9qz8f)
http://letitbit.net/download/92214.9. bl2km.jnx.html (http://letitbit.net/download/92214.95ef94b49d2cfd09d435cb782804/LenObl2km.jnx.html)
http://vip-file.com/downloadlib/8528. LenObl2km.html (http://vip-file.com/downloadlib/8528939167910175676-92214.95ef94b49d2cfd09d435cb782804/LenObl2km.html) "
Как мы уже писали, спутниковые снимки формата .jnx можно создавать прямо в программе SAS Планета и теперь расскажем об этом поподробнее.
Для начала скачиваем программу SAS Планета, ранее создание было возможно только в ночной сборке а теперь и в последней стабильной версии 160707. Распаковываем и запускаем.
Выбираем интересующий нас участок.
Выделяем необходимый участок.
Загружаем этот участок в необходимых масштабах, это будет 11, 13, 19. Масштабы выбираем в зависимости от качества которое нам нужно.
После загрузки нажимаем операции с выделенной областью и выбираем предыдущее выделение.
Переходим на вкладку Экспорт и выбираем JNX растровая карта для Garmin. Здесь выбираем масштабы и шкалу при которой будет отображаться наш закачанный масштаб. Не забываем проверить тип карты, в нашем случае это Google maps.
Так как наиболее детальная картинка нужна на максимальных приближениях, выбираем для шкалы от 20 до 300 метров масштаб 19. В этом диапазоне будет детализация масштаба 19.
Для уменьшения размера файла можно использовать масштаб 18, если детализация подходит под ваши задачи. Отрисовка карты в навигаторе будет также быстрее.
От 300 метров и до 5 км загружаем масштабы 11 и 13, так как в этом диапазоне детализация не важна.
Важно знать:
Левый пример, навигатор будет отображать карту от 20 до 120 метров с максимальной для свой шкалы детализацией.
Правый пример будет отображать от 20 до 300 метров но промежуточные шкалы (например 120 метров на навигаторе) будут отображаться на навигаторе немного размыто.
Изготовление нескольких файлов
Для того чтобы отображение было максимально быстрым без потери детализации и при этом поместить всю шкалу навигатора (или большую ее часть) необходимо сделать 2-3 файла с картой, например от 20 метров до 1,2 км необходимо 2 файла сделанные с такими параметрами:
1 файл будет отображать шкалу от 20 метров до 120, второй от 200 метров до 1,2км.
Не забудьте сгруппировать эти файлы по одному ID, чтоб включать и выключать одновременно.
Использовать масштаб 19 на шкале от 300 метров и больше не стоит, так как карта будет большого размера и ужасно тормозить.
Кстати говоря такой проблемы с «тормознутостью» нет если конвертировать через программу MAPC2MAPCNET, там однослойная карта 19 масштаба, работает достаточно быстро даже если сделать включение карты на 3 или 5 км.
Выбираем место куда сохранить карту.
Далее выбираем вкладку «Дополнительные операции»
Название карты – можете изменить на более подходящее.
Наименование — также можно изменить на свое.
Тип снимка (ID) – если хотите чтоб карта отдельно включалась от «подписочных» карт BirdsEye, поставьте произвольное число, например 20, в дальнейшем таким образом можно группировать свои карты.
Версия JNX – если необходима сортировка отрисовки карт, выбираем нужное значение для версии 4, если нет, оставляем как есть версия неважна.
Параметр сжатие можно оставить как есть.
После всего нажимаем кнопку «Начать»
В указанной папке появится готовый JNX файл, который сохраняем в папку BirdsEye навигатора (которая, в свою очередь, находится в папке garmin).
Незабываем что созданные самостоятельно файлы можно сохранять только в навигаторы с пропатченной прошивкой, в противном случае навигатор не загрузится или выдаст ошибку.
Вот так выглядит только что созданная карта в самом навигаторе.
Работа jnx созданных с помощью SAS Планета была опробованная на Oregon 450 и Dakota 20, навигаторы без проблем прочитали файлы и отобразили спутниковые снимки, но есть также небольшая проблема, некоторые небольшие области могут не отображаться, такая проблема была зафиксирована по краям или углам карты особенно это заметно на карте маленького размера, поэтому необходимую выделенную область лучше взять с запасом. В остальном нареканий на работу нет.
Как видно спутниковые снимки в формате jnx сделать стало очень легко, теперь основное время уйдет на загрузку нужной области.
Для этого потребуется установка специальной прошивки, которая может быть, установлена только на некоторые модели навигаторов Garmin.
Для начала качаем последнюю прошивку (версия 6.60 на 06,02,14) с сайта Garmin, и сохраняем ее на компьютере.
Теперь необходимо скачать специальный патчер. Последнюю версию можно взять здесь. Список поддерживаемых устройств. Убедитесь что ваш прибор поддерживается программой.
Запускаем и выбираем файл который будем патчить.
Полученный файл необходимо переименовать в gupdate.gcd. Подключаем навигатор к usb ( в режиме съемного диска) и сохраняем файл, лучше всего на съемный диск в папку Garmin.
После этого необходимо отключить от usb, навигатор выключится и включить его. Прибор сам найдет прошивку и если она в порядке обновит себя. Дождитесь окончания прошивки и после этого вы можете загружать в свой навигатор самодельные карты формата jnx.
Если не хотите возится, можете скачать уже проверенную пропатченную последнюю прошивку 6,60 для навигатора Oregon 450.
Предыдущие пропатченные версии: 6.40.
Несколько важных советов
При прошивке рекомендуется удалить файлы jnx, но это необязательно.
Всегда располагайте файлы jnx на карте памяти, чтоб можно было их удалить, если вдруг случайно вы обновились не патченой прошивкой или загрузили в не пропатченый навигатор.
Перед прошивкой проверьте, чтоб аккумулятор был заряжен.
Если версия прошивки совпадает с версией, установленной в навигаторе, вам необходимо в патчере немного изменить ее номер, поставьте птичку Adjust firmware version number by и установите единичку.
Не забывайте, что установка такой прошивки автоматически лишает гарантии на устройство, и все это делается на свой страх и риск.
Если испытываете какие либо трудности или вопросы, напишите в комментариях.
Файлы в формате JNX используются в устройствах Garmin для показа спутниковых карт, доступных через подписку BirdsEye. В навигаторах эти файлы располагаются в папке Garmin\BirdsEye на внутреннем диске или SD-карточке.
JNX - так называемый тайловый формат, то есть большое растровое изображение в карте разбито на меньшие прямоугольные части для ускорения показа навигатором.
Поддержка карт JNX имеется в следующих устройствах: Alpha 100, Astro 320, Colorado 300/400, Dakota 10/20, Edge 800, Etrex 20/30, GPSMAP 62/78, Montana 600/650, Oregon 200/300/400/450/550, Rino 610/650/655.
Существенным ограничением формата JNX является жесткая привязка карт к устройству.
Результаты исследования
Формат JNX почти полностью исследован (за исключением части блока служебных данных загрузчика, которой можно вполне пренебречь при создании собственных карт).
Разработан набор утилит как для преобразования растровых карт в формат JNX, так и для обратной конвертации.
Хотя файлы в формате JNX содержат код привязки к устройству, известны два способа использования собственных карт JNX в навигаторах Garmin.
Первый способ.
Можно пропатчить прошивку устройства таким образом, чтобы снять ограничение на количество показываемых демонстрационных карт и их площадь. Патчер можно скачать отсюда (последняя версия - 3.80 от 03.05.2019; список изменений, на английском; список поддерживаемых прошивок).
Инструменты.
Последние версии программы MAPC2MAPC поддерживают сохранение карт в формате JNX. Автор MAPC2MAPC также сделал программу mobat2jnx для преобразования сохраненных тайлов в формате OSMTracker Tile Storage (можно сделать в Mobile Atlas Creator) в JNX.
Кроме того, имеется работающий из командной строки конвертер map2jnx, основанный на GDAL, который можно использовать для преобразования файлов в формате GeoTIFF и других в карты JNX. Последняя версия конвертера устанавливается вместе с программой QLandkarte GT 1.6.0 и старше. Эта версия создает только JNX-карты версии 4 (см. ниже), поддерживающие порядок отрисовки, но требующие установки прошивок, выпущенных позже марта 2011 года.
Для скачивания также доступна версия 0.2.5 (использует пакет FWTools) и версия 0.2.3 (последняя, записывающая JNX-файлы версии 3).
Сохранение в формат JNX имеется в программе OkMap версии 9.7.0 и старше.
Экспорт в многоуровневые JNX реализован также в SAS.Планете, начиная с версии 120808.
Кроме того, поддержка сохранения в формат JNX была добавлена в 14 версии Global Mapper.
Важное замечание: прошивки, вышедшие в марте 2011 года (то есть, 2.93 для GPSMAP 62/78, 4.16 для Oregon, 4.45 для Oregon x50, и 4.01 для Dakota) и позже, совместимы только с картами, сделанными в MAPC2MAPC версии 445 и выше, mobat2jnx версии 1008 и выше, а также map2jnx версии 0.2.0 и выше. Карты, сделанные в предыдущих версиях этих программ в большинстве случаев вызывают зависание устройства при загрузке. Чтобы преобразовать старые карты JNX в совместимый с новыми прошивками формат, можно воспользоваться программой JNXFixer.
Для просмотра файлов JNX можно использовать, к примеру, QLandkarte GT версии 1.0.0 и старше, QMapShack, GPXSee.
Библиотека для работы с картами JNX на Delphi/FreePascal доступна здесь.
JNXLib была откомпилирована в виде DLL, которую можно использовать в проектах на MS Visual C++. Архив, содержащий 32х- и 64х- разрядные версии DLL, а также файлы для подключения к проектам на MSVC, находится здесь.
Форумы.
Основная англоязычная тема, посвященная исследованию формата, размещению ссылок на инструменты для преобразования в и из формата JNX и т.д, находится здесь.
Неплохой ЧАВО по созданию карт JNX (при помощи GlobalMapper и MAPC2MAPC), на русском.
Более упорядоченный вариант того же ЧАВО, содержит инструкции по созданию карт при помощи SAS.Планеты.
А здесь пошаговая инструкция по преобразованию космоснимков, скачанных при помощи SAS.Planet, в JNX (используются GlobalMapper и map2jnx); также на русском.
JNX карты для Garmin. Что-то типа FAQ
[FONT=Calibri] Теперь, как я делаю карты. Как вы уже наверное поняли мы будем делать тестовые jnx файлы. Т.е. они могут быть использованы на всех приборах с поддержкой BE, но эти приборы должны быть отучены от проверки тестовых jnx, т.е прошиты патченой прошивкой. [/FONT]
[FONT=Calibri] Расскажу на примере склеенного атласа арбалет для московской области с привязкой для Ozi Explorer. [/FONT]
[FONT=Calibri] Но для начала одно замечание. JNX – это просто контейнер. В нем хранятся карты, в виде кусочков (тайлов), привязка этих кусочков, другая информация (организация тайлов по масштабам и т.д.) Так вот тайлы в jnx хранятся в формате jpeg. Поэтому, если вы хотите получить хороший результат, я вам советую использовать для конвертации в jnx карты в формате jpeg, или tiff. Если исходная карта будет, скажем, в формате gif, то результат будет «мыльным». От этого никуда не уйти, т.к. преобразование gif – jpeg не может пройти без потерь. И дело тут не в конверторе jnx. Так что имеете ввиду. [/FONT]
[FONT=Calibri] Итак. Для начала большую, склеенную, карту нам надо разбить на части, поскольку все, известные мне, конвертеры в jnx имеют ограничение на размер входящего файла. Точного ограничения я не знаю. Но по моим экспериментам что-то около 30-40 мегабайт, может быть чуть больше. 64 разрядные версии имеют гораздо меньшие ограничения. [/FONT]
[FONT=Calibri] Режу файл я программой Global Mapper. [/FONT]
[FONT=Calibri][FONT=Calibri] - [/FONT] [/FONT][FONT=Calibri] Открываем наш исходный файл (нужно открыть файл привязки *.map, карта подтянется автоматически) [/FONT]
[FONT=Calibri][FONT=Calibri] - [/FONT] [/FONT] [FONT=Calibri]Жмем меню Tools – Configure – закладка “Projection”[/FONT]
[FONT=Calibri][FONT=Calibri] - [/FONT] [/FONT] [FONT=Calibri]Проверяем, чтобы там стояло Projection – Geographic (lat/lon), Datum – WGS84[/FONT]
[FONT=Calibri][FONT=Calibri] - [/FONT] [/FONT][FONT=Calibri] Жмем ОК, если на предыдущем шаге вы что-то меняли, то карта скорее всего исказится, но это не страшно. [/FONT]
[FONT=Calibri][FONT=Calibri] - [/FONT] [/FONT] [FONT=Calibri]Жмем меню File – Export Raster and Elevation Data – Export GeoTiff[/FONT]
[FONT=Calibri][FONT=Calibri] - [/FONT] [/FONT] [FONT=Calibri]Устанавливаем: File type – 8 bit Palete Image, Always Generate Sqare Pixel – снимаем, Save map layout – устанавливаем, Generate TFW – устанавливаем. Generate PRJ – устанавливаем[/FONT]
[FONT=Calibri][FONT=Calibri] - [/FONT] [/FONT] [FONT=Calibri]Если карту надо разрезать, то переходим на закладку Gridding[/FONT]
[FONT=Calibri][FONT=Calibri] - [/FONT] [/FONT][FONT=Calibri] Устанавливаем: Specify number of Rows and Columns, думаем, насколько у нас большая карта и устанавливаем на сколько колонок и строк мы ее хотим разбить. [/FONT]
[FONT=Calibri][FONT=Calibri] - [/FONT] [/FONT][FONT=Calibri] Жмем ОК, указываем куда сохранять . [/FONT]
[FONT=Calibri][FONT=Calibri] - [/FONT] [/FONT][FONT=Calibri] Идем пить чай, пиво, водку, т.к. процесс может занять от нескольких минут до нескольких часов (в зависимости от размера карты). [/FONT]
[FONT=Calibri] Теперь собственно конвертация в jnx. [/FONT]
[FONT=Calibri]Я использую программу Mapc2Mapc http://www.the-thorns.org.uk/mapping/ [/FONT]
[FONT=Calibri] Она платная, что-то около 500 рублей, через PayPal. Но ей можно пользоваться и бесплатно, если через командную строку. Ключ для конвертации -jnx Все нужные настройки, при бесплатном использовании, устанавливаются так же как и в платном варианте - через интерфейс программы (т.е. вы запускаете программу, настраиваете ее, потом закрываете и используете через командную строку). [/FONT]
[FONT=Calibri] Устанавливаем Mapc2Mapc. Заходим в настройки (меню Edit – Preferences), проверяем настройки: [/FONT]
[FONT=Calibri]- tile width - 1024 x 1024[/FONT]
[FONT=Calibri] - jpeg quality - 4 jpeg subsampling – 4 (при этих установка будет максимальное качество и файлы не будут чрезмерно большими) [/FONT]
[FONT=Calibri] - Jnx scale – 300 (этот параметр отвечает за масштаб, с которого карта будет появляться на экране прибора, значения в нем какие-то непонятные, как лучше регулировать масштаб я расскажу позже) [/FONT]
[FONT=Calibri] - make jnx thumbnails – установлено (в jnx файле, в отдельном слое, автоматически будет формироваться превьюшка вашей карты, для более крупных масштабов, это удобно, но не всегда нужно, к тому же, если качество исходного файла не высокое, таких много на поехали орг, то качество превьюшки будет ужасное, проверить это можно только на практике) [/FONT]
[FONT=Calibri] - advanced garmin tile control – установлено [/FONT]
[FONT=Calibri] - в меню "Edit" - "Jnx Info Preferences" можно установить параметры для группы карты. Название группы карт надо писать только английскими буквами! Если написать по русски, то прибор просто оставит группу без названия. [/FONT]
Теперь немного про группировку карт. Файлы jnx могут быть сгруппированы. У каждой группы должен быть ID (цифровой, начинается с нуля) и текстовый заголовок (его вы будете видеть в приборе). Понятно, что у всех файлов, принадлежащих одной группе должен быть одинаковый ID и заголовок.
Совет от _Алекс -
"Нюанс при работе с программой mapc2mapc на Windows7(64) во избегании ошибки: "не могу прочитать. ", "нет доступа к файлу. "
Директорию с подлежащими конвертации ххххх.tif и ххххх.tfw предлагаю размещать по адресу:c:\Users\ИмяПользовател я\AppData\Local\*.*"
Карты от веломанцев:
timka: "Предлагаю для скачивания карту Пензенской области генштаб с поехали.орг в формате JNX. Карта в трех слоях - 1км, 2км и 5км. Каждый слой - в отдельном JNX файле. Пензенская Обл ГенШтаб.zip "
Semenich: "2км Ленобласти. Делал уже под последнюю прошу Орегона, все работает, выглядит вроде неплохо, если что не так пишите, поправлю.
Выкладываю для скачивания: http://depositfiles.com/files/oeii9qz8f
http://letitbit.net/download/92214.9. bl2km.jnx.html
http://vip-file.com/downloadlib/8528. LenObl2km.html "
Устройство файлов JNX
Внутренняя структура файлов JNX
Описание формата получено в результате экспериментов с файлами JNX, полученными от добровольцев.
1. Заголовок
-
0 - BirdsEye
2 - BirdsEye Select EIRE
3 - BirdsEye Select Deutschland
4 - BirdsEye Select Great Britain
5 - BirdsEye Select France
6 - BirdsEye Select Kompass - Switzerland
7 - BirdsEye Select Kompass - Austria + East Alps
8 - USGS Quads (BirdsEye TOPO, U.S. and Canada)
9 - NRC TopoRama (BirdsEye TOPO, U.S. and Canada)
Те же версии прошивок вводят поддержку 4й версии формата JNX, позволяющей указывать порядок отрисовки карт JNX. Порядок отрисовки используюется таким же образом, как поле DrawOrder в картах Custom Maps. Поддержка карт 4й версии JNX доступна в BaseCamp версии 3.2 и выше.
О координатах, используемых в файлах JNX.
Координаты хранятся в виде знаковых 4х-байтовых целых чисел. Две пары чисел описывают координаты двух углов карты.
Первая пара - верхний правый (то есть северо-восточный) угол, вторая - нижний левый (юго-западный).
Первым значением в паре идет широта, вторым - долгота.
Для получения координат эти целые числа нужно разделить на 0x7fffffff, а потом умножить на 180.
Пример. Допустим, в файле указаны координаты 0x1FCD7932, 0x1ADEBDDA. После преобразования получаем координаты N 44°43'20.81", E 37°47'9.80".
Автор программы MAPC2MAPC предполагает, что в файлах JNX используется проекция Latitude/Longitude.
Эксперименты показывают, что демонстрационные карты могут отображать не более 1 кв. км. (приблизительно), в противном случае устройство откажется их загружать.
Вычисление CRC32 в заголовке.
Для вычисления значения поля CRC32 нужно последовательно пробежаться по описаниям всех тайлов карты, взять из них первые 2 координаты (т.е. первые 8 байтов для каждого тайла) и вычислить CRC32 для буфера, составленного из этих координат.
2. Таблица описания уровней
Эта таблица всегда находится сразу после заголовка файла.
В таблице ниже приведены значения масштаба, начиная с которых уровни карт JNX показываются на том или ином уровне приближении в устройстве.
Строчка 80m - 209 означает, что при установке в устройстве приближения 80m будут показаны тайлы уровней со значениями масштабов 209 и больше.
В том случае, если в прибор загружаются карты JNX с различными значениями масштабов, и тайлы уровней с различными масштабами оказываются одновременно видимыми, тайлы с бОльшими значениями масштаба отключаются.
Чтобы избежать взаимного отключения слоев карт разработчикам программ преобразования в JNX рекомендуется использовать следующие значения масштабов для соответствующих уровней: 75, 149, 298, 597, 1194, 2388, 4777, 9554, 19109, 38218, 76437, 152877, 305758, 611526, 1223072, 2446184 (этот набор представляет собой расширение стандартного списка значений, используемых в картах BirdsEye). Промежуточные значения предполагается заменять на ближайшее из этого набора.
3. Служебная информация загрузчика карт
Эта часть файла JNX не используется для отрисовки карты как таковой. Этот блок переменной длины состоит из списка URL'ов, с которых были получены тайлы, а также уникальный идентификатор карты и копирайты.
Этот блок следует за таблицей описания уровней и всегда до таблицы описания тайлов. В редких случаях между таблицей описания уровней и блоком служебной информации записана сигнатура файла.
Начиная с версий прошивок, выпущенных в марте 2011 года, некоторые части этого блока необходимы для корректной загрузки карты и выводятся в меню настроек карты.
4. Таблица описания тайлов
5. Сигнатура
Блок длиной 0x314 (788) байтов. Здесь хранится код привязки JNX к устройству.
Блок с сигнатурой обычно расположен между последним элементом в таблице описания тайлов и перед первым изображением тайла.
Состоит из небольшого заголовка и зашифрованной основной части.
Судя по всему, используется асимметричная схема шифрования, аналогичная той, что применяется в GMA-сертификатах карт (Garmin Map Activation), введенных в новых устройствах.
Сигнатура генерируется сервером на основании координат карты, числа уровней и ID'а устройства.
6. Набор тайлов
Тайлы представляют собой обычные рисунки в формате JPG, из которых выкушены маркеры SOI (то есть начальные два байта 0xFF, 0xD8).
Большая часть рисунков в картах BirdsEye имеют разрешение 256 на 256 пикселей. Поддерживаются рисунки и большего размера. Устройства способны показывать тайлы с размером до 1 мегапикселя, при выходе размеров за этот предел производится автоматическое уменьшение картинки с потерей качества.
Судя по всему, отдельные изображения могут быть использованы для отрисовки более, чем одного тайла (в случае одинакового содержимого тайлов), что может позволить уменьшить размер файла. В этом случае количество изображений в карте будет меньше числа тайлов. Данная возможность не проверялась на практике.
7. Метка конца файла
Все файлы JNX завершаются строкой "BirdsEye" (0x42, 0x69, 0x72, 0x64, 0x73, 0x45, 0x79, 0x65 - в 16-ричном виде).
Нетривиальное использование формата
"Многотомные" карты
Хотя формат JNX допускает не более 50000 тайлов на каждом уровне, есть способ обхода этого ограничения, условно называющийся "многотомными" JNX.
Заключается он в том, что уровни с бОльшим количеством тайлов сохраняются в отдельных файлах, уровни которых содержат не более 50000 тайлов. Координаты в заголовках каждого файла при этом соответствуют реальным координатам сохраненных в них тайлов.
Пример. Допустим, требуется записать в файл формата JNX 3х-уровневую карту, на первом уровне которой 10000 тайлов, на втором - 40000, а на третьем - 160000 тайлов. В этом случае создается 4 файла: 3х-уровневый с 10000 тайлами на первом уровне, 40000 тайлами на втором и 50000 на третьем; и три одноуровневых - два по 50000 тайлов, и еще один с оставшимися 10000 тайлами.
Насколько известно автору, создание многотомных карт пока поддерживается только в программе SAS.Планета.
Нижнее ограничение на видимость уровня
В картах JNX имеется только верхнее ограничение на уровни приближения, при которых показывается тот или иной уровень карты. Скажем, если в заголовке уровня JNX прописано значение масштаба 76437, то тайлы этого уровня будут показываться при зумах от 20км до 5м. А вот возможности явно указать, что уровень должен отключаться, скажем, при достижении приближения в 1,2 км (то есть задать нижнее ограничение), форматом не предусматривается.
Однако есть неявный способ введения подобного ограничения, предложенный пользователем aabbcc форума gpsunderground.
Чтобы отключить карту ниже некоторого приближения, требуется создать в карте еще один слой с нужным значением масштаба (для зума 1,2км это будет 4777), содержащий единственный тайл с координатами, не пересекающимися с координатами карты.
Естественно, карта, в которую добавляется новый ограничивающий уровень, может содержать не более четырех обычных уровней.
В качестве изображения тайла может быть использована однопиксельная картинка, либо можно записать в файл ссылку на первый тайл из первого уровня карты.
Координаты можно взять равными, скажем, 90N, 180E - это предпочтительный вариант, однако для него потребуется доделка имеющихся на сегодняшний день конвертеров. А можно просто использовать в качестве координат тайла координаты одного из углов карты - такой способ можно применять даже с доступными сейчас программами.
Насколько известно автору, добавление ограничения видимости реализовано только в программе SAS.Планета.
Обе описанные выше техники являются экспериментальными.
Взаимодействие многотомных карт и карт с нижними ограничениями с соседними картами не исследовалось.
Пока всё.
Если у вас есть комментарии или дополнения по формату JNX, напишите, пожалуйста, автору.
Устройство файлов JNX
Внутренняя структура файлов JNX
Описание формата получено в результате экспериментов с файлами JNX, полученными от добровольцев.
1. Заголовок
-
0 - BirdsEye
2 - BirdsEye Select EIRE
3 - BirdsEye Select Deutschland
4 - BirdsEye Select Great Britain
5 - BirdsEye Select France
6 - BirdsEye Select Kompass - Switzerland
7 - BirdsEye Select Kompass - Austria + East Alps
8 - USGS Quads (BirdsEye TOPO, U.S. and Canada)
9 - NRC TopoRama (BirdsEye TOPO, U.S. and Canada)
Те же версии прошивок вводят поддержку 4й версии формата JNX, позволяющей указывать порядок отрисовки карт JNX. Порядок отрисовки используюется таким же образом, как поле DrawOrder в картах Custom Maps. Поддержка карт 4й версии JNX доступна в BaseCamp версии 3.2 и выше.
О координатах, используемых в файлах JNX.
Координаты хранятся в виде знаковых 4х-байтовых целых чисел. Две пары чисел описывают координаты двух углов карты.
Первая пара - верхний правый (то есть северо-восточный) угол, вторая - нижний левый (юго-западный).
Первым значением в паре идет широта, вторым - долгота.
Для получения координат эти целые числа нужно разделить на 0x7fffffff, а потом умножить на 180.
Пример. Допустим, в файле указаны координаты 0x1FCD7932, 0x1ADEBDDA. После преобразования получаем координаты N 44°43'20.81", E 37°47'9.80".
Автор программы MAPC2MAPC предполагает, что в файлах JNX используется проекция Latitude/Longitude.
Эксперименты показывают, что демонстрационные карты могут отображать не более 1 кв. км. (приблизительно), в противном случае устройство откажется их загружать.
Вычисление CRC32 в заголовке.
Для вычисления значения поля CRC32 нужно последовательно пробежаться по описаниям всех тайлов карты, взять из них первые 2 координаты (т.е. первые 8 байтов для каждого тайла) и вычислить CRC32 для буфера, составленного из этих координат.
2. Таблица описания уровней
Эта таблица всегда находится сразу после заголовка файла.
В таблице ниже приведены значения масштаба, начиная с которых уровни карт JNX показываются на том или ином уровне приближении в устройстве.
Строчка 80m - 209 означает, что при установке в устройстве приближения 80m будут показаны тайлы уровней со значениями масштабов 209 и больше.
В том случае, если в прибор загружаются карты JNX с различными значениями масштабов, и тайлы уровней с различными масштабами оказываются одновременно видимыми, тайлы с бОльшими значениями масштаба отключаются.
Чтобы избежать взаимного отключения слоев карт разработчикам программ преобразования в JNX рекомендуется использовать следующие значения масштабов для соответствующих уровней: 75, 149, 298, 597, 1194, 2388, 4777, 9554, 19109, 38218, 76437, 152877, 305758, 611526, 1223072, 2446184 (этот набор представляет собой расширение стандартного списка значений, используемых в картах BirdsEye). Промежуточные значения предполагается заменять на ближайшее из этого набора.
3. Служебная информация загрузчика карт
Эта часть файла JNX не используется для отрисовки карты как таковой. Этот блок переменной длины состоит из списка URL'ов, с которых были получены тайлы, а также уникальный идентификатор карты и копирайты.
Этот блок следует за таблицей описания уровней и всегда до таблицы описания тайлов. В редких случаях между таблицей описания уровней и блоком служебной информации записана сигнатура файла.
Начиная с версий прошивок, выпущенных в марте 2011 года, некоторые части этого блока необходимы для корректной загрузки карты и выводятся в меню настроек карты.
4. Таблица описания тайлов
5. Сигнатура
Блок длиной 0x314 (788) байтов. Здесь хранится код привязки JNX к устройству.
Блок с сигнатурой обычно расположен между последним элементом в таблице описания тайлов и перед первым изображением тайла.
Состоит из небольшого заголовка и зашифрованной основной части.
Судя по всему, используется асимметричная схема шифрования, аналогичная той, что применяется в GMA-сертификатах карт (Garmin Map Activation), введенных в новых устройствах.
Сигнатура генерируется сервером на основании координат карты, числа уровней и ID'а устройства.
6. Набор тайлов
Тайлы представляют собой обычные рисунки в формате JPG, из которых выкушены маркеры SOI (то есть начальные два байта 0xFF, 0xD8).
Большая часть рисунков в картах BirdsEye имеют разрешение 256 на 256 пикселей. Поддерживаются рисунки и большего размера. Устройства способны показывать тайлы с размером до 1 мегапикселя, при выходе размеров за этот предел производится автоматическое уменьшение картинки с потерей качества.
Судя по всему, отдельные изображения могут быть использованы для отрисовки более, чем одного тайла (в случае одинакового содержимого тайлов), что может позволить уменьшить размер файла. В этом случае количество изображений в карте будет меньше числа тайлов. Данная возможность не проверялась на практике.
7. Метка конца файла
Все файлы JNX завершаются строкой "BirdsEye" (0x42, 0x69, 0x72, 0x64, 0x73, 0x45, 0x79, 0x65 - в 16-ричном виде).
Читайте также: