Espaço em disco e número de blocos para a camada mundial


9

Estou pensando em testar a geração de blocos de uma camada mundial para o mapeamento da web.

Nesse contexto, quero saber como posso calcular o número de blocos (256x256 para tilecache, se bem me lembro) que precisarei de n níveis nas coordenadas WGS84.

Talvez eu use uma solução composta com blocos pré-gerados e em tempo real, mas preciso saber no final o espaço em disco disponível se todos os blocos forem gerados e o número de arquivos que ele representará.

Existem dois objetivos: o tempo necessário e o espaço em disco necessário.

Quaisquer informações são bem-vindas

Editar:

Encontrei esse script para calcular o número de blocos a serem gerados, dependendo dos níveis de zoom e da extensão dos dados. Veja esta lista https://gist.github.com/1675606


Respostas:



5

Fiz uma folha de dicas que lista o número total de peças para determinados níveis de zoom.

Tem duas mesas. Um mostrando o número de níveis de zoom necessários para mostrar as coisas em uma determinada escala, a partir de um bloco mostrando as pessoas.

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

O outro mostra o número de níveis de zoom necessários se começar com um mapa do mundo e níveis de detalhes progressivos:

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

Essa é uma pergunta muito antiga, mas existem (pelo menos) duas advertências importantes, dependendo da tarefa em questão.

  1. A tarefa pode resultar na renderização de um número (muito) grande de blocos vazios sem gerenciamento específico do processo de criação do bloco.
  2. O tamanho do disco de uma pirâmide de blocos pode ser muito (mais de 100%) maior que o esperado da soma dos tamanhos de arquivos de componentes, devido ao tamanho mínimo do cluster de 4KB (também conhecido como tamanho do bloco) na maioria dos armazenamentos.

(2) já está explicado, mas como exemplo, tenho uma pirâmide de blocos em que o tamanho total do arquivo é 168 MB, mas seu tamanho no disco é superior a 600 MB. Torna muito mais importante acertar (1).

Quanto a (1): considere se o seu trabalho de 'arquivo mundial' envolve apenas fronteiras do país.

Qualquer ladrilho que não seja um limite pode ser servido com um dos dois ladrilhos 'alt' - um ladrilho 'mar' (azul) para qualquer lugar que não esteja dentro de um país ou um ladrilho 'bloco' (preenchimento) para ladrilhos totalmente dentro de um fronteira nacional. Somente blocos que incluem um segmento de borda precisam ser renderizados - o restante pode ser "padronizado".

Por que é isso? Como todos os blocos de um tipo específico (digite (mar, terra) ou digite (mar, país a, país b, etc)) serão idênticos.

O bloco 'bloco' pode ter uma cor para cada país, ou uma cor para o mundo inteiro, ou um bloco em branco (se você estiver sobrepondo os contornos do país em um plano de fundo).

Os blocos de bloco precisam ser renderizados apenas uma vez (por exemplo, 1 bloco de 256x256, totalmente preenchido com a cor desejada).

Quando os blocos estão sendo criados, você pode testar

(a) se o seu 'pai' - o bloco com um nível de zoom a menos - existir; e

(b) se for um bloco 'bloco' (ou seja, é totalmente preenchido com uma cor).

No caso (a) o ladrilho não precisa ser renderizado; se o pai não existe, é porque o pai era inteiramente um bloco e foi excluído.

No caso (b) (onde o pai existe para que o bloco precise ser testado), se for um bloco de blocos, ele poderá ser excluído com segurança da pirâmide de blocos. (O teste para o bloco-bloco-ness é simplesmente baseado no tamanho do arquivo. Um bloco de 256x256 inteiramente de uma cor é um tamanho muito preciso, e a probabilidade de um bloco de 'conteúdo adequado' ter o mesmo tamanho é zero).

A exclusão desses blocos durante o processo de criação adiciona tempo mínimo ao loop de renderização de blocos, mas economiza grandes quantidades de espaço em disco. A alternativa é renderizar tudo e, em seguida, procurar recursivamente na pirâmide por blocos de blocos e excluí-los: isso leva mais tempo.

Depois que a pirâmide é construída, o procedimento de chamada de bloco pode usar como padrão o bloco 'bloco' se procurar por blocos / z / x / y e obter um 404.

Para ver por que esse é o caso, considere renderizar um zoom de 256x256 = 1, onde o quadrante superior está totalmente vazio. Você sabe com certeza que as 4 peças em zoom = 2 que cobrem a mesma área também estarão vazias. Da mesma forma, as 16 peças em zoom = 3 e assim por diante.

Portanto, a qualquer momento durante o processo de mosaico em que o bloco é da cor de um bloco (ou está vazio), todos os momentos em níveis mais altos de zoom podem ser ignorados.

Isso economiza grandes quantidades de armazenamento e muito tempo no processo de colocação em mosaico.

Uma advertência para essas advertências: um trabalho de mosaico mais complexo alternará camadas diferentes em diferentes níveis de zoom. Se for esse o caso, deve-se tomar muito cuidado para garantir que o teste 'pai' não seja executado quando o nível de zoom for aquele em que uma nova camada seja incluída no conjunto de renderização.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.