Дисковое пространство и количество плиток для мирового слоя

9

Я думаю о тестировании генерации тайлов мирового слоя для веб-картографии.

В этом контексте я хочу знать, как я могу рассчитать количество плиток (256x256 для тайла кеша, если я помню), которые мне понадобятся для n уровней в координатах WGS84.

Возможно, я буду использовать составное решение с предварительно сгенерированными плитками и на лету, но в конце я должен знать доступное дисковое пространство, если каждая плитка сгенерирована, и количество файлов, которые он будет представлять.

Есть две цели, время, которое потребуется, и необходимое место на диске.

Любая информация приветствуется

Редактировать:

Я нашел этот скрипт, чтобы вычислить количество плиток для генерации в зависимости от уровней масштабирования и экстента ваших данных. Смотрите эту суть https://gist.github.com/1675606

ThomasG77
источник

Ответы:

5

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

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

level 1: 1 # Person
level 2: 5 # Car
level 3: 21 # House building
level 4: 85 # Square
level 5: 341 # Small neighbourhood
level 6: 1,365 # Football stadium
level 7: 5,461 # Small farm
level 8: 21,845 # Central park New York
level 9: 87,381 # Entire airport
level 10: 349,525 # Small city (Copenhagen)
level 11: 1,398,101 # Medium city (Amsterdam)
level 12: 5,592,405 # Large city (London)
level 13: 22,369,621 # Medium Island (Mallorca)
level 14: 89,478,485 # Large Island (Sicily)
level 15: 357,913,941 # Small country (Denmark, Estonia, Taiwan)
level 16: 1,431,655,765 # Medium Country (Korea, Greece)
level 17: 5,726,623,061 # Region (Southern Europe, Arabian Peninsula)
level 18: 22,906,492,245 # Small continent or large country (China)
level 19: 91,625,968,981 # Medium continent (Africa) or huge country (Russia) 
level 20: 366,503,875,925 # Asia
level 21: 1,466,015,503,701 # The World

Другой показывает количество уровней масштабирования, необходимое, начиная с карты мира, и прогрессивные уровни детализации:

level 1: 1 # The World
level 2: 5 # Large contenents
level 3: 21 # Medium continents, huge countries
level 4: 85 # Small continents, large countries
level 5: 341 # Region (Southern Europe, Arabian Peninsula)
level 6: 1,365 # Medium Country (Korea, Greece)
level 7: 5,461 # Small country (Denmark, Estonia, Taiwan)
level 8: 21,845 # Large Island (Sicily)
level 9: 87,381 # Medium Island (Mallorca)
level 10: 349,525 # Large city (London)
level 11: 1,398,101 # Medium city (Amsterdam)
level 12: 5,592,405 # Small city (Copenhagen)
level 13: 22,369,621 # Entire airport
level 14: 89,478,485 # Central park New York
level 15: 357,913,941 # Small farm
level 16: 1,431,655,765 # Football stadium
level 17: 5,726,623,061 # Small neighbourhood
level 18: 22,906,492,245 # Square
level 19: 91,625,968,981 # House building 
level 20: 366,503,875,925 # Car
level 21: 1,466,015,503,701 # Person
Пимин Константин Кефалукос
источник
1

Это очень старый вопрос, но есть (как минимум) два важных предостережения, в зависимости от поставленной задачи.

  1. Задача может привести к отображению (очень) большого количества пустых плиток без специального управления процессом создания плитки.
  2. Размер на диске пирамиды тайлов может быть намного (более чем на 100%) больше, чем ожидалось от суммы размеров файлов его компонентов, из-за минимального размера кластера 4 КБ (или размера блока) в большинстве хранилищ.

(2) в значительной степени уже объяснено, но в качестве примера у меня есть мозаичная пирамида, где общий размер файла составляет 168 МБ, но его размер на диске превышает 600 МБ. Гораздо важнее правильно понять (1).

Что касается (1): подумайте, включает ли ваша работа «мировой файл» только границы страны.

Любая плитка, не являющаяся границей, может обслуживаться одной из двух «альтернативных» плиток: «морской» плиткой (синего цвета) в любом месте за пределами страны или «блочной» (заливкой) плиткой для плиток, которые полностью находятся внутри национальная граница. Только плитки, которые включают в себя сегмент границы, должны быть визуализированы - остальные могут быть «по умолчанию».

Почему это? Поскольку все плитки блоков определенного типа (тип (море, суша) или тип (море, страна а, страна b и т. Д.)) Будут идентичны.

Плитка «блок» может иметь один цвет для каждой страны или один цвет для всего мира, или пустую плитку (если вы накладываете контуры страны на фон).

«Блочные» листы необходимо визуализировать только один раз (например, 1 256x256 плиток, полностью заполненных нужным цветом).

Когда плитки создаются, вы можете проверить

(a) если существует «родительский элемент» - мозаика с одним меньшим уровнем масштабирования; а также

(б) если это «блочная» плитка (т. е. она целиком заполнена одним цветом).

В случае (а) плитка не должна отображаться; если родитель не существует, это потому, что родитель был полностью плиткой блока и был удален.

В случае (b) (где родительский элемент существует, поэтому плитку необходимо проверить), если это блочная мозаика, ее можно безопасно удалить из пирамиды мозаики. (Тест на блок-мозаику просто основан на размере файла. Плитка 256x256, целиком одного цвета, является очень точным размером, и вероятность того, что плитка «правильного содержимого» будет такого же размера, равна нулю).

Удаление этих плиток в процессе создания добавляет минимальное время к циклу рендеринга плитки, но экономит огромное количество дискового пространства. Альтернатива состоит в том, чтобы визуализировать все, а затем рекурсивно искать в пирамиде блочные плитки и удалять их: это занимает больше времени.

После того, как пирамида построена, процедура вызова тайла может по умолчанию использовать тайл «блок», если она ищет тайлы / z / x / y и получает 404.

Чтобы понять, почему это так, рассмотрите рендеринг с масштабированием 256x256 = 1, когда верхний квадрант полностью пуст. Вы точно знаете, что 4 плитки с увеличением = 2, которые покрывают одну и ту же область, также будут пустыми. Аналогично, 16 тайлов при увеличении = 3 и так далее.

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

Это экономит огромное количество памяти и много времени в процессе укладки.

Предостережение к этим предостережениям: более сложное задание будет включать разные слои с разным уровнем масштабирования. Если это так, нужно быть очень внимательным, чтобы убедиться, что «родительский» тест не выполняется, когда уровень масштабирования равен единице, когда новый слой включен в набор визуализации.

GT.
источник