Imagem gigante JP2 de 2,5 GB: Como ladrilhar?

11

Tenho uma única imagem JP2 de 2,5 GB de uma cidade que preciso dividir em blocos, que processarei para criar um cenário de simulação de vôo.

Google como eu poderia, não consigo encontrar a solução.

Aparentemente, o JP2 possui dados XML GIS incorporados, o que não me afeta de nenhuma maneira, já que eu não preciso disso. Tudo o que estou tentando fazer é dividir a imagem em um número x de preferência 2048 x 2048 lado a lado.

Um utilitário para fazer isso no OSX ou no Win7 seria ótimo.

Ideias?

Obrigado!

Stent Mutton
fonte
Você está interessado em uma abordagem QGIS ou ArcGIS?
Aaron
5
Tente gdal2tiles.py
mdsumner 01/01

Respostas:

14

Você pode escrever um script de shell simples e usar o utilitário gdal_translate para cortar os blocos. No Mac, obtenha a versão GDAL dela e. No Windows, a melhor maneira de obter o GDAL é através do instalador do OSGeo4W . No script a seguir, você precisa substituir as seguintes coisas

  • XDIM e YDIM com suas dimensões jp2 X e Y de origem
  • gdal_translate com o caminho real no seu sistema
  • input.jp2 com o caminho para o seu arquivo de entrada.

Salve o script em um arquivo de texto chamado script.sh. Abra um terminal e execute 'bash script.sh'. Isso criará os blocos em um diretório chamado tiles /. O script é copiado daqui com uma pequena modificação para o seu propósito.

#!/bin/bash
mkdir tiles

XDIM=24000
YDIM=24000
BLOCKSIZE=2048
XPOS=0
YPOS=0
BLOCKNO=0
while [ $YPOS -le $YDIM ]
do
while [ $XPOS -le $XDIM ]
  do
    echo "$XPOS $YPOS : ${BLOCKNO}.tif"
    gdal_translate -of GTiff -srcwin $XPOS $YPOS $BLOCKSIZE $BLOCKSIZE input.jp2 \
      tiles/${BLOCKNO}.tif
    BLOCKNO=`echo "$BLOCKNO + 1" | bc`
    XPOS=`echo "$XPOS + $BLOCKSIZE" | bc`
  done
YPOS=`echo "$YPOS + $BLOCKSIZE" | bc`
XPOS=0
done
pensamentos espaciais
fonte
2
Ah, não tem problema. O Finder não saberia sobre o formato JP2, por isso não ajudará. Você precisa da biblioteca GDAL para ler JP2s. Se você instalou o GDAL a partir do link na minha resposta, poderá usar o comando 'gdalinfo' para obter essas informações. No meu sistema, o GDAL está em /Library/Frameworks/GDAL.framework/Versions/1.9/Programs/gdalinfo. execute gdalinfo <caminho / para / seu / jp2> e ele relatará as dimensões. Da mesma forma, adicione o caminho completo para gdal_translate no script para que ele funcione.
Spaceialthoughts