Это очень старый вопрос, но есть (как минимум) два важных предостережения, в зависимости от поставленной задачи.
- Задача может привести к отображению (очень) большого количества пустых плиток без специального управления процессом создания плитки.
- Размер на диске пирамиды тайлов может быть намного (более чем на 100%) больше, чем ожидалось от суммы размеров файлов его компонентов, из-за минимального размера кластера 4 КБ (или размера блока) в большинстве хранилищ.
(2) в значительной степени уже объяснено, но в качестве примера у меня есть мозаичная пирамида, где общий размер файла составляет 168 МБ, но его размер на диске превышает 600 МБ. Гораздо важнее правильно понять (1).
Что касается (1): подумайте, включает ли ваша работа «мировой файл» только границы страны.
Любая плитка, не являющаяся границей, может обслуживаться одной из двух «альтернативных» плиток: «морской» плиткой (синего цвета) в любом месте за пределами страны или «блочной» (заливкой) плиткой для плиток, которые полностью находятся внутри национальная граница. Только плитки, которые включают в себя сегмент границы, должны быть визуализированы - остальные могут быть «по умолчанию».
Почему это? Поскольку все плитки блоков определенного типа (тип (море, суша) или тип (море, страна а, страна b и т. Д.)) Будут идентичны.
Плитка «блок» может иметь один цвет для каждой страны или один цвет для всего мира, или пустую плитку (если вы накладываете контуры страны на фон).
«Блочные» листы необходимо визуализировать только один раз (например, 1 256x256 плиток, полностью заполненных нужным цветом).
Когда плитки создаются, вы можете проверить
(a) если существует «родительский элемент» - мозаика с одним меньшим уровнем масштабирования; а также
(б) если это «блочная» плитка (т. е. она целиком заполнена одним цветом).
В случае (а) плитка не должна отображаться; если родитель не существует, это потому, что родитель был полностью плиткой блока и был удален.
В случае (b) (где родительский элемент существует, поэтому плитку необходимо проверить), если это блочная мозаика, ее можно безопасно удалить из пирамиды мозаики. (Тест на блок-мозаику просто основан на размере файла. Плитка 256x256, целиком одного цвета, является очень точным размером, и вероятность того, что плитка «правильного содержимого» будет такого же размера, равна нулю).
Удаление этих плиток в процессе создания добавляет минимальное время к циклу рендеринга плитки, но экономит огромное количество дискового пространства. Альтернатива состоит в том, чтобы визуализировать все, а затем рекурсивно искать в пирамиде блочные плитки и удалять их: это занимает больше времени.
После того, как пирамида построена, процедура вызова тайла может по умолчанию использовать тайл «блок», если она ищет тайлы / z / x / y и получает 404.
Чтобы понять, почему это так, рассмотрите рендеринг с масштабированием 256x256 = 1, когда верхний квадрант полностью пуст. Вы точно знаете, что 4 плитки с увеличением = 2, которые покрывают одну и ту же область, также будут пустыми. Аналогично, 16 тайлов при увеличении = 3 и так далее.
Таким образом, в любое время в процессе мозаичного изображения, когда плитка имеет цвет блока (или является пустой), все время при более высоких уровнях масштабирования можно игнорировать.
Это экономит огромное количество памяти и много времени в процессе укладки.
Предостережение к этим предостережениям: более сложное задание будет включать разные слои с разным уровнем масштабирования. Если это так, нужно быть очень внимательным, чтобы убедиться, что «родительский» тест не выполняется, когда уровень масштабирования равен единице, когда новый слой включен в набор визуализации.