[gdal-dev] copy GCPs from .xml to GTiff
Brent Fraser
bfraser at geoanalytic.com
Wed Sep 24 17:04:49 EDT 2008
Shawn,
I had a similar need some time ago. I hacked gdalinfo to output only the GCPs in a GDAL-friendly format (one "-GCP Pixel Line X Y" per line) and redirected the results to a text file of command-line options:
my_gdalinfo file1.tif > file1_gcps.opt
Then attached them to my other tiff using stock gdal_translate:
gdal_translate --optfile file1_gcps.opt file2.tif file2b.tif
Brent
Gong, Shawn (Contractor) wrote:
> Hi list,
>
> I have two Radarsat-2 files
>
> File A: product.xml
>
> File B: single channel GTiff
>
> I am looking for a simple way to copy file A’s GCPs and GCP Projection
> to file B, delete 4 existing GCPs in file B, and resave (as GTiff).
>
> Basically replacing the below Blue text with Red text. It will be even
> better if Pink text can also be copied over.
>
> The closest code example I found is to create a VRT wrapper around the
> dataset:
>
> self.src_ds = gdal.Open(‘product.xml’)
>
> opts = vrtutils.VRTCreationOptions(self.src_ds.RasterCount)
>
> lines =
> gdal.SerializeXMLTree(vrtutils.serializeDataset(self.src_ds, opts))
>
> vrtstr = string.join(lines,'')
>
> vrtds = gdal.Open(vrtstr)
>
> self.new_ds =
> gdal.GetDriverByName("GTiff").CreateCopy(tmp_filename, vrtds, 0)
>
> read in array...
>
>
>
> gdalnumeric.BandWriteArray(self.new_ds.GetRasterBand(1),
> datablock, x_size, y_size)
>
> However the new file has the same number of bands as product.xml (more
> than one band).
>
> I also followed OpenEV's compose.py and got all the GCPs from file A
> into a list. But don't know how to save them to file B.
>
> Your help is appreciated.
>
> Shawn
>
> *Gdalinfo file A:*
>
> Driver: RS2/RadarSat 2 XML Product
>
> Files: product.xml
>
> Size is 12132, 3324
>
> Coordinate System is `'
>
> GCP Projection = GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS
> 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9108"]],AXIS["Lat",NORTH],AXIS["Long",EAST],AUTHORITY["EPSG","4326"]]
>
> GCP[ 0]: Id=1, Info=
>
> (0,0) -> (-6.44497337453028,36.2346972769233,41.6078605651855)
>
> GCP[ 1]: Id=2, Info=
>
> (1213.09998,0) ->
> (-6.27897074066121,36.2105053710372,41.6078605651855)
>
> GCP[ 2]: Id=3, Info=
>
> (2426.19995,0) ->
> (-6.11306984793545,36.1860836654035,41.6078605651855)
>
> GCP[ 3]: Id=4, Info=
>
> (3639.30005,0) ->
> (-5.9472716724433,36.1614325255025,41.6078605651855)
>
> ... ...
>
> GCP[118]: Id=119, Info=
>
> (9704.7998,3323) ->
> (-5.20826990376107,35.666853278978,41.6078605651855)
>
> GCP[119]: Id=120, Info=
>
> (10917.9004,3323) ->
> (-5.04390384909976,35.6408291207172,41.6078605651855)
>
> GCP[120]: Id=121, Info=
>
> (12131,3323) ->
> (-4.87964636502838,35.614581497011,41.6078605651855)
>
> Metadata:
>
> PRODUCT_TYPE=SGF
>
> PIXEL_SPACING=1.25000000e+01
>
> LINE_SPACING=1.25000000e+01
>
> BETA_NOUGHT_LUT=lutBeta.xml
>
> SIGMA_NOUGHT_LUT=lutSigma.xml
>
> GAMMA_LUT=lutGamma.xml
>
> SATELLITE_IDENTIFIER=RADARSAT-2
>
> SENSOR_IDENTIFIER=SAR
>
> BEAM_MODE=W2
>
> ACQUISITION_START_TIME=2008-02-13T06:26:25.356741Z
>
> NEAR_RANGE_INCIDENCE_ANGLE=3.06394997e+01
>
> FAR_RANGE_INCIDENCE_ANGLE=3.94798698e+01
>
> SLANT_RANGE_NEAR_EDGE=9.078054910011414e+05
>
> Subdatasets:
>
> SUBDATASET_3_NAME=RADARSAT_2_CALIB:BETA0:product.xml
>
> SUBDATASET_3_DESC=Beta Nought calibrated
>
> SUBDATASET_2_NAME=RADARSAT_2_CALIB:SIGMA0:product.xml
>
> SUBDATASET_2_DESC=Sigma Nought calibrated
>
> SUBDATASET_4_NAME=RADARSAT_2_CALIB:GAMMA:product.xml
>
> SUBDATASET_4_DESC=Gamma calibrated
>
> SUBDATASET_1_NAME=RADARSAT_2_CALIB:UNCALIB:product.xml
>
> SUBDATASET_1_DESC=Uncalibrated digital numbers
>
> Corner Coordinates:
>
> Upper Left ( 0.0, 0.0)
>
> Lower Left ( 0.0, 3324.0)
>
> Upper Right (12132.0, 0.0)
>
> Lower Right (12132.0, 3324.0)
>
> Center ( 6066.0, 1662.0)
>
> Band 1 Block=12132x43 Type=UInt16, ColorInterp=Undefined
>
> Metadata:
>
> POLARIMETRIC_INTERP=VV
>
> Band 2 Block=12132x43 Type=UInt16, ColorInterp=Undefined
>
> Metadata:
>
> POLARIMETRIC_INTERP=VH
>
>
> *Gdalinfo file B:*
>
> Driver: GTiff/GeoTIFF
>
> Files: imagery_VH.tif
>
> Size is 12132, 3324
>
> Coordinate System is `'
>
> GCP Projection =
> GEOGCS["User-Defined",DATUM["unknown",SPHEROID["unnamed",6378137,298.257222932867]],PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433]]
>
> GCP[ 0]: Id=1, Info=
>
> (0.5,0.5) -> (-6.44505378645208,36.234651733764,41.6078221084219)
>
> GCP[ 1]: Id=2, Info=
>
> (12131.5,0.5) ->
> (-4.78969807179151,35.9824333182103,41.6079517686606)
>
> GCP[ 2]: Id=3, Info=
>
> (12131.5,3323.5) ->
> (-4.8797286318157,35.6145371536105,41.607949202978)
>
> GCP[ 3]: Id=4, Info=
>
> (0.5,3323.5) ->
> (-6.52707534347629,35.8669100589582,41.6078219661592)
>
> Metadata:
>
> AREA_OR_POINT=Area
>
> TIFFTAG_IMAGEDESCRIPTION={
>
> bandList =
>
> [
>
> 4;
>
> ]
>
> }
>
> TIFFTAG_DATETIME=2008:02:13 22:02:16
>
> TIFFTAG_MINSAMPLEVALUE=24
>
> TIFFTAG_MAXSAMPLEVALUE=18827
>
> Image Structure Metadata:
>
> INTERLEAVE=BAND
>
> Corner Coordinates:
>
> Upper Left ( 0.0, 0.0)
>
> Lower Left ( 0.0, 3324.0)
>
> Upper Right (12132.0, 0.0)
>
> Lower Right (12132.0, 3324.0)
>
> Center ( 6066.0, 1662.0)
>
> Band 1 Block=12132x43 Type=UInt16, ColorInterp=Gray
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> gdal-dev mailing list
> gdal-dev at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/gdal-dev
More information about the gdal-dev
mailing list