Estou trabalhando em um aplicativo que precisa criar blocos (jpeg) a partir de um determinado conjunto de dados raster. Minha inclinação inicial era usar gdal2tiles.py, mas parece que seu desempenho poderia ser melhorado.
Isso me leva a fazer a seguinte pergunta: Qual seria a maneira mais rápida de cortar uma 'imagem lado a lado' de um conjunto de dados rasterizado usando GDAL? E por 'imagem lado a lado', quero dizer apenas um simples jpeg ou png.
No meu protótipo, eu uso as ligações MapServer C # MapScript para fazer o trabalho. Ou seja, eu crio um objeto de mapa, percorro todos os limites de lado a lado que preciso cortar, defino a extensão dos objetos de mapa e salve a imagem resultante. O desempenho dessa abordagem é significativamente melhor do que o do gdal2tiles.py, mas estou me perguntando se eu uso o GDAL diretamente se não posso torná-lo ainda mais rápido. Alguém pode sugerir um fluxo de trabalho semelhante com os métodos GDAL?
EDIT: Depois de mais algumas pesquisas hoje, encontrei a resposta bem na minha frente. Se você baixou o FWTools, as pastas csharp \ apps contêm várias classes para demonstrar as ligações C # GDAL. No meu caso, GDALRead.cs e GDALReadDirect.cs eram o que eu procurava.
Respostas:
Alguém gastou tempo para fazer o gdal2tiles.py usar vários processadores: gdal paralelo
Eu usei isso e parece funcionar. Utiliza com êxito todos os 4 núcleos em 100% e reduz o tempo total para criar os blocos até 1/4 do tempo original.
fonte
Você tentou isso? http://www.klokan.cz/projects/gdal2tiles/
fonte
Na minha empresa, escrevemos scripts python personalizados, usando gdal_warp (foi antes que soubéssemos que o gdal2tiles existia). Era mais rápido que o g2t, especialmente quando o reescrevíamos para rodar em muitos núcleos (usando o python threadpool). Também produziu ladrilhos de qualidade superior (a interpolação de lanczos no g2t parece funcionar mal, no ladrilho resultante de gdal_warp foram surpreendentes).
É necessário um pouco de esforço para escrever os scripts, você precisa calcular manualmente as caixas delimitadoras resultantes, configurar algumas opções para projeções etc.
fonte
MapCruncher
http://research.microsoft.com/en-us/um/redmond/projects/mapcruncher/
funciona bem e pode ser usado para cortar imagens
fonte
Outra opção é usar o TileCache (WMS-C). Embora eu nunca tenha usado o gdal2tiles, não esperaria que o TileCache traga um desempenho aprimorado.
De qualquer forma, as seguintes estratégias podem acelerar o ladrilho:
fonte
O script gdal_tiler.py em http://code.google.com/p/tilers-tools pode ser uma opção útil.
Geralmente, ele mostra um desempenho muito bom em comparação com o gdal2tiles.py e deve funcionar com qualquer fonte GDAL (conjunto de dados), em particular, não requer a conversão de um conjunto de dados de origem em RGB.
fonte
Gdal2tiles_parallel https://gitlab.com/GitLabRGI/erdc/geopackage-python Se o geopackage ou o MBTILES, nenhum python é necessário, feito de forma nativa com o gdal_translate.EXE. você também precisa executar o gdaladdo para adicionar mais de um nível de zoom. Eu também uso qtiles / qmetatiles para o qgis desktop. Ainda nada pode competir com o software comercial maptiler pro. Se você precisar de uma pasta de blocos, basta converter MBTILES para TMS OR XYZ com mbUtil python
fonte