Menambahkan data georeferensi ke dalam gambar tiff

10

Saya ingin membuat .tifffile georeferensi dari .pngfile. Jadi saya mengonversi .png menjadi .tifffile normal menggunakan baris perintah berikut:

convert image.png image.tiff

Di sini, semua berfungsi dengan baik, saya memiliki .tifffile yang valid , yang menampilkan baik-baik saja. Lalu, saya ingin menambahkan beberapa data georeferensi di dalamnya. Untuk melakukannya, saya menemukan alat yang disebut tiff2geotiff, saya menggunakannya seperti ini:

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

Ini memberi saya gambar hitam yang, diimpor dalam QGis, menampilkan baik-baik saja di tempat yang baik, kecuali bahwa itu hitam di mana-mana (bukti bahwa data yang di- georeferensi telah ditambahkan dengan baik ).

Karena itu, ketika saya melakukannya:

gdalinfo georeferenced.tiff

Saya mendapatkan:

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

Saya pikir peringatan pertama mungkin masalahnya ...

Apakah ada seseorang yang tahu mengapa atau cara lain untuk melakukan ini? Saya mencari solusi di baris perintah atau PHP.

Terima kasih !


Larutan

Saya menemukan gdal_translatedapat menambahkan data georeferensi menjadi .tiffgambar , jadi di sini adalah baris perintah yang mengkonversi dari png dan menambahkan data georeferensi (Anda harus mengganti luasan ( llx ury urx lly), tentu saja):

gdal_translate -a_nodata 0 -of GTiff -a_srs EPSG:4326 -a_ullr llx ury urx lly pngfile.png tifffile.tiff
Julien Fouilhé
sumber
tentang pertanyaan Anda jika ada binding gdal php, PHP saat ini tidak didukung dengan benar oleh GDAL / OGR. trac.osgeo.org/gdal/wiki/GdalOgrInPhp
nickves

Jawaban:

7

Daripada menggunakan convert, dapatkah Anda mencoba menggunakan gdal_translateuntuk mengonversi png menjadi tiff dan kemudian melakukan georeferensi menggunakan gdal_warp (dengan asumsi Anda telah membuat file tfw untuk tiff)?

dmci
sumber
Berikut ini adalah baris perintah yang saya gunakan sekarang:gdal_translate -scale pngfile.png tifffile.tiff
Julien Fouilhé
5

Apakah Anda tahu luasan gambar? Jika Anda tahu koordinat pembatas dari gambar, Anda dapat menggunakan gdal_translate dengan -a_srs (ini memberikan proyeksi) dan -a_ullr (ini adalah koordinat pembatas). Saya telah menggunakan ini untuk mengkonversi .jpg gambar sonar dari unit sonar memancing murah ke geotiffs.

Ryan Garnett
sumber
1
Jadi Anda mengatakan bahwa saya tidak perlu menggunakan tiff2geotiff untuk menambahkan luasan gambar (ya saya memilikinya)? :) Keren ! Ya saya melihat bahwa dalam dokumentasi, saya akan menggunakannya sebagai ganti tiff2geotiff, terima kasih!
Julien Fouilhé
Tidak masalah, saya senang ini akan membantu
Ryan Garnett