← Веб-ГИС

Тайлы и уровни масштаба

Тайлы и уровни масштаба

Введение

Тайл (map tile) — это базовый графический или векторный фрагмент квадратной формы (обычно размером 256×256 пикселей), из множества которых формируется интерактивная веб-карта. Браузер никогда не скачивает карту мира целиком: он запрашивает лишь несколько десятков тайлов, попадающих в текущее поле зрения экрана, и бесшовно состыковывает их друг с другом.

Такой подход гарантирует мгновенную отзывчивость интерфейса и позволяет кэшировать тайлы на серверах и в CDN. Для дисплеев высокой четкости (HiDPI / Retina) генерируются тайлы 512×512 пикселей (@2x), использующие аналогичную математическую адресацию. Понимание тайловой структуры необходимо для проектирования геосервисов, расчета хранилищ и отладки сетевых задержек.

Пирамида тайлов

Тайлы организуются в иерархическую структуру — пирамиду уровней масштаба (zoom levels). На 0-м уровне вся обитаемая поверхность планеты умещается в один-единственный тайл. С каждым последующим зумом каждый тайл делится на четыре дочерних: на 1-м уровне формируются 4 тайла, на 2-м — 16. Число тайлов на произвольном уровне z описывается формулой 4^z.

Объем данных растет по экспоненте. На 12-м уровне число фрагментов превышает 16,8 миллиона, а на 18-м уровне достигает астрономических 68,7 миллиарда. Поэтому глобальный предподготовленный кэш для глубоких зумов никогда не рассчитывают: детальные тайлы генерируются только для целевых агломераций либо формируются динамически по запросу клиента.

Пирамида тайлов: деление карты мира на 0, 1 и 2 уровнях масштаба на 1, 4 и 16 квадратных тайлов

Адресация тайлов {z}/{x}/{y}

Каждый тайл однозначно идентифицируется тремя целыми числами: уровнем масштаба z, номером столбца x и номером строки y. Стандартный шаблон обращения к тайл-серверу имеет вид https://server/{z}/{x}/{y}.png. Координата x отсчитывается с запада на восток, начиная от 180-го антимеридиана.

Направление отсчета координаты y разделяет две распространенные схемы. В стандарте XYZ (стиль OpenStreetMap и Google) отсчет строк y начинается с севера, от верхнего края карты. В спецификации TMS (Tile Map Service) координата y отсчитывается с юга, от нижнего края. Их связь описывается формулой y_TMS = 2^z − 1 − y_XYZ. Ошибка в схеме приводит к зеркальному перевороту карты по вертикали.

Математические алгоритмы расчета подробно документированы в OpenStreetMap wiki. Центр Ташкента (41,31° с. ш., 69,28° в. д.) на 12-м уровне в схеме XYZ попадает в тайл 12/2836/1531, а в схеме TMS его координата y равна 2564.

Сетка тайлов 4×4 с сопоставлением схем нумерации: отсчет координаты Y сверху в схеме XYZ и снизу в схеме TMS

Размер пикселя и масштаб

Для каждого зума строго рассчитывается величина проекции пикселя на местность. На экваторе на 0-м уровне тайл в 256 пикселей охватывает длину экватора, поэтому один пиксель соответствует примерно 156 543 метрам. С каждым уровнем масштаба эта величина делится на два. На других широтах значение умножается на cos(широта).

УровеньНа экваторе, м/пиксельВ Ташкенте, м/пиксель
10152,9114,8
1238,228,7
149,557,18
162,391,79
180,600,45

Таблица определяет максимальный разумный масштаб визуализации слоев. Рендеринг 10-метровых снимков Sentinel-2 на 18-м зуме бессмыслен: он не добавляет детальности, а лишь генерирует гигантский массив пустых дубликатов. Эталонные таблицы приведены в OpenStreetMap wiki.

Уменьшение линейного размера пикселя в два раза при увеличении уровня масштаба на один шаг на широте Ташкента

Растровые и векторные тайлы

Растровый тайл — это сжатое изображение PNG или WebP: стилизация выполняется на сервере, а браузер выступает лишь средством показа. Векторный тайл упаковывает геометрию и атрибуты объектов внутри квадратной границы в бинарный протокол Protocol Buffers; правила стилизации применяет браузер. Векторные тайлы позволяют динамически изменять цвета оформления на лету и интерактивно опрашивать атрибуты кликом.

В обоих форматах пирамида и адресация {z}/{x}/{y} идентичны. При подключении сторонних сервисов соблюдают их лицензионные условия: так, правила OpenStreetMap прямо запрещают массовое скачивание тайлов скриптами и перегрузку серверов.

Заключение

Веб-картография структурирует пространство в пирамиду масштабных уровней, нарезая земную поверхность на квадратные тайлы. Каждый фрагмент адресуется тройкой {z}/{x}/{y}, а направление отсчета вертикальной оси разграничивает схемы XYZ и TMS.

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

Это тоже может быть интересно