Spazio su disco e numero di riquadri per il livello mondiale


9

Sto pensando di testare la generazione di tessere di un livello mondiale per il webmapping.

In questo contesto, voglio sapere come posso calcolare il numero di tessere (se ricordo che 256x256 per la tilecache) avrò bisogno di n livelli nelle coordinate WGS84.

Forse userò una soluzione composita con riquadri pregenerati e generazione al volo ma devo sapere alla fine lo spazio su disco disponibile se vengono generati tutti i riquadri e il numero di file che rappresenterà.

Ci sono due obiettivi, il tempo necessario e lo spazio su disco necessario.

Qualsiasi informazione è benvenuta

Modificare:

Ho trovato questo script per calcolare il numero di riquadri da generare in base ai livelli di zoom e all'estensione dei dati. Guarda questa sintesi https://gist.github.com/1675606


Risposte:



5

Ho creato un cheat sheet che elenca il numero totale di tessere per determinati livelli di zoom.

Ha due tavoli. Uno che mostra il numero di livelli di zoom necessari per mostrare le cose su una certa scala, a partire da una tessera che mostra le persone.

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

L'altro mostra il numero di livelli di zoom necessari se si inizia con una mappa del mondo e livelli di dettaglio progressivi:

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

Questa è una domanda molto antica, ma ci sono (almeno) due avvertenze importanti, a seconda del compito da svolgere.

  1. L'attività può comportare il rendering di un numero (molto) elevato di riquadri vuoti senza una gestione specifica del processo di creazione dei riquadri.
  2. La dimensione sul disco di una piramide a tessere potrebbe essere molto (più del 100%) più grande del previsto dalla somma delle dimensioni del suo file componente, a causa della dimensione minima del cluster 4KB (ovvero la dimensione del blocco) sulla maggior parte dello spazio di archiviazione.

(2) è praticamente già spiegato, ma ad esempio ho una piramide a tessere in cui la dimensione totale del file è 168 MB, ma la sua dimensione sul disco è superiore a 600 MB. Rende molto più importante ottenere (1) giusto.

Per quanto riguarda (1): considera se il tuo lavoro 'file del mondo' coinvolge solo i confini del paese.

Qualsiasi tessera che non sia un limite può essere servita con una delle due tessere "alt" - una tessera "mare" (blu) per qualsiasi posto non all'interno di un paese o una tessera "blocco" (riempimento) per tessere che sono interamente all'interno di un confine nazionale. Devono essere renderizzati solo i riquadri che includono un segmento di bordo: il resto può essere "predefinito".

Perchè è questo? Perché tutte le tessere blocco di un tipo specifico (tipo in (mare, terra) o tipo (mare, paese a, paese b, ecc.) Saranno identiche.

La tessera 'blocco' potrebbe essere di un colore per ogni paese, o di un colore per tutto il mondo, o di una tessera vuota (se si sovrappongono i contorni del paese su uno sfondo).

Le tessere 'Blocca' devono essere visualizzate una sola volta (ad es. 1 tessera 256x256, riempita interamente con il colore desiderato).

Quando vengono create le tessere, è possibile testare

(a) se il suo 'genitore' - la tessera con un livello di zoom in meno - esiste; e

(b) se si tratta di una tessera "a blocchi" (ovvero, è interamente riempita con un colore).

Nel caso (a) non è necessario rendere la piastrella; se il genitore non esiste è perché il genitore era interamente un riquadro a blocchi ed è stato eliminato.

Nel caso (b) (dove esiste il genitore, quindi la tessera deve essere testata), se è una tessera a blocchi, può essere tranquillamente eliminata dalla piramide delle tessere. (Il test per il blocco dei blocchi si basa semplicemente sulla dimensione del file. Una tessera 256x256 interamente di un colore ha una dimensione molto precisa e la probabilità che una tessera "contenuto adeguato" abbia le stesse dimensioni è zero).

L'eliminazione di questi riquadri durante il processo di creazione aggiunge un tempo minimo al loop di rendering dei riquadri, ma consente di risparmiare enormi quantità di spazio su disco. L'alternativa è rendere tutto e quindi cercare ricorsivamente nella piramide i blocchi di blocchi ed eliminarli: ciò richiede più tempo.

Una volta che la piramide è stata costruita, la procedura di chiamata delle tessere può essere impostata automaticamente sulla tessera 'blocco' se va alla ricerca di tessere / z / x / y e ottiene un 404.

Per capire perché questo è il caso, considera il rendering di uno zoom 256x256 = 1 in cui il quadrante superiore è completamente vuoto. Sai con certezza che anche le 4 tessere con zoom = 2 che coprono la stessa area saranno vuote. Allo stesso modo, le 16 tessere con zoom = 3 e così via.

Quindi, in qualsiasi momento durante il processo di piastrellatura in cui la piastrella è di un colore a blocchi (o è vuota), tutte le volte a livelli di zoom più elevati possono essere ignorate.

Ciò consente di risparmiare grandi quantità di spazio di archiviazione e molto tempo nel processo di piastrellatura.

Un avvertimento per questi avvertimenti: un lavoro di piastrellatura più complesso commuterà su diversi livelli con diversi livelli di zoom. In questo caso, è necessario prestare molta attenzione per garantire che il test "genitore" non venga eseguito quando il livello di zoom è uno in cui è incluso un nuovo livello nel set di rendering.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.