Описание формата JNX содержит следующий набор "стандартных" значений масштабов, которые рекомендуется использовать в файлах JNX: 75, 149, 298, 597, 1194, 2388, 4777, 9554, 19109, 38218, 76437, 152877, 305758, 611526, 1223072, 2446184.
Это набор представляет собой расширение набора значений, применяемых в картах подписки BirdsEye, а именно 597, 1194, 4777 и 76437.
Однако, пока не было сколько-либо внятного объяснения того, что на самом деле означают эти числа.
На днях Дмитрий Скляров прислал письмо, содержащее достаточно подробное обоснование выбора именно этих значений.
Цитата:
У меня есть сильное подозрение, что значение, называемое "масштабом JNX" имеет физическую интерпретацию. Это выраженная в миллиметрах длина куска экватора, соответствующего одной
точке растра данного масштаба.
Мотивация следующая.
В WGS-84 используется сфероид с экваториальным радиусом 6378137 метров. Тогда длина экватора составит 2 * Pi * 6378137 = 40075016.685578 метров или 40075016685.57849 миллиметров.
В "нулевом" (z=0) масштабе растра, который отдает сервер DigitalGlobe (а именно DigitalGlobe выступает в качестве поставщика картографии для BirdsEye - прим. Alex Whiter), весь мир по горизонтали влезает в один тайл.
Размер тайла - 256x256 точек, то есть линейный размер одной точки на экваторе соответствует 40075016685.578/256 = 156543033.928041 мм.
В какую сторону тут правильно округлять - я затрудняюсь сказать. Может быть до ближайшего целого, а может быть - всегда вниз.
Если округлить "вниз", то для z=0 получим размер точки 156543033 мм.
На каждом следующем масштабе растра кол-во точек по каждому измерению становится вдвое больше, то есть кол-во миллиметров в точке уменьшается в те же два раза.
Следующая таблица содержит посчитанные шестнадцатеричные и десятичные значения для всех масштабов, поддерживаемых DigitalGlobe.
Плюсик в конце означает, что значение может быть больше на 1, если выбрать другой тип округления.
z | hex | dec |
0 | 0x954A839 | 156543033+ |
1 | 0x4AA541C | 78271516+ |
2 | 0x2552A0E | 39135758 |
3 | 0x12A9507 | 19567879 |
4 | 0x954A83 | 9783939+ |
5 | 0x4AA541 | 4891969+ |
6 | 0x2552A0 | 2445984+ |
7 | 0x12A950 | 1222992 |
8 | 0x954A8 | 611496 |
9 | 0x4AA54 | 305748 |
10 | 0x2552A | 152874 |
11 | 0x12A95 | 76437 |
12 | 0x954A | 38218+ |
13 | 0x4AA5 | 19109 |
14 | 0x2552 | 9554+ |
15 | 0x12A9 | 4777 |
16 | 0x954 | 2388+ |
17 | 0x4AA | 1194 |
18 | 0x255 | 597 |
19 | 0x12A | 298+ |
20 | 0x95 | 149 |
21 | 0x4A | 74+ |
Жирным шрифтом я выделил те значения, которые отличаются от соответствующих масштабов, приведенных в описании формата JNX.
Я пока не стал вносить исправления в описание формата, так как почти все существующие на данный момент утилиты для работы с картами JNX используют "стандартную" шкалу масштабов, и у пользователей вполне могут быть карты, использующие старые значения. Кроме того, относительная ошибка "стандартных" значений по отношению к "физическим" составляет менее одной сотой процента.