Desempenho dos processos de criação de blocos do google map

11

Eu sei que essa pergunta é bastante vaga, mas por favor, tenha paciência comigo. Estou tentando ter uma idéia de que tipo de desempenho do produto - especificamente o tempo - as pessoas viram por várias metodologias usadas para criar blocos de mapas do Google / Bing. Existem vários métodos para fazer isso (por exemplo, gdal2tiles, FME, maptiler, etc.). Uma tentativa inicial de simplesmente pegar um PNG grande e criar blocos usando o imagemagick, em um servidor Linux bastante decente, rendeu alguns tempos de processamento bastante longos e, portanto, eu queria ver o que outras pessoas estão usando na produção. Novos ladrilhos precisariam ser gerados pelo menos diariamente e, portanto, o tempo de resposta é bastante crítico.

O único requisito real é que ele possa ser executado em um servidor Linux. Obviamente, livre é melhor, mas não quero me restringir a isso. A entrada pode ser dados em grade / rasterizados ou uma imagem grande. A saída precisa ser de blocos de imagem capazes de serem usados ​​como estão nos mapas do Google ou Bing.

Apenas para fins de comparação, direi que os horários devem ser para o nível de zoom 7 do google map.

Agradeço a ajuda de todos e, novamente, quero me desculpar por quão vaga essa pergunta provavelmente parece.

ATUALIZAÇÃO: Quanto às entradas, atualmente tenho várias fontes de dados (brutas) em vários formatos: netCDF, GRIB, GRIB2. Além dos dados brutos em si, também tenho a capacidade de gerar imagens realmente grandes desses dados que podem ser fatiados / lado a lado.

Idealmente, eu estaria apenas cortando a imagem, mas estou disposto a tentar o que me proporcionará os resultados mais rápidos.

malonso
fonte
Recomendamos que você use Adobe Fireworks para altamente otimizar as imagens finais que você está usando - adobe.com/products/fireworks - mesmo exportados do Photoshop e, em seguida, otimizados no Fireworks reduziu o tamanho dos arquivos até 75% (PNG)
Mapperz
@ Mapperz - elaborado em "otimizado no Fireworks"?
Derek Swingley
Eu acho que você precisa expandir suas entradas e, se for necessário mais processamento, ou se você apenas as estiver detalhando.
Ian Turton
4
@ Mapperz: O equivalente livre é pngcrush e pngnq para quantização. - Atualmente, trabalho em uma tarefa semelhante e tenho uma cadeia automática gdal2tiles> pngnq> pngcrush> miniaturas pré-geradas usando imagemagick para cada arquivo que é alimentado no sistema - não posso afirmar que seja rápido, mas a automação exige muito do trabalho . E no meu caso não há atualizações, é disparar e esquecer.
relet 28/03
1
@relet - Tem algum tempo que você pode repassar? Qual é a sua configuração de hardware para isso? Graças
malonso

Respostas:

3

Aqui estão alguns dos meus resultados para o seguinte arquivo raster:

JPEG 14456x14490 14456x14490+0+0 DirectClass 62mb

$ tempo gdal2tiles [...]

Generating Base Tiles:
0...10...20...30...40...50...60...70...80...90...100 - done.
Generating Overview Tiles:
0...10...20...30...40...50...60...70...80...90...100 - done.

real    5m7.675s
user    5m5.070s
sys  0m2.060s

$ time [pngnq && pngcrush para cada bloco, 4500 no total]

real    9m32.827s
user    18m34.190s
sys  0m27.230s

Sim, isso é em minutos - eu otimizei o tamanho da saída, não a velocidade. A máquina é um Intel Xeon virtual 2x3GHz, 4G de memória. (E claramente, os gdal2tiles podem fazer uso de alguma paralelização.)

relet
fonte
O arquivo de amostra está disponível para download. Eu estaria interessado em comparar o desempenho com maptiler.com
Klokan Technologies GmbH
Desculpe, troquei de emprego nesse meio tempo. Provavelmente eu poderia descobrir onde os blocos são publicados, mas não o arquivo original.
relet
6

Eu estava tendo problemas para gdal2tilesdemorar um pouco para processar uma tiff bastante grande (380 MB, 39 K x 10 K pixels) nos blocos do Google para intervalos de zoom de 0 a 12. No Ubuntu 12.04 64bit sem multiprocessamento, demorou quase o dia todo (8 horas) para processar o tiff em 1,99 milhão de peças com 3,3GB. Como o @Stephan Talpalaru menciona acima, gdal2tiles correr em paralelo é a chave. Faça um backup do seu original gdal2tiles.pye instale o patch a partir do diretório que abriga gdal2tiles.py(o meu era /usr/local/bin):

$ sudo patch -p0 -i gdal2tiles_parallelize_base_and_overview_tiles.patch

Agora corra gdal2tilescomo você normalmente faz. Eu obtive um aumento incrível no desempenho, com todos os quatro núcleos (Intel Core i7 3.4GHz) vinculados:

$ time gdal2tiles.py -p raster -z 0-12 -w none ds1105-2235df023_23_b.tif gdal-tiles12
Generating Base Tiles:
0...10...20...30...40...50...60...70...80...90...100 - done.
Generating Overview Tiles:
0...10...20...30...40...50...60...70...80...90...100 - done.

real    39m8.242s
user    104m6.808s
sys 9m16.036s

Então, de ~ 8 horas a 39 MINUTOS . Jogador desafiante.

Chad Cooper
fonte
5

Experimente a versão paralela do gdal2tiles.py: http://trac.osgeo.org/gdal/ticket/4379

Stefan Talpalaru
fonte
1
Você teve algum sucesso ao executar a versão paralela no Windows? Eu recebo erros de acesso a arquivos nos arquivos temporários gerados.
Michalis Avraam
2

Você mencionou o FME e existem alguns números na criação de blocos de mapas no FMEpedia

Como é um artigo longo, selecionei as partes relevantes:

Level             Tiles           Minutes (hours)
    8            24,500           18 (0.3)
   10           245,000          105 (1.75)
   11         1,000,000          384 (6.4)

Isso está usando um processo de várias máquinas com o FME Server. Você também pode conferir esta postagem de Paul Bissett no blog da WeoGeo: http://www.weogeo.com/blog/Scaling_FME_Engines_on_WeoGeo.html

Ele tem um ótimo filme que mostra como processar dados como esse na nuvem - basicamente iniciando várias máquinas virtuais da Amazon para espalhar a carga de processamento e fazê-lo rapidamente.

Mark Ireland
fonte