Я то в EXEL оценивал.
Скачал Python, покумекал, забил 8 тайлов, получил результат на 9 тайлов : Y1: 5545; Y2: 5553
Начал смотреть, что- то не понравилось
- Код: Выделить всё
ect info [X: 9636; Y1: 5545; Y2: 5553; Z: 14]:
Top: 50.162824333817; Bottom: 50.035973672195
TileH: 0.014094517958; PixH: 0.000055056711
TileW: 0.021972656250; PixW: 0.000085830688
X: 9636.00 -> 9636; Y: 2826.43 -> 2826
[b][color=#0000FF]TileH: 0.014096665133[/color][/b]; PixH: 0.000055065098
TileW: 0.021972656250; PixW: 0.000085830688
Top: 50.162824333817; Bottom: 50.035954347619
Bottom diff: 0.000019324576 = 0.35 pix
====
Tile info [X: 9636; Y: 5545; Z: 14]:
Top: 50.162824333817; Bottom: 50.148746400663
TileH: 0.014077933155; PixH: 0.000054991926
TileW: 0.021972656250; PixW: 0.000085830688
X: 9636.00 -> 9636; Y: 2826.00 -> 2826
TileH: 0.014096665133; PixH: 0.000055065098
TileW: 0.021972656250; PixW: 0.000085830688
Top: 50.162824333817; Bottom: 50.148727668684
Top diff: 0.000000000000 = 0.00 pix
Bottom diff: 0.000018731979 = 0.34 pix
=====
Tile info [X: 9636; Y: 5546; Z: 14]:
Top: 50.148746400663; Bottom: 50.134664322167
TileH: 0.014082078496; PixH: 0.000055008119
TileW: 0.021972656250; PixW: 0.000085830688
X: 9636.00 -> 9636; Y: 2827.00 -> 2827
TileH: 0.014096665133; PixH: 0.000055065098
TileW: 0.021972656250; PixW: 0.000085830688
Top: 50.148727668684; Bottom: 50.134631003551
Top diff: 0.000018731979 = 0.34 pix
Bottom diff: 0.000033318616 = 0.61 pix
=====
Tile info [X: 9636; Y: 5547; Z: 14]:
Top: 50.134664322167; Bottom: 50.120578097960
TileH: 0.014086224207; PixH: 0.000055024313
TileW: 0.021972656250; PixW: 0.000085830688
X: 9636.00 -> 9636; Y: 2828.00 -> 2828
TileH: 0.014096665133; PixH: 0.000055065098
TileW: 0.021972656250; PixW: 0.000085830688
Top: 50.134631003551; Bottom: 50.120534338418
Top diff: 0.000033318616 = 0.61 pix
Bottom diff: 0.000043759542 = 0.80 pix
=====
Tile info [X: 9636; Y: 5548; Z: 14]:
Top: 50.120578097960; Bottom: 50.106487727673
TileH: 0.014090370287; PixH: 0.000055040509
TileW: 0.021972656250; PixW: 0.000085830688
X: 9636.00 -> 9636; Y: 2829.00 -> 2829
TileH: 0.014096665133; PixH: 0.000055065098
TileW: 0.021972656250; PixW: 0.000085830688
Top: 50.120534338418; Bottom: 50.106437673285
Top diff: 0.000043759542 = 0.80 pix
Bottom diff: 0.000050054388 = 0.91 pix
=====
Tile info [X: 9636; Y: 5549; Z: 14]:
Top: 50.106487727673; Bottom: 50.092393210939
TileH: 0.014094516735; PixH: 0.000055056706
TileW: 0.021972656250; PixW: 0.000085830688
X: 9636.00 -> 9636; Y: 2830.00 -> 2830
TileH: 0.014096665133; PixH: 0.000055065098
TileW: 0.021972656250; PixW: 0.000085830688
Top: 50.106437673285; Bottom: 50.092341008152
Top diff: 0.000050054388 = 0.91 pix
Bottom diff: 0.000052202787 = 0.95 pix
=====
Tile info [X: 9636; Y: 5550; Z: 14]:
Top: 50.092393210939; Bottom: 50.078294547389
TileH: 0.014098663549; PixH: 0.000055072904
TileW: 0.021972656250; PixW: 0.000085830688
X: 9636.00 -> 9636; Y: 2831.00 -> 2831
TileH: 0.014096665133; PixH: 0.000055065098
TileW: 0.021972656250; PixW: 0.000085830688
Top: 50.092341008152; Bottom: 50.078244343019
Top diff: 0.000052202787 = 0.95 pix
Bottom diff: 0.000050204371 = 0.91 pix
=====
Tile info [X: 9636; Y: 5551; Z: 14]:
Top: 50.078294547389; Bottom: 50.064191736659
TileH: 0.014102810730; PixH: 0.000055089104
TileW: 0.021972656250; PixW: 0.000085830688
X: 9636.00 -> 9636; Y: 2832.00 -> 2832
TileH: 0.014096665133; PixH: 0.000055065098
TileW: 0.021972656250; PixW: 0.000085830688
Top: 50.078244343019; Bottom: 50.064147677885
Top diff: 0.000050204371 = 0.91 pix
Bottom diff: 0.000044058774 = 0.80 pix
=====
Tile info [X: 9636; Y: 5552; Z: 14]:
Top: 50.064191736659; Bottom: 50.050084778383
TileH: 0.014106958277; PixH: 0.000055105306
TileW: 0.021972656250; PixW: 0.000085830688
X: 9636.00 -> 9636; Y: 2833.00 -> 2833
TileH: 0.014096665133; PixH: 0.000055065098
TileW: 0.021972656250; PixW: 0.000085830688
Top: 50.064147677885; Bottom: 50.050051012752
Top diff: 0.000044058774 = 0.80 pix
Bottom diff: 0.000033765630 = 0.61 pix
=====
Tile info [X: 9636; Y: 5553; Z: 14]:
Top: 50.050084778383; Bottom: 50.035973672195
TileH: 0.014111106187; PixH: 0.000055121509
TileW: 0.021972656250; PixW: 0.000085830688
X: 9636.00 -> 9636; Y: 2834.00 -> 2834
TileH: 0.014096665133; PixH: 0.000055065098
TileW: 0.021972656250; PixW: 0.000085830688
Top: 50.050051012752; Bottom: 50.035954347619
Top diff: 0.000033765630 = 0.61 pix
Bottom diff: 0.000019324576 = 0.35 pix
=====
>>>
глянул ваш на 20 тайлов
Тоже настораживает один момент, везде одинаковое значение TileH: 0.014121650360 равно расчетной ширине первого тайла меркатора.
Наверное ошибка. Буду смотреть дальше.
zed писал(а):Не поленился, написал скрипт для иллюстрации погрешности.
Но давайте теперь посмотрим, что же там происходит с тайлами. Насколько отличаются их реальные координаты, от расчётных, по которым они будут лежать в rmp?
Tile info [X: 9636; Y: 5545; Z: 14]:
Top: 50.162824333817; Bottom: 50.148746400663
TileH: 0.014077933155; PixH: 0.000054991926
TileW: 0.021972656250; PixW: 0.000085830688
X: 9636.00 -> 9636; Y: 2821.00 -> 2821
TileH: 0.014121650360; PixH: 0.000055162697
TileW: 0.021972656250; PixW: 0.000085830688
Top: 50.162824333817; Bottom: 50.148702683457
Top diff: 0.000000000000 = 0.00 pix
Bottom diff: 0.000043717206 = 0.79 pix
=====
Tile info [X: 9636; Y: 5546; Z: 14]:
Top: 50.148746400663; Bottom: 50.134664322167
TileH: 0.014082078496; PixH: 0.000055008119
TileW: 0.021972656250; PixW: 0.000085830688
X: 9636.00 -> 9636; Y: 2822.00 -> 2822
TileH: 0.014121650360; PixH: 0.000055162697
TileW: 0.021972656250; PixW: 0.000085830688
Top: 50.148702683457; Bottom: 50.134581033097
Top diff: 0.000043717206 = 0.79 pix
Bottom diff: 0.000083289070 = 1.51 pix
=====
Tile info [X: 9636; Y: 5547; Z: 14]:
Top: 50.134664322167; Bottom: 50.120578097960
TileH: 0.014086224207; PixH: 0.000055024313
TileW: 0.021972656250; PixW: 0.000085830688
X: 9636.00 -> 9636; Y: 2822.99 -> 2823
TileH: 0.014121650360; PixH: 0.000055162697
TileW: 0.021972656250; PixW: 0.000085830688
Top: 50.134581033097; Bottom: 50.120459382737
Top diff: 0.000083289070 = 1.51 pix
Bottom diff: 0.000118715223 = 2.16 pix
=====
Tile info [X: 9636; Y: 5548; Z: 14]:
Top: 50.120578097960; Bottom: 50.106487727673
TileH: 0.014090370287; PixH: 0.000055040509
TileW: 0.021972656250; PixW: 0.000085830688
X: 9636.00 -> 9636; Y: 2823.99 -> 2824
TileH: 0.014121650360; PixH: 0.000055162697
TileW: 0.021972656250; PixW: 0.000085830688
Top: 50.120459382737; Bottom: 50.106337732376
Top diff: 0.000118715223 = 2.16 pix
Bottom diff: 0.000149995297 = 2.73 pix
.......
=====
Tile info [X: 9636; Y: 5565; Z: 14]:
Top: 49.880477638743; Bottom: 49.866316729539
TileH: 0.014160909204; PixH: 0.000055316052
TileW: 0.021972656250; PixW: 0.000085830688
X: 9636.00 -> 9636; Y: 2840.99 -> 2841
TileH: 0.014121650360; PixH: 0.000055162697
TileW: 0.021972656250; PixW: 0.000085830688
Top: 49.880391326613; Bottom: 49.866269676253
Top diff: 0.000086312130 = 1.56 pix
Bottom diff: 0.000047053286 = 0.85 pix
И вот тут вылазит глюк: с верху, к центру области, идёт нарастающий сдвиг координат с неким шагом, а потом, от центра области, к низу, он идёт в обратную сторону.
И тут внимательный читатель должен вспомнить слова товарища lunyachek отсюда: viewtopic.php?f=61&t=2814&start=20#p41724Вы спросите, а чем визуально отличаются карта в проекции Mercator размером 2361х3393 пикселя и карта в проекции lat/lon, растянутая до того же размера 2361х3393 пикселя? По верхнему и нижнему краю они в точности совпадают. А вот середина карты смещена по вертикали. И чем больше размер карты по вертикали в километрах, тем сильнее. До 10 км - смещение незначительно. Поэтому если при экспорте из САС Планеты нарезать карту полосками по вертикали не более 10 км, а потом загнать их в RMPCreator и объединить в один RMP-файл, то можно обойтись и без смены проекции. А вот если взять большой кусок, то смещение будет значительным. Когда-то я ради эксперимента сделал карту примерно 400х400 км без смены проекции. Смещение центра карты относительно реальности было около 300 м.
Скрипт в аттаче (для запуска нужен Python 2.7). Ошибок вроде бы не наделал, но можете проверить и потестировать на других входных данных. Главное не забывайте, что зум там нумеруется с 0, а не с 1 как в гуе в SAS.