Hinzufügen von Georeferenzierungsdaten zum TIFF-Bild

10

Ich möchte eine georeferenzierte .tiffDatei aus einer .pngDatei erstellen. Also konvertiere ich die .png .tiffmit der folgenden Befehlszeile in eine normale Datei:

convert image.png image.tiff

Hier funktioniert alles gut, ich habe eine gültige .tiffDatei, die gut angezeigt wird. Dann möchte ich einige Georeferenzierungsdaten hinzufügen. Dazu habe ich ein Tool namens gefunden tiff2geotiff, das ich folgendermaßen verwende:

tiff2geotiff -4 "+proj=latlong +ellps=WGS84 +datum=WGS84 +no_defs" -c none -n "-122.5575664 38.5818201 -122.5449425 38.5896175" notgeoreferenced.tiff georeferenced.tiff

Dies gibt mir ein schwarzes Bild , das in QGis importiert wird und an der richtigen Stelle gut angezeigt wird, außer dass es überall schwarz ist (ein Beweis dafür, dass die georeferenzierten Daten gut hinzugefügt wurden ).

Deshalb, wenn ich es tue:

gdalinfo georeferenced.tiff

Ich erhalte:

Warning 1: TIFFReadDirectory:Bogus "StripByteCounts" field, ignoring and calculating from imagelength
Driver: GTiff/GeoTIFF
Files: araujo_tmp.tiff
Size is 1585, 979
Coordinate System is:
GEOGCS["WGS 84",
    DATUM["WGS_1984",
        SPHEROID["WGS 84",6378137,298.257223563,
            AUTHORITY["EPSG","7030"]],
        AUTHORITY["EPSG","6326"]],
    PRIMEM["Greenwich",0],
    UNIT["degree",0.0174532925199433],
    AUTHORITY["EPSG","4326"]]
Origin = (-122.557563781738281,38.589618682861328)
Pixel Size = (0.000007966552118,-0.000007972639275)
Metadata:
  AREA_OR_POINT=Area
  TIFFTAG_DOCUMENTNAME=georeferenced.tiff
Image Structure Metadata:
  INTERLEAVE=PIXEL
Corner Coordinates:
Upper Left  (-122.5575638,  38.5896187) (122d33'27.23"W, 38d35'22.63"N)
Lower Left  (-122.5575638,  38.5818135) (122d33'27.23"W, 38d34'54.53"N)
Upper Right (-122.5449368,  38.5896187) (122d32'41.77"W, 38d35'22.63"N)
Lower Right (-122.5449368,  38.5818135) (122d32'41.77"W, 38d34'54.53"N)
Center      (-122.5512503,  38.5857161) (122d33' 4.50"W, 38d35' 8.58"N)
Band 1 Block=1585x1 Type=Byte, ColorInterp=Red
Band 2 Block=1585x1 Type=Byte, ColorInterp=Green
Band 3 Block=1585x1 Type=Byte, ColorInterp=Blue

Ich denke, die erste Warnung könnte das Problem sein ...

Gibt es jemanden, der weiß warum oder auf andere Weise? Ich suche nach Lösungen in der Kommandozeile oder in PHP.

Vielen Dank !


Lösung

Ich habe herausgefunden, gdal_translatedass Georeferenzierungsdaten zu .tiffBildern hinzugefügt werden können. Hier ist die Befehlszeile, die aus PNG konvertiert und Georeferenzierungsdaten hinzufügt (Sie müssen llx ury urx llynatürlich die Extents ( ) ersetzen ):

gdal_translate -a_nodata 0 -of GTiff -a_srs EPSG:4326 -a_ullr llx ury urx lly pngfile.png tifffile.tiff
Julien Fouilhé
quelle
Zu Ihrer Frage, ob es GDAL-PHP-Bindungen gibt, wird PHP derzeit von GDAL / OGR nicht ordnungsgemäß unterstützt. trac.osgeo.org/gdal/wiki/GdalOgrInPhp
Nickves

Antworten:

7

Anstatt mit convert, könnten Sie zu verwenden versuchen , gdal_translatedie png zu TIFF konvertieren und dann gdal_warp mit Georeferenzierung (vorausgesetzt , Sie eine tfw - Datei für das TIFF erstellt haben)?

dmci
quelle
Hier ist die Befehlszeile, die ich jetzt benutze:gdal_translate -scale pngfile.png tifffile.tiff
Julien Fouilhé
5

Kennen Sie den Umfang des Bildes? Wenn Sie die Begrenzungskoordinaten des Bildes kennen, können Sie uns mit -a_srs (dies weist die Projektion zu) und -a_ullr (dies sind die Begrenzungskoordinaten) gdal_translate. Ich habe dies verwendet, um .jpg von Sonarbildern von einer kostengünstigen Angelsonareinheit in Geotiffs umzuwandeln.

Ryan Garnett
quelle
1
Sie sagen also, dass ich tiff2geotiff nicht verwenden muss, um die Ausmaße des Bildes hinzuzufügen (ja, ich habe sie)? :) Cool ! Ja, ich sehe, dass ich es in der Dokumentation anstelle von tiff2geotiff verwenden werde. Danke!
Julien Fouilhé
Kein Problem, ich bin froh, dass dies helfen wird
Ryan Garnett