[gdal-dev] How to read all metadata from GeoTIFF file?

Even Rouault even.rouault at spatialys.com
Fri Sep 14 07:43:25 PDT 2018


On mercredi 12 septembre 2018 01:48:34 CEST krikr42 wrote:
> Hi,
> 
> I have two tiff images, of which the first one is a GeoTIFF image and the
> second is a tiff image created from the first one by opening it with pyvips
> in Python, modifying it (blurring it) and saving it as a new file (so I
> don't know whether the second image counts as a GeoTIFF file). However, the
> second image lacks a lot of metadata that exists in the first image which I
> need, such as the coordinate system and corner coordinates.
> 
> How can I read this metadata from the first file with GDAL (in Python,
> although I guess the C++ API is pretty similar)? I have already tried
> loading the file as a GDAL dataset using  gdal.Open
> <https://gdal.org/python/osgeo.gdal-module.html>   and reading the data with
> the  GetMetadata
> <https://www.gdal.org/classGDALMajorObject.html#a8ce3bf5795bbebfe9bc643e2152
> bb360> method, and I have looked in the  domains
> <https://www.gdal.org/gdal_datamodel.html>   'SUBDATASETS',
> 'IMAGE_STRUCTURE', 'RPC', 'IMAGERY' as well as the default domain, but none
> of those contain the information about the coordinate system or the
> coordinates. There are supposedly also xml: domains, and I'm wondering
> whether the data I'm looking for may be under an xml domain, but I don't
> know what the name of that domain would be, and I can't find any way to list
> available domains (is there any? Because that would be great).
> 
> So, how can I read the metadata specifying the coordinate system and corner
> coordinates from the first file and write it to the other? If I can read it
> with GetMetadata, I suppose I will also be able to write it with
> SetMetadata
> <https://www.gdal.org/classGDALMajorObject.html#a61ab7226d95b20e3e1f42461a1f
> 62906> (I was able to do that for the domains listed above).
> 
> I have also tried to transfer the information by reading it with the command
> line tool gdalinfo and writing it with gdal_translate, but that fails as 1)
> I don't know how to write all the relevant metadata with gdal_translate and
> 2) the metadata that I try to write isn't successfully written as the
> coordinate system information – which looks to be JSON-formatted – ends up
> with a different JSON-tag in the root element and with some elements
> missing.

You need to use SetGeoTransform() / GetGeoTransform() and SetProjection() / 
GetProjectionRef() to transfer georeferencing information.
Overall presentation at https://gdal.org/gdal_datamodel.html


-- 
Spatialys - Geospatial professional services
http://www.spatialys.com


More information about the gdal-dev mailing list