Тайловая сетка (tile grid) определяет структуру разбиения карты на фиксированные прямоугольные изображения-тайлы. В OpenLayers именно тайловая сетка задаёт, какие тайлы запрашиваются, в каком масштабе и с какими координатными привязками.
Основные характеристики тайловой сетки:
Наиболее распространённая модель — XYZ, используемая в большинстве веб-картографических сервисов.
Особенности:
z/x/yБазовая логика:
В OpenLayers эта схема реализуется через createXYZ:
import TileLayer from 'ol/layer/Tile';
import XYZ from 'ol/source/XYZ';
import {createXYZ} from 'ol/tilegrid';
const tileGrid = createXYZ({
tileSize: 256,
maxZoom: 19
});
const layer = new TileLayer({
source: new XYZ({
url: 'https://tile.openstreetmap.org/{z}/{x}/{y}.png',
tileGrid: tileGrid
})
});
Ключевая особенность XYZ-схемы — универсальность и отсутствие необходимости в дополнительной метаинформации о матрицах.
WMTS (Web Map Tile Service) использует более строгую модель — Tile Matrix Set.
Каждый уровень масштаба описывается как отдельная матрица:
В OpenLayers это реализуется через ol/tilegrid/WMTS.
Основные элементы:
origin — точка отсчёта (обычно верхний левый угол)resolutions — массив разрешений для каждого уровняmatrixIds — идентификаторы уровнейtileSize — размер тайла (обычно 256 или 512)Пример настройки WMTS:
import WMTS from 'ol/source/WMTS';
import WMTSTileGrid from 'ol/tilegrid/WMTS';
const tileGrid = new WMTSTileGrid({
origin: [-20037508.3428, 20037508.3428],
resolutions: [
156543.0339,
78271.5169,
39135.7584,
19567.8792
],
matrixIds: ['0', '1', '2', '3'],
tileSize: 256
});
const source = new WMTS({
url: 'https://example.com/wmts',
layer: 'layer_name',
matrixSet: 'EPSG:3857',
format: 'image/png',
tileGrid: tileGrid
});
WMTS требует строгого соответствия между сервером и клиентской конфигурацией. Несовпадение resolutions или matrixIds приводит к смещению тайлов.
Массив resolutions является центральным элементом
тайловой сетки.
Каждое значение определяет:
Типичная схема для EPSG:3857:
resolutions: [
156543.033928,
78271.516964,
39135.758482,
19567.879241,
9783.939620,
4891.969810
]
Связь между zoom и resolution:
origin задаёт точку, от которой начинается разбиение на
тайлы.
Чаще всего используются два варианта:
origin: [-20037508.342789244, 20037508.342789244]
Используется реже и требует инверсии оси Y.
Разница между схемами:
OpenLayers по умолчанию ориентирован на XYZ-логику.
extent ограничивает область, в которой действуют
тайлы.
extent: [-180, -85, 180, 85]
В проекции EPSG:3857 extent обычно задаётся в метрах:
extent: [-20037508, -20037508, 20037508, 20037508]
Использование extent влияет на:
Функция createXYZ формирует стандартную сетку для
большинства веб-карт.
import {createXYZ} from 'ol/tilegrid';
const grid = createXYZ({
extent: undefined,
tileSize: 256,
maxZoom: 22,
minZoom: 0
});
Алгоритм работы:
Эта модель оптимизирована под:
OpenLayers позволяет задавать произвольные схемы:
tileSize: 512
Увеличение размера тайла уменьшает количество HTTP-запросов, но увеличивает нагрузку на рендеринг.
resolutions: [
1000,
500,
200,
100
]
Используется при работе с:
origin: [0, 0]
Применяется в:
TileGrid напрямую используется в различных источниках OpenLayers:
ol/source/XYZol/source/WMTSol/source/TileWMSol/source/TileImageПример с WMS:
import TileWMS from 'ol/source/TileWMS';
const source = new TileWMS({
url: 'https://example.com/wms',
params: {
LAYERS: 'layer'
},
tileGrid: tileGrid
});
При несоответствии сетки сервер возвращает:
В WMTS каждый zoom level имеет свой идентификатор:
matrixIds: ['0', '1', '2', '3', '4']
Или более сложные схемы:
matrixIds: ['EPSG:3857:0', 'EPSG:3857:1', 'EPSG:3857:2']
Назначение:
Каждый тайл определяется формулой:
В OpenLayers преобразования выполняются через внутренние функции
проекций (ol/proj), что позволяет поддерживать:
Тайловая сетка напрямую влияет на стратегию кеширования:
Ключ кеша формируется из:
В некоторых системах используются гибридные подходы:
Пример:
const gridLowZoom = createXYZ({ maxZoom: 10 });
const gridHighZoom = createXYZ({ minZoom: 10, maxZoom: 22 });
Такая схема применяется при:
Если tileGrid не соответствует серверу:
Критические параметры:
Каждый из этих факторов приводит к геометрическому расхождению слоёв.
Тайловая сетка представляет собой:
В математическом смысле: