Це дуже давнє запитання, але є (принаймні) два важливих застереження, залежно від завдання, яке стоїть перед вами.
- Завдання може призвести до надання (дуже) великої кількості порожніх плиток без конкретного управління процесом створення плитки.
- Розмір на диску піраміди плитки може бути набагато (більш ніж на 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 і так далі.
Тож будь-коли під час процесу облицювання плитки, коли плитка є кольоровим кольором (або порожній), весь час при більш високих рівнях масштабування можна ігнорувати.
Це економить величезну кількість зберігання та багато часу в процесі плитки.
Застереження до цих застережень: більш складна робота плитки переключиться на різні шари на різних рівнях збільшення. У такому випадку слід бути дуже обережним, щоб тест "батьків" не виконувався, коли рівень масштабування є рівним, коли в набір візуалізації включений новий шар.