[gdal-dev] Re: Testing Geospatial PDF support

Even Rouault even.rouault at mines-paris.org
Tue Oct 19 14:45:24 EDT 2010


Brent,

I'm not sure what you find is wrong. What does gdalinfo returns ?

The PDF driver will reproject the coordinates of the GPTS array from 
geographic into UTM 35N and try to build a geotransform matrix from that. The 
matrix may have rotating terms, so you likely need to use gdalwarp afterwards 
to make it look "straight". However I'm not 100% sure this is the correct way 
to interpret the the Adobe style georeferencing, but I didn't find a better one 
up to know. So if you or someone else have any clue...

Most geospatial PDFs I've found in the wild (such as the one of cantopo) seem 
to use the OGC Best Practice encoding.

Even

Le mardi 19 octobre 2010 20:11:13, Brent Fraser a écrit :
>   Even,
> 
> 
>    I've tested a couple of Geospatial PDFs with the code that's in GDAL
> trunk.
> 
> The Canadian topos work well (e.g.
> ftp://ftp2.cits.rncan.gc.ca/pub/cantopo/50k_geopdf/085/b/cantopo_085b14_geo
> pdf.zip). They were produced using ESRI ArcMap 9.2.6.1500.  I get a
> properly geo-referenced GeoTiff after running gdal_translate.
> 
>   I have another PDF produced by ArcMap10.0.0.2414.   It has a main map
> and a keymap.  The strange thing is that even though the coordinate
> system is UTM Zone 35 , it has a transformation matrix with geographic
> coordinates given.  Here's a portion of the "dump" file:
> 
>   Item[4] : VP
>    Type = array
>     Item[0]:
>      Type = dictionary
>       Item[0] : Name = ÿþI (string)
>       Item[1] : Measure
>        Type = dictionary
>         Item[0] : Subtype = GEO (name)
>         Item[1] : LPTS
>          Type = array
>           Item[0]: 0 (int)
>           Item[1]: 1 (int)
>           Item[2]: 0 (int)
>           Item[3]: 0 (int)
>           Item[4]: 1 (int)
>           Item[5]: 0 (int)
>           Item[6]: 1 (int)
>           Item[7]: 1 (int)
>         Item[2] : GPTS
>          Type = array
>           Item[0]: 38.815000 (real)
>           Item[1]: 23.644900 (real)
>           Item[2]: 43.662600 (real)
>           Item[3]: 23.387000 (real)
>           Item[4]: 43.615000 (real)
>           Item[5]: 31.889000 (real)
>           Item[6]: 38.774900 (real)
>           Item[7]: 31.540700 (real)
>         Item[3] : GCS
>          Type = dictionary
>           Item[0] : WKT =
> PROJCS["WGS_1984_UTM_Zone_35N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPH
> EROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["De
> gree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["Fal
> se_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Me
> ridian",27.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origi
> n",0.0],UNIT["Meter",1.0]] (string)
>           Item[1] : Type = PROJCS (name)
>         Item[4] : Type = Measure (name)
>         Item[5] : Bounds
>          Type = array
>           Item[0]: 0 (int)
>           Item[1]: 1 (int)
>           Item[2]: 0 (int)
>           Item[3]: 0 (int)
>           Item[4]: 1 (int)
>           Item[5]: 0 (int)
>           Item[6]: 1 (int)
>           Item[7]: 1 (int)
>       Item[2] : Type = Viewport (name)
>       Item[3] : BBox
>        Type = array
>         Item[0]: 3168 (int)
>         Item[1]: 2433 (int)
>         Item[2]: 3557 (int)
>         Item[3]: 2127 (int)
>     Item[1]:
>      Type = dictionary
>       Item[0] : Name = ÿþA (string)
>       Item[1] : Measure
>        Type = dictionary
>         Item[0] : Subtype = GEO (name)
>         Item[1] : LPTS
>          Type = array
>           Item[0]: 0 (int)
>           Item[1]: 1 (int)
>           Item[2]: 0 (int)
>           Item[3]: 0 (int)
>           Item[4]: 1 (int)
>           Item[5]: 0 (int)
>           Item[6]: 1 (int)
>           Item[7]: 1 (int)
>         Item[2] : GPTS
>          Type = array
>           Item[0]: 40.190600 (real)
>           Item[1]: 26.279300 (real)
>           Item[2]: 40.767200 (real)
>           Item[3]: 26.273100 (real)
>           Item[4]: 40.769300 (real)
>           Item[5]: 27.212000 (real)
>           Item[6]: 40.192600 (real)
>           Item[7]: 27.210200 (real)
>         Item[3] : GCS
>          Type = dictionary
>           Item[0] : WKT =
> PROJCS["WGS_1984_UTM_Zone_35N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPH
> EROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["De
> gree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["Fal
> se_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Me
> ridian",27.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origi
> n",0.0],UNIT["Meter",1.0]] (string)
>           Item[1] : Type = PROJCS (name)
>         Item[4] : Type = Measure (name)
>         Item[5] : Bounds
>          Type = array
>           Item[0]: 0 (int)
>           Item[1]: 1 (int)
>           Item[2]: 0 (int)
>           Item[3]: 0 (int)
>           Item[4]: 1 (int)
>           Item[5]: 0 (int)
>           Item[6]: 1 (int)
>           Item[7]: 1 (int)
>       Item[2] : Type = Viewport (name)
>       Item[3] : BBox
>        Type = array
>         Item[0]: 57 (int)
>         Item[1]: 2465 (int)
>         Item[2]: 3052 (int)
>         Item[3]: 46 (int)
> 
> ------------------------
> 
> The resulting GeoTiff has a scaling problem, I suspect related to the
> transformation matrix.
> 
> Any thoughts on that?
> 
> Thanks!
> Brent Fraser


More information about the gdal-dev mailing list