Місце на диску та кількість плиток для світового шару


9

Я думаю про тестування генерації плиток світового шару для веб-карти.

У цьому контексті я хочу знати, як я можу обчислити кількість плиток (256x256 для кеш-пам'яті, якщо я пам’ятаю), мені знадобляться n рівнів у координатах WGS84.

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

Є дві цілі, час, який знадобиться, і необхідний простір на диску.

Будь-яка інформація вітається

Редагувати:

Я знайшов цей скрипт для обчислення кількості плиток для генерації залежно від рівня масштабування та ваших даних. Дивіться цю суть https://gist.github.com/1675606


Відповіді:



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): врахуйте, чи робота Вашого "файлу світу" включає лише кордони країни.

Будь-яку плитку, яка не є межею, можна подати з однієї з двох «alt» плиток - «морської» плитки (синій) для будь-якого місця, що не знаходиться в країні, або «block» (заповнити) плиткою для плиток, які повністю знаходяться в межах національний кордон. Потрібно винести лише плитки, що містять відрізок кордону - решту можна забрати за замовчуванням.

Чому це? Тому що всі блокові плитки конкретного типу (тип (море, суша) або тип (море, країна a, країна b тощо) будуть однаковими.

Плитка "блоку" може бути одним кольором для кожної країни або одним кольором для всього світу, або порожньою плиткою (якщо ви накладаєте контури країни на фоні).

"Блокувати" плитки потрібно виводити лише один раз (наприклад, 1 плитка 256х256, повністю заповнену потрібним кольором).

Коли створюються плитки, ви можете протестувати

(a) якщо його "батьківський" - плитка на одному меншому рівні збільшення; і

(б) якщо це "блокова" плитка (тобто вона повністю заповнена одним кольором).

У випадку (а) плитка не потребує рендерингу; якщо батьків не існує, це тому, що батьківський повністю був плиткою блоку і був видалений.

У випадку, коли (б) (там, де існує батьків, тому плитка повинна бути перевірена), якщо це блокова плитка, то її можна сміливо видалити з піраміди плитки. (Тест на block-tile-ness просто заснований на розмірі файлу. Плитка 256x256 повністю одного кольору має дуже точний розмір, а ймовірність того, що плитка "належного вмісту" має однаковий розмір, дорівнює нулю).

Видалення цих плиток в процесі створення додає мінімальний час циклу візуалізації плиток, але економить величезну кількість дискового простору. Альтернативою є рендерувати все, а потім рекурсивно шукати піраміду для блокових плиток та видаляти їх: це займає більше часу.

Після того як піраміда побудована, процедура виклику плитки може за замовчуванням встановити плитку "блок", якщо вона шукає плитки / z / x / y і отримує 404.

Щоб дізнатись, чому це так, розгляньте надання масштабу 256x256 = 1, де верхній квадрант повністю порожній. Ви точно знаєте, що 4 плитки при масштабі = 2, що охоплюють ту саму область, також будуть порожніми. Так само 16 плиток при масштабі = 3 і так далі.

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

Це економить величезну кількість зберігання та багато часу в процесі плитки.

Застереження до цих застережень: більш складна робота плитки переключиться на різні шари на різних рівнях збільшення. У такому випадку слід бути дуже обережним, щоб тест "батьків" не виконувався, коли рівень масштабування є рівним, коли в набір візуалізації включений новий шар.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.