Файлы jnx чем открыть

Файлы jnx чем открыть

Существенным ограничением формата JNX является жесткая привязка карт к устройству.

Результаты исследования

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

Хотя файлы в формате JNX содержат код привязки к устройству, известны два способа использования собственных карт JNX в навигаторах Garmin.

Второй способ.
Если у вас оформлена подписка BirdsEye, можно воспользоваться BaseCamp для активации собственных карт JNX. Для этого достаточно сделать карту одним из конвертеров, загрузить полученный файл JNX в устройство, затем запустить BaseCamp и скопировать карту с устройства в Коллекцию. После этого карту можно будет послать обратно на устройство, при этом BaseCamp активирует карту и привяжет её к устройству. Этот метод сработает только в том случае, если устройство связано с подпиской BirdsEye.

Инструменты.
Последние версии программы 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 на русском языке и узнать основные новости о формате и инструментах можно здесь.

Неплохой ЧАВО по созданию карт JNX (при помощи GlobalMapper и MAPC2MAPC), на русском.
Более упорядоченный вариант того же ЧАВО, содержит инструкции по созданию карт при помощи SAS.Планеты.

А здесь пошаговая инструкция по преобразованию космоснимков, скачанных при помощи SAS.Planet, в JNX (используются GlobalMapper и map2jnx); также на русском.

Устройство файлов JNX

Внутренняя структура файлов JNX

Описание формата получено в результате экспериментов с файлами JNX, полученными от добровольцев.

1. Заголовок

Те же версии прошивок вводят поддержку 4й версии формата JNX, позволяющей указывать порядок отрисовки карт JNX. Порядок отрисовки используюется таким же образом, как поле DrawOrder в картах Custom Maps. Поддержка карт 4й версии JNX доступна в BaseCamp версии 3.2 и выше.

Автор программы MAPC2MAPC предполагает, что в файлах JNX используется проекция Latitude/Longitude.

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

Вычисление CRC32 в заголовке.
Для вычисления значения поля CRC32 нужно последовательно пробежаться по описаниям всех тайлов карты, взять из них первые 2 координаты (т.е. первые 8 байтов для каждого тайла) и вычислить CRC32 для буфера, составленного из этих координат.

2. Таблица описания уровней

Эта таблица всегда находится сразу после заголовка файла.

Количество уровней детализации в заголовке определяет количество элементов этой таблицы.
Структура элементов:

Смещение от начала
таблицы
Тип поля Описание
0x00 int32 Количество тайлов на уровне. Это значение не должно превышать 50000.
0x04 uint32 Смещение до таблицы описания тайлов этого уровня.
0x08 int32 Значение масштаба для уровня. По предположению Дмитрия Склярова, в этом поле хранится выраженная в миллиметрах длина части экватора, соответствующей одной точке растра данного уровня. Подробнее см. тут.
В картах JNX 4й версии имеются дополнительные поля
0x0C int32 Неизвестно. Обчыно 2.
0x10 CString Копирайт уровня карты в кодировке UTF8. Выводится на странице О системе.

JNX-файлы, полученные по подписке BirdsEye, содержат уровни со значениями масштаба 0x12A95 (76437), 0x12A9 (4777), 0x4AA (1194), а также 0x255 (597).
В картах подписки BirdsEye Select Deutschland имеются масштабы 0x17D0 (6096), 0x12F1 (4849), 0x9C6 (2502).
В картах подписки BirdsEye Select Great Britain используются масштабы 0x387c (14460) и 0x05e5 (1509).

Скрыть таблицу Показать таблицу

Уровень приближения
(m, km)
Минимальное значение
масштаба JNX
5m 14
8m 21
12m 32
20m 52
30m 79
50m 131
80m 209
120m 313
200m 521
300m 782
500m 1303
800m 2084
1.2km 3125
2km 5209
3km 7813
5km 13021
8km 20834
12km 31250
20km 52084
30km 78125
50km 130209
80km 208334
120km 312500
200km 520834
300km 781250
500km 1302084
800km 2083334
Уровень приближения
(yd, mi)
Минимальное значение
масштаба JNX
5yd 12
10yd 24
15yd 36
25yd 60
40yd 96
60yd 143
100yd 239
150yd 358
250yd 596
0.2mi 839
0.3mi 1258
0.5mi 2096
0.8mi 3353
1.2mi 5030
2mi 8383
3mi 12574
5mi 20956
8mi 33529
12mi 50293
20mi 83821
30mi 125731
50mi 209551
80mi 335281
120mi 502921
200mi 838202
300mi 1257303
500mi 2095504
Уровень приближения
(ft, nm)
Минимальное значение
масштаба JNX
20ft 16
30ft 24
50ft 40
80ft 64
120ft 96
200ft 159
300ft 239
500ft 397
800ft 636
0.2nm 965
0.3nm 1447
0.5nm 2412
0.8nm 3859
1.2nm 5788
2nm 9646
3nm 14469
5nm 24115
8nm 38584
12nm 57875
20nm 96458
30nm 144687
50nm 241145
80nm 385832
120nm 578747
200nm 964578
300nm 1446867
500nm 2411444

В том случае, если в прибор загружаются карты JNX с различными значениями масштабов, и тайлы уровней с различными масштабами оказываются одновременно видимыми, тайлы с бОльшими значениями масштаба отключаются.
Чтобы избежать взаимного отключения слоев карт разработчикам программ преобразования в JNX рекомендуется использовать следующие значения масштабов для соответствующих уровней: 75, 149, 298, 597, 1194, 2388, 4777, 9554, 19109, 38218, 76437, 152877, 305758, 611526, 1223072, 2446184 (этот набор представляет собой расширение стандартного списка значений, используемых в картах BirdsEye). Промежуточные значения предполагается заменять на ближайшее из этого набора.

3. Служебная информация загрузчика карт

Эта часть файла JNX не используется для отрисовки карты как таковой. Этот блок переменной длины состоит из списка URL’ов, с которых были получены тайлы, а также уникальный идентификатор карты и копирайты.

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

Начиная с версий прошивок, выпущенных в марте 2011 года, некоторые части этого блока необходимы для корректной загрузки карты и выводятся в меню настроек карты.

3.3 Информация о тайлах
Здесь перечисляется список URL’ов, по которым были получены отдельные тайлы. Эта часть блока пока не используется устройствами и может быть пропущена конвертерами JNX.

Замечание для разработчиков JNX-конвертеров: так как пользователи время от времени хотят перемещать карты между различными группами, рекомендуется резервировать некоторое дополнительное пустое пространство (к примеру, 1024 байта) под блок служебной информации загрузчика при создании JNX-файлов. В этом случае становится возможным изменение названия группы карт в существующем файле без необходимости создания промежуточного файла и весьма медленного копирования этого файла обратно на устройство.

4. Таблица описания тайлов
Смещение от начала
таблицы
Тип поля Описание
0x00 4 int32 Координаты отдельного тайла.
0x10 int16 Ширина изображения.
0x12 int16 Высота изображения.
0x14 int32 Размер изображения в байтах.
0x18 uint32 Смещение до изображения.
5. Сигнатура

Блок длиной 0x314 (788) байтов. Здесь хранится код привязки JNX к устройству.

Блок с сигнатурой обычно расположен между последним элементом в таблице описания тайлов и перед первым изображением тайла.
Состоит из небольшого заголовка и зашифрованной основной части.
Судя по всему, используется асимметричная схема шифрования, аналогичная той, что применяется в GMA-сертификатах карт (Garmin Map Activation), введенных в новых устройствах.
Сигнатура генерируется