Gigantyczny obraz JP2 o pojemności 2,5 GB: jak go kafelkować?

11

Mam pojedynczy obraz JP2 z 2,5 GB miasta, które muszę podzielić na kafelki, które następnie przetworzę, aby stworzyć scenerię symulacji lotu.

Google, jak mogę, nie mogę znaleźć rozwiązania.

Najwyraźniej JP2 ma osadzone dane GIS XML, co nie ma na mnie żadnego wpływu, ponieważ ich nie potrzebuję. Wszystko, co próbuję zrobić, to rozbić obraz na liczbę x, najlepiej 2048 x 2048 kafelków.

Świetne byłoby narzędzie do zrobienia tego w OSX lub Win7.

Pomysły?

Dzięki!

Stent Baranina
źródło
Czy jesteś zainteresowany podejściem QGIS lub ArcGIS?
Aaron
5
spróbuj gdal2tiles.py
mdsumner

Odpowiedzi:

14

Możesz napisać prosty skrypt powłoki i użyć narzędzia gdal_translate do pocięcia kafelków. Na Macu pobierz kompilację GDAL z jej e. W systemie Windows najlepszym sposobem na uzyskanie GDAL jest instalator OSGeo4W . W poniższym skrypcie musisz zastąpić następujące rzeczy

  • XDIM i YDIM ze źródłowymi wymiarami X i Y jp2
  • gdal_translate z rzeczywistą ścieżką w twoim systemie
  • input.jp2 ze ścieżką do pliku wejściowego.

Zapisz skrypt w pliku tekstowym o nazwie script.sh. Otwórz terminal i uruchom „bash script.sh”. To utworzy kafelki w katalogu o nazwie kafelki /. Skrypt został skopiowany z niewielką modyfikacją do twojego celu.

#!/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
myśli przestrzenne
źródło
2
Ach, nie ma problemu. Finder nie wiedziałby o formacie JP2, więc to nie pomoże. Potrzebujesz biblioteki GDAL do odczytu JP2. Jeśli zainstalowałeś GDAL z linku w mojej odpowiedzi, możesz użyć polecenia „gdalinfo”, aby uzyskać te informacje. W moim systemie GDAL znajduje się w /Library/Frameworks/GDAL.framework/Versions/1.9/Programs/gdalinfo. uruchom gdalinfo <path / to / your / jp2>, a poda wymiary. Podobnie dodaj pełną ścieżkę do gdal_translate w skrypcie, aby działał.
przemyślenia przestrzenne