Hi Kristofer,

We have a function to transfer the tags manually, but most of the information 
is in the domain without a name - you have to call ds.GetMetadata(''). It goes 
something like this. For the bands, we're only copying some items, but you 
could take out the for loop and copy them all.


BASE_METADATA_DOMAIN = ''
IMAGE_METADATA_DOMAIN = 'IMAGE_STRUCTURE'


def set_tags_for_domain(src, dst, domain):
    src_tags = src.GetMetadata(domain)
    dst_tags = dst.GetMetadata(domain)
    dst_tags.update(src_tags)
    dst.SetMetadata(dst_tags, domain)


def transfer_tags(src, dst, band_order=None, dest_band=None):
    """Transfer metadata tags from one dataset to another."""
set_tags_for_domain(src, dst, BASE_METADATA_DOMAIN)
set_tags_for_domain(src, dst, IMAGE_METADATA_DOMAIN)

bands = band_order or range(1, dst.RasterCount + 1)
for i, band in enumerate(bands):
bnd_tags = src.GetRasterBand(band).GetMetadata(BASE_METADATA_DOMAIN)
dst_bnd = dst.GetRasterBand(dest_band or i + 1)

# copy selected items
for mditem in ("RETURN_PERIOD", "UNITS", "SCALE"):
if mditem in bnd_tags:
dst_bnd.SetMetadataItem(mditem, bnd_tags[mditem])


Regards,

Jon


-----Original Message-----
From: gdal-dev <gdal-dev-boun...@lists.osgeo.org> On Behalf Of krikr42
Sent: 12 September 2018 09:49
To: gdal-dev@lists.osgeo.org
Subject: [gdal-dev] How to read all metadata from GeoTIFF file?

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#a8ce3bf5795bbebfe9bc643e2152bb360>
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#a61ab7226d95b20e3e1f42461a1f62906>
(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.

Regards

Kristofer



--
Sent from: http://osgeo-org.1560.x6.nabble.com/GDAL-Dev-f3742093.html
_______________________________________________
gdal-dev mailing list
gdal-dev@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/gdal-dev
T +44 (0) 1756 799919
www.jbarisk.com<http://www.jbarisk.com>

[Visit our website]<http://www.jbarisk.com> 
[http://www.jbagroup.co.uk/imgstore/JBA-Email-Sig-Icons-LINKEDIN.png] 
<https://www.linkedin.com/in/jon-morris-a2897b4/>  [Follow us on Twitter] 
<https://twitter.com/jbarisk>
_______________________________________________
gdal-dev mailing list
gdal-dev@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/gdal-dev

Reply via email to