[gdal-dev] extract vector/raster data from GeoPDF
Peter J Halls
P.Halls at york.ac.uk
Thu Sep 3 10:38:00 EDT 2009
A bit of googling determines that the 'Adobe way' structure, together with its
elements, is defined in the ISO PDF definition - ISO 32000-1 (2008).
Looking at this with a PostScript Developer hat, the /LPTS has to be associated
with scaling / transforming the GPTS coordinates to the page coordinate system.
There is a need to refer to the standard!
Best wishes,
Peter
Joaquim Luis wrote:
> Brent,
>
> I was also digging a bit on this matter. It's true that the blogger only
> opens
> our appetite as there is no more details on how to do it generally. I
> mean, for
> UTM maps it has become fairly obvious how one can do it. The relevant
> part in the
> PS file is
>
> [ {ThisPage} <<
> /LGIDict <<
> /Description Title
> /CTM [(35.28267) (0) (0) (35.28267) (205188.64) (3207094.8)]
> /Projection <<
> /Description (WGS 84 UTM 16N)
> /ProjectionType (TC)
> /Datum (WGE)
> /CentralMeridian (-87.0)
> /OriginLatitude (0.0)
> /FalseEasting (500000.0)
> /FalseNorthing (0.0)
> /ScaleFactor (0.999600)
> /Type /Projection
> >>
> /Type /LGIDict
> /Version (2.1)
> >>
> >> /PUT pdfmark
>
> However, there is no more info on how to program in this "TerraGo way"
> A next post shads a bit more lite on the matter.
> http://geopdf.blogspot.com/2009/02/geopdf-and-geops-with-adobe-style.html
> As you can see in the quada.ps file there is an alternative "Adobe way",
> which encodes the referencing as
>
> % embed georegistation info
> [ {ThisPage} <<
> /VP [ <<
> /Type /Viewport
> /BBox[0 0 dh dv]
> /Name Title
> /Measure <<
> /Type /Measure
> /Subtype /GEO
> /Bounds[0 0 0 1 1 1 1 0]
> /GPTS[29.0 -90.0 30.0 -90.0 30.0 -89.0 29.0 -89.0]
> /LPTS[0.024324 0.039461 0.051689 0.978774 0.975675 0.961136
> 0.957432 0.022122]
> /GCS <<
> /Type /PROJCS
> /WKT
> (PROJCS["WGS_1984_UTM_Zone_16N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",-87],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],UNIT["Meter",1]])
>
> >>
> >>
> >>]
> >> /PUT pdfmark
>
> Now this is more familiar, except for the
> /LPTS[0.024324 0.039461 0.051689 0.978774 0.975675 0.961136 0.957432
> 0.022122]
> part that, contrary to the promise has not been explained where it comes
> from.
>
> I think I could implement the first encoding type in GMT's ps2raster (if
> I knew all the specs)
> Second type would be even easier ... if we had a way to translate the
> GMT projection syntax into
> WKT, which we don't.
>
> Joaquim
>
>
>> Joaquim,
>>
>> Doing the format conversion from .ps to pdf is one thing (and there
>> are several ways to do it), but embedding the georeferencing in the
>> PDF to make it a GeoPDF is the interesting bit. I haven't found any
>> open source project capable of do that. Or even capable of writing
>> the PDF elements (e.g. Frames) necessary for writing the GeoPDF
>> information. But I remain hopeful...
>>
>> Brent
>>
>> Joaquim Luis wrote:
>>> Brent Fraser wrote:
>>>> I see the example calculation of the transformation matrix, and a
>>>> statement "I created a GeoPDF by running the Postscript file through
>>>> Ghostscript to create a Postscript file that looks like this"
>>>>
>>>> But I don't see where the georeferencing is written into PDF to make
>>>> it a GeoPDF. Is it a Ghostscript command line?
>>>
>>> Brent,
>>>
>>> One only has to convert it to pdf using ghostscript.
>>> I did it with GMT's ps2raster, like that
>>>
>>> ps2raster quad.ps -Tf -A
>>>
>>> Joaquim Luis
>>>
>>>>
>>>> Brent
>>>>
>>>> Klokan Petr Přidal wrote:
>>>>> Hi,
>>>>>
>>>>> There is a great blog post (and the linked "worked example" post
>>>>> with details):
>>>>> http://geopdf.blogspot.com/2009/02/geopdf-map-for-worked-example.html
>>>>>
>>>>> It shows you how to create geopdf via GhostScript - so there is
>>>>> already a practical open-source example how to encode the georeference
>>>>> into the PDF/PS according the OGC standard - for use in Acrobat
>>>>> Reader. To add support for such tag in MapServer, which generates pdf
>>>>> dynamicaly via pdflib, should not be totally problematic.
>>>>>
>>>>> Decoding is not as hard either, there are nice libraries like poppler
>>>>> (http://poppler.freedesktop.org/), which allows you to parse vectors
>>>>> (and convert them to SVG for example) or rasterize the PDF files (into
>>>>> TIFF,...) via Cairo.
>>>>> The work is in assigning correct geographic coordinates to the
>>>>> coordinate system internally used in PDF files and especially write
>>>>> the bridge to the outside world (with GDAL/OGR).
>>>>> I am afraid that authors of the GeoPDF standard would not like this,
>>>>> as it seems that the idea of GeoPDF is "see it in the Acrobat, print
>>>>> it, but that's all". At least I think so, because they discontinued
>>>>> their Geopdf2geotiff product and all the conversion tools are just one
>>>>> way - into GeoPDF. Please correct me...
>>>>>
>>>>> Anyway, in this moment you can quite easily use utility like
>>>>> "pdfimages" to extract full quality image tiles from any GeoPDF (like
>>>>> those from USGS) and merge it based on their location in PDF into one
>>>>> GDAL file via VRT (gdalbuildvrt) with a bit of hacking. This is what I
>>>>> did for my favorite USGS DRG of Grand Canyon ;-).
>>>>> Look at: http://klokan.mzk.cz/~klokan/geopdf/ - soon I will update the
>>>>> MapTiler.org overlay examples...
>>>>>
>>>>> Unfortunately all PDF parsing libraries I know are GPL, and that means
>>>>> we can't use them for the gdal driver - because of the license issues.
>>>>> But to create a GPL utility for converting GeoPDF to anything what
>>>>> GDAL/OGR supports should be OK. Poppler can be the best base of such
>>>>> GDAL-based utility for reading/rasterizing of the GeoPDF files.
>>>>>
>>>>> Now just find a sponsor and time to make it ;-).
>>>>>
>>>>> Best,
>>>>>
>>>>> Klokan Petr Pridal
>>>> _______________________________________________
>>>> gdal-dev mailing list
>>>> gdal-dev at lists.osgeo.org
>>>> http://lists.osgeo.org/mailman/listinfo/gdal-dev
>>>>
>>>>
>>>
>>>
>>
>>
>
> _______________________________________________
> gdal-dev mailing list
> gdal-dev at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/gdal-dev
--
--------------------------------------------------------------------------------
Peter J Halls, GIS Advisor, University of York
Telephone: 01904 433806 Fax: 01904 433740
Snail mail: Computing Service, University of York, Heslington, York YO10 5DD
This message has the status of a private and personal communication
--------------------------------------------------------------------------------
More information about the gdal-dev
mailing list