[gdal-dev] Copy meta data from one JP2 to another JP2 C++
Dr. Joshua Jackson
josh at nside.io
Wed Apr 22 09:23:17 PDT 2015
Thanks! And since I’m developing on Mac and CentOS I’ll stick with compiling the source :-)
Joshua Jackson, PhD
Senior ResearchEngineer
(800) 604-1822 Ext. 5109 <tel:8006041822,5109> (256) 648-5109 <tel:2566485109>
josh at nside.io <mailto:josh at nside.io> www.nSide.io
<http://www.nside.io/> 4031 Parkway Dr, Suite B, Florence, AL 35630
<http://www.linkedin.com/company/nside/> <http://twitter.com/nSide__Out>
> On Apr 22, 2015, at 11:15 AM, Even Rouault <even.rouault at spatialys.com> wrote:
>
> Le mercredi 22 avril 2015 18:05:57, Dr. Joshua Jackson a écrit :
>> So I changed my C++ code to follow the basic path of gdalcopyproj.py
>> instead of copying the complete data set (see code below), and I am
>> getting a separate .aux.xml file generated instead of the data being
>> merged to the JP2 image file.
>>
>> Someone mentioned testing against GDAL 2.0, but as I have 1.11.2 which
>> according to the GDAL web page is the latest release.
>
> Yes, you definitely need the development version GDAL 2.0dev, unreleased yet,
> and compile it from sources :
> http://trac.osgeo.org/gdal/wiki/DownloadSource#Developmentversionandsourcecontrol
>
> or use Windows binaries for the development version :
> http://www.gisinternals.com/development.php
>
>>
>> const char *srcProjection = srcDataset->GetProjectionRef();
>> double *srcTransform;
>> srcDataset->GetGeoTransform(srcTransform);
>> int gcpcount = srcDataset->GetGCPCount();
>> const GDAL_GCP *gcps = srcDataset->GetGCPs();
>> const char* gcpProj = srcDataset->GetGCPProjection();
>>
>> dstDataset = (GDALDataset *) GDALOpen(maskPath, GA_Update);
>>
>> dstDataset->SetGeoTransform(srcTransform);
>> dstDataset->SetProjection(srcProjection);
>> if (gcpcount > 0) {
>> dstDataset->SetGCPs( gcpcount, gcps, gcpProj);
>> }
>>
>> if(dstDataset != NULL)
>> {
>> GDALClose((GDALDatasetH)dstDataset);
>> }
>>
>>
>>
>>
>> Joshua Jackson, PhD
>> Senior ResearchEngineer
>> (800) 604-1822 Ext. 5109 <tel:8006041822,5109> (256) 648-5109
>> <tel:2566485109> josh at nside.io <mailto:josh at nside.io> www.nSide.io
>> <http://www.nside.io/> 4031 Parkway Dr, Suite B, Florence, AL 35630
>> <http://www.linkedin.com/company/nside/> <http://twitter.com/nSide__Out>
>>
>>> On Apr 15, 2015, at 4:06 PM, Dr. Joshua Jackson <josh at nside.io> wrote:
>>>
>>> Yes. For example original file is middle.jp2 New file is
>>> middle_mask.jp2.
>>>
>>> gdalcopyproj.py middle.jp2 middle_mask.jp2
>>>
>>> Result is middle_mask.jp2 isn’t even modified according to OS time stamp,
>>> but new file is created middle_mask.jp2.aux.xml.
>>>
>>>
>>>
>>>
>>> Joshua Jackson, PhD
>>> Senior ResearchEngineer
>>>
>>> (800) 604-1822 Ext. 5109 <tel:8006041822,5109> (256) 648-5109
>>> <tel:2566485109> josh at nside.io <mailto:josh at nside.io> www.nSide.io
>>> <http://www.nside.io/> <http://www.nside.io/> 4031 Parkway Dr, Suite B,
>>> Florence, AL 35630
>>>
>>> <http://www.linkedin.com/company/nside/>
>>> <http://twitter.com/nSide__Out>
>>>>
>>>> On Apr 15, 2015, at 4:02 PM, Even Rouault <even.rouault at spatialys.com
>>>> <mailto:even.rouault at spatialys.com>> wrote:
>>>>
>>>> Le mercredi 15 avril 2015 22:58:07, Dr. Joshua Jackson a écrit :
>>>>> gdalcopyproj does not work for me because it outputs a separate xml
>>>>> file instead of overlaying the data into the new image file.
>>>>
>>>> Weird. I've just tested it works properly with the latest GDAL trunk
>>>> (2.0dev).
>>>>
>>>>> Joshua Jackson, PhD
>>>>> Senior ResearchEngineer
>>>>> (800) 604-1822 Ext. 5109 <tel:8006041822,5109> (256) 648-5109
>>>>> <tel:2566485109> josh at nside.io <mailto:josh at nside.io>
>>>>> <mailto:josh at nside.io <mailto:josh at nside.io>> www.nSide.io
>>>>> <http://www.nside.io/> <http://www.nside.io/ <http://www.nside.io/>>
>>>>> 4031 Parkway Dr, Suite B, Florence, AL 35630
>>>>>
>>>>> <http://www.linkedin.com/company/nside/
>>>>> <http://www.linkedin.com/company/nside/>>
>>>>> <http://twitter.com/nSide__Out <http://twitter.com/nSide__Out>>
>>>>>
>>>>>> On Apr 15, 2015, at 3:06 PM, Even Rouault <even.rouault at spatialys.com
>>>>>> <mailto:even.rouault at spatialys.com>> wrote:
>>>>>>
>>>>>> Le mercredi 15 avril 2015 21:46:26, Dr. Joshua Jackson a écrit :
>>>>>>> I’m looking for a good solution to copy the image meta data from one
>>>>>>> JP2 to another JP2 in C++. I have a folder full of 4096x4096
>>>>>>> JPEG2000 images that I am processing with OpenCV. On some of them I
>>>>>>> create a copy of the image and do some manipulations to. As
>>>>>>> expected the new image file is missing all the metadata.
>>>>>>>
>>>>>>> I have tried using CreateCopy() with the OpenJPEG library; and while
>>>>>>> this does work it takes a really long time per image ~40sec. (My
>>>>>>> image manipulations take only ~10sec).
>>>>>>>
>>>>>>> Is there some way to use the GetGDALDataSet() on the source file and
>>>>>>> then call SetMetaData() on the destination file for each meta data
>>>>>>> item? How would one iterate through the metadata items?
>>>>>>
>>>>>> The "metadata" you're talking about are more the georeferencing info,
>>>>>> right ? (In GDAL "metadata" is about all other metadata, excluding the
>>>>>> georeferencing)
>>>>>>
>>>>>> If you use trunk, you could likely try the new USE_SRC_CODESTREAM=YES
>>>>>> creation open of the jp2openjpeg driver
>>>>>>
>>>>>> Something like:
>>>>>>
>>>>>> gdal_translate your_jp2_without_georef.jp2 out.jp2 -co
>>>>>> USE_SRC_CODESTREAM=YES -a_srs EPSG:4326 -a_ullr -96.9653320
>>>>>> 32.4645996 -96.9598389 32.4591064
>>>>>>
>>>>>> The SetGeoTransform() and SetProjection() API also do something
>>>>>> similar internally, so you could also do :
>>>>>>
>>>>>> gdal_edit.py your_jp2_without_georef.jp2 -a_srs EPSG:4326 -a_ullr
>>>>>> -96.9653320 32.4645996 -96.9598389 32.4591064
>>>>>>
>>>>>> or more conveniently:
>>>>>>
>>>>>> gdalcopyproj.py middle_mask.jp2 out.jp2
>>>>>>
>>>>>> (http://svn.osgeo.org/gdal/trunk/gdal/swig/python/samples/gdalcopyproj
>>>>>> .py
>>>>>> <http://svn.osgeo.org/gdal/trunk/gdal/swig/python/samples/gdalcopypro
>>>>>> j.py>
>>>>>> <http://svn.osgeo.org/gdal/trunk/gdal/swig/python/samples/gdalcopypro
>>>>>> j.p
>>>>>> <http://svn.osgeo.org/gdal/trunk/gdal/swig/python/samples/gdalcopypro
>>>>>> j.p> y>)
>>>>>>
>>>>>> Even
>>>>>>
>>>>>>> Here is a sample GDALInfo printout for a source image:
>>>>>>>
>>>>>>> Driver: JP2OpenJPEG/JPEG-2000 driver based on OpenJPEG library
>>>>>>> Files: middle_mask.jp2
>>>>>>> Size is 4096, 4096
>>>>>>> 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 = (-96.965332031250000,32.464599609375000)
>>>>>>> Pixel Size = (0.000001341104507,-0.000001341104507)
>>>>>>>
>>>>>>> Image Structure Metadata:
>>>>>>> INTERLEAVE=PIXEL
>>>>>>>
>>>>>>> Corner Coordinates:
>>>>>>> Upper Left ( -96.9653320, 32.4645996) ( 96d57'55.20"W,
>>>>>>> 32d27'52.56"N) Lower Left ( -96.9653320, 32.4591064) (
>>>>>>> 96d57'55.20"W, 32d27'32.78"N) Upper Right ( -96.9598389,
>>>>>>> 32.4645996) ( 96d57'35.42"W, 32d27'52.56"N) Lower Right (
>>>>>>> -96.9598389, 32.4591064) ( 96d57'35.42"W, 32d27'32.78"N) Center
>>>>>>> ( -96.9625854, 32.4618530) ( 96d57'45.31"W, 32d27'42.67"N) Band 1
>>>>>>> Block=1024x1024 Type=Byte, ColorInterp=Red
>>>>>>>
>>>>>>> Overviews: 2048x2048, 1024x1024, 512x512, 256x256
>>>>>>> Overviews: arbitrary
>>>>>>>
>>>>>>> Band 2 Block=1024x1024 Type=Byte, ColorInterp=Green
>>>>>>>
>>>>>>> Overviews: 2048x2048, 1024x1024, 512x512, 256x256
>>>>>>> Overviews: arbitrary
>>>>>>>
>>>>>>> Band 3 Block=1024x1024 Type=Byte, ColorInterp=Blue
>>>>>>>
>>>>>>> Overviews: 2048x2048, 1024x1024, 512x512, 256x256
>>>>>>> Overviews: arbitrary
>>>>>>>
>>>>>>> Joshua Jackson, PhD
>>>>>>> Senior ResearchEngineer
>>>>>>> (800) 604-1822 Ext. 5109 <tel:8006041822,5109> (256) 648-5109
>>>>>>> <tel:2566485109> josh at nside.io <mailto:josh at nside.io>
>>>>>>> <mailto:josh at nside.io <mailto:josh at nside.io>> <mailto:josh at nside.io
>>>>>>> <mailto:josh at nside.io> <mailto:josh at nside.io
>>>>>>> <mailto:josh at nside.io>>> www.nSide.io <http://www.nside.io/>
>>>>>>> <http://www.nside.io/ <http://www.nside.io/>> <http://www.nside.io/
>>>>>>> <http://www.nside.io/> <http://www.nside.io/
>>>>>>> <http://www.nside.io/>>> 4031 Parkway Dr, Suite B, Florence, AL
>>>>>>> 35630
>>>>>>>
>>>>>>> <http://www.linkedin.com/company/nside/
>>>>>>> <http://www.linkedin.com/company/nside/>
>>>>>>> <http://www.linkedin.com/company/nside/
>>>>>>> <http://www.linkedin.com/company/nside/>>>
>>>>>>> <http://twitter.com/nSide__Out <http://twitter.com/nSide__Out>
>>>>>>> <http://twitter.com/nSide__Out <http://twitter.com/nSide__Out>>>
>
> --
> Spatialys - Geospatial professional services
> http://www.spatialys.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/gdal-dev/attachments/20150422/fa443c79/attachment-0001.html>
More information about the gdal-dev
mailing list