Dodawanie danych georeferencyjnych do obrazu tiff

10

Chcę utworzyć .tiffplik georeferencyjny z .pngpliku. Więc przekonwertować .png na normalny .tiffplik przy użyciu następującego wiersza polecenia:

convert image.png image.tiff

Tutaj wszystko działa dobrze, mam prawidłowy .tiffplik, który wyświetla się dobrze. Następnie chcę dodać do niego dane georeferencyjne. Aby to zrobić, znalazłem narzędzie o nazwie tiff2geotiff, używam go w następujący sposób:

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

To daje mi czarny obraz, który zaimportowany do QGis wyświetla się dobrze w dobrym miejscu, z wyjątkiem tego, że jest wszędzie czarny (dowód, że dane georeferencyjne zostały dobrze dodane ).

Dlatego kiedy to zrobię:

gdalinfo georeferenced.tiff

Otrzymuję:

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

Myślę, że pierwszym ostrzeżeniem może być problem ...

Czy jest ktoś, kto wie, dlaczego lub w inny sposób? Szukam rozwiązań w wierszu polecenia lub w PHP.

Dziękuję Ci !


Rozwiązanie

Dowiedziałem się, że gdal_translatemogę dodawać dane georeferencyjne do .tiffobrazów , więc oto wiersz poleceń, który konwertuje z png i dodaje dane georeferencyjne ( llx ury urx llyoczywiście musisz wymienić extents ( )):

gdal_translate -a_nodata 0 -of GTiff -a_srs EPSG:4326 -a_ullr llx ury urx lly pngfile.png tifffile.tiff
Julien Fouilhé
źródło
jeśli chodzi o twoje pytanie, czy istnieją powiązania gdal php, PHP nie jest obecnie poprawnie obsługiwane przez GDAL / OGR. trac.osgeo.org/gdal/wiki/GdalOgrInPhp
nickves

Odpowiedzi:

7

Czy zamiast używać convert, możesz spróbować gdal_translateprzekonwertować png na tiff, a następnie georeferencję za pomocą gdal_warp (zakładając, że utworzyłeś plik tfw dla tiff)?

dmci
źródło
Oto wiersz poleceń, którego teraz używam:gdal_translate -scale pngfile.png tifffile.tiff
Julien Fouilhé,
5

Czy znasz zakres obrazu? Jeśli znasz współrzędne graniczne obrazu, możesz nam gdal_translate za pomocą -a_srs (to przypisuje rzut) i -a_ullr (to są współrzędne graniczne). Użyłem tego do konwersji .jpg obrazów sonaru z taniej jednostki sonaru rybackiego na geotiffy.

Ryan Garnett
źródło
1
Więc mówisz, że nie muszę używać tiff2geotiff, aby dodać zakres obrazu (tak, mam je)? :) Chłodny ! Tak, widzę, że w dokumentacji użyję go zamiast tiff2geotiff, dziękuję!
Julien Fouilhé
Nie ma problemu, cieszę się, że to pomoże
Ryan Garnett