Проекция
Чтобы сделать карту бесшовной и обеспечить правильное наложение данных из разных источников, нужно использовать одну проекцию для всей планеты. Мы используем проекцию Меркатора на сфере для упрощения расчетов, поскольку в этом случае нужно только отображение карты, а не определение координат.
Так как проекция Меркатора на полюсах стремится к бесконечности, то в действительности она покрывает не всю планету, а ограничивает широтой +/-85.051129 градусов.
Так же эту проекцию называют веб-Меркатор. Она используется основными поставщиками веб-карт, включая Google Maps, Bing Maps, OpenStreetMap, Esri, Mapbox и многими другими.
Проекция имеет идентификатор EPSG:3857.
Размер карты и масштаб
Для отрисовки карты необходимо знать ее размер или масштаб. На самом низком уровне детализации (уровень 0) карта имеет размер 256 х 256 пикселей, на каждом последующем уровне ширина и высота карты увеличивается в 2 раза: уровень 1 составляет 512 х 512 пикселей, уровень 2 — 1024 х 1024 пикселя, и так далее. В общем случае размеры рассчитываются так:
map_w = map_h = 256 * 2 ^ z
где z в нашей системе может иметь значения от 0 до 19.
Радиус сферы в проекции Меркатора принимается 6378137 метров. Тогда, зная размеры карты, можно получить разрешение в метрах на пиксель и далее — масштаб карты.
В приведенной ниже таблице показаны соотношения между этими величинами на экваторе.
Уровень | Ширина и высота (пикс.) | Разрешение (м/пикс.) | Масштаб |
---|---|---|---|
0 | 256 | 156543,0339 | 1:591658710,91 |
1 | 512 | 78271,5170 | 1:295829355,45 |
2 | 1024 | 39135,7585 | 1:147914677,73 |
3 | 2048 | 19567,8792 | 1:73957338,86 |
4 | 4096 | 9783,9396 | 1:36978669,43 |
5 | 8192 | 4891,9698 | 1:18489334,72 |
6 | 16384 | 2445,9849 | 1:9244667,36 |
7 | 32768 | 1222,9925 | 1:4622333,68 |
8 | 65536 | 611,4962 | 1:2311166,84 |
9 | 131072 | 305,7481 | 1:1155583,42 |
10 | 262144 | 152,8741 | 1:577791,71 |
11 | 524288 | 76,4370 | 1:288895,85 |
12 | 1048576 | 38,2185 | 1:144447,93 |
13 | 2097152 | 19,1093 | 1:72223,96 |
14 | 4194304 | 9,5546 | 1:36111,98 |
15 | 8388608 | 4,7773 | 1:18055,99 |
16 | 16777216 | 2,3887 | 1:9028,00 |
17 | 33554432 | 1,1943 | 1:4514,00 |
18 | 67108864 | 0,5972 | 1:2257,00 |
19 | 134217728 | 0,2986 | 1:1128,50 |