Riesiges 2,5-GB-JP2-Bild: Wie wird es gekachelt?

11

Ich habe ein einzelnes 2,5-GB-JP2-Bild einer Stadt, das ich in Kacheln aufteilen muss, die ich dann verarbeite, um eine Flugsimulationslandschaft zu erstellen.

Google kann die Lösung nicht finden.

In JP2 sind anscheinend GIS-XML-Daten eingebettet, was mich in keiner Weise betrifft, da ich sie nicht benötige. Ich versuche nur, das Bild in x-Zahlen von vorzugsweise 2048 x 2048 Kacheln aufzuteilen.

Ein Dienstprogramm, um dies entweder in OSX oder Win7 zu tun, wäre großartig.

Ideen?

Vielen Dank!

Stent Hammel
quelle
Interessieren Sie sich für einen QGIS- oder ArcGIS-Ansatz?
Aaron
5
versuchen Sie gdal2tiles.py
mdsumner

Antworten:

14

Sie können ein einfaches Shell-Skript schreiben und das Dienstprogramm gdal_translate verwenden, um die Kacheln zu zerhacken. Holen Sie sich auf dem Mac den GDAL-Build von ihrem e. Unter Windows erhalten Sie GDAL am besten über das OSGeo4W-Installationsprogramm . Im folgenden Skript müssen Sie die folgenden Dinge ersetzen

  • XDIM und YDIM mit Ihren Quell-JP2-X- und -Y-Dimensionen
  • gdal_translate mit dem tatsächlichen Pfad auf Ihrem System
  • input.jp2 mit Pfad zu Ihrer Eingabedatei.

Speichern Sie das Skript in einer Textdatei namens script.sh. Öffnen Sie ein Terminal und führen Sie 'bash script.sh' aus. Dadurch werden die Kacheln in einem Verzeichnis namens tiles / erstellt. Das Skript wird von hier mit einer kleinen Änderung für Ihren Zweck kopiert .

#!/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
räumliche Gedanken
quelle
2
Ah, kein Problem. Finder würde das JP2-Format nicht kennen, daher hilft es nicht. Sie benötigen die GDAL-Bibliothek, um JP2s lesen zu können. Wenn Sie GDAL über den Link in meiner Antwort installiert haben, können Sie den Befehl 'gdalinfo' verwenden, um diese Informationen abzurufen. Auf meinem System befindet sich GDAL unter /Library/Frameworks/GDAL.framework/Versions/1.9/Programs/gdalinfo. Führen Sie gdalinfo <path / to / your / jp2> aus und es werden die Dimensionen gemeldet. Fügen Sie in ähnlicher Weise den vollständigen Pfad zu gdal_translate im Skript hinzu, damit es funktioniert.
räumliche Gedanken