Ajout de données de géoréférencement dans une image tiff

10

Je veux créer un .tifffichier géoréférencé à partir d'un .pngfichier. Je convertis donc le .png en un .tifffichier normal en utilisant la ligne de commande suivante:

convert image.png image.tiff

Ici, tout fonctionne bien, j'ai un .tifffichier valide , qui s'affiche bien. Ensuite, je veux y ajouter des données de géoréférencement. Pour ce faire, j'ai trouvé un outil appelé tiff2geotiff, je l'utilise comme ceci:

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

Cela me donne une image noire qui, importée dans QGis, s'affiche bien au bon endroit, sauf qu'elle est partout noire (preuve que les données géoréférencées ont bien été ajoutées ).

Par conséquent, quand je fais:

gdalinfo georeferenced.tiff

J'obtiens :

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

Je pense que le premier avertissement peut être le problème ...

Y a-t-il quelqu'un qui sait pourquoi ou une autre façon de procéder? Je recherche des solutions en ligne de commande ou en PHP.

Merci !


Solution

J'ai découvert que je gdal_translatepeux ajouter des données de géoréférencement en .tiffimages , voici donc la ligne de commande qui convertit à partir de png et ajoute des données de géoréférencement (vous devez llx ury urx llybien sûr remplacer les extensions ( )):

gdal_translate -a_nodata 0 -of GTiff -a_srs EPSG:4326 -a_ullr llx ury urx lly pngfile.png tifffile.tiff
Julien Fouilhé
la source
à propos de votre question s'il existe des liaisons gdal php, PHP n'est pas actuellement correctement pris en charge par GDAL / OGR. trac.osgeo.org/gdal/wiki/GdalOgrInPhp
nickves

Réponses:

7

Plutôt que d'utiliser convert, pourriez-vous essayer d'utiliser gdal_translatepour convertir le png en tiff puis le géoréférencer en utilisant gdal_warp (en supposant que vous avez créé un fichier tfw pour le tiff)?

dmci
la source
Voici la ligne de commande que j'utilise maintenant:gdal_translate -scale pngfile.png tifffile.tiff
Julien Fouilhé
5

Connaissez-vous l'étendue de l'image? Si vous connaissez les coordonnées de délimitation de l'image, vous pouvez utiliser gdal_translate avec -a_srs (cela affecte la projection) et -a_ullr (ce sont les coordonnées de délimitation). J'ai utilisé ceci pour convertir .jpg d'images de sonar d'une unité de sonar de pêche à faible coût en géotiffes.

Ryan Garnett
la source
1
Vous dites donc que je n'ai pas besoin d'utiliser tiff2geotiff pour ajouter les étendues de l'image (oui je les ai)? :) Cool ! Oui je vois que dans la documentation, je vais l'utiliser à la place de tiff2geotiff, merci!
Julien Fouilhé
Pas de problème, je suis heureux que cela vous aide
Ryan Garnett