Monday 28 August 2017

ogr2ogr - How to have GDAL print layers of GeoPDF AND say which are raster vs vector


My Objective: I would like to use GDAL to convert a GeoPDF. I want the vector layers as shp files and the raster layers as tif files. I want to do this in a programmatic way.



Edit: In reality, I want to do this with many geospatial PDFs. I'm prototyping the workflow using Python, but it will probably end up being C++. (End Edit)


The Problem: Naturally, the command to convert a vector layer differs from a raster layer. And I don't know (again in a programmatic way) which layers are vector and which are raster.


What I've Tried: First, here is my sample data https://www.terragotech.com/images/pdf/webmap_urbansample.pdf.


gdalinfo webmap_urbansample.pdf -mdd LAYERS

gives the layer names:


...
Metadata (LAYERS):
LAYER_00_NAME=Layers
LAYER_01_NAME=Layers.BPS_-_Water_Sources

LAYER_02_NAME=Layers.BPS_-_Facilities
LAYER_03_NAME=Layers.BPS_-_Buildings
LAYER_04_NAME=Layers.Sewerage_Man_Holes
LAYER_05_NAME=Layers.Sewerage_Pump_Stations
LAYER_06_NAME=Layers.Water_Points
LAYER_07_NAME=Layers.Roads
LAYER_08_NAME=Layers.Sewerage_Jump-Ups
LAYER_09_NAME=Layers.Sewerage_Lines
LAYER_10_NAME=Layers.Water_Lines
LAYER_11_NAME=Layers.Cadastral_Boundaries

LAYER_12_NAME=Layers.Raster_Images
...

I know to look at the data which are vector and which are raster, but I don't know how to parse this information to know whether to use ogr2ogr or gdal_translate to do the conversion.


Then I thought I could use ogrinfo and just diff all the layers to deduce which ones are raster, but ogrinfo gives me:


...
1: Cadastral Boundaries (Polygon)
2: Water Lines (Line String)
3: Sewerage Lines (Line String)
4: Sewerage Jump-Ups (Line String)

5: Roads
6: Water Points (Point)
7: Sewerage Pump Stations (Point)
8: Sewerage Man Holes (Point)
9: BPS - Buildings (Polygon)
10: BPS - Facilities (Polygon)
11: BPS - Water Sources (Point)

So there's not a one-to-one correspondence with the way these are output.


Does anyone know how to have gdal print the GeoPDF layers and indicate which are raster vs. vector?





No comments:

Post a Comment

arcpy - Changing output name when exporting data driven pages to JPG?

Is there a way to save the output JPG, changing the output file name to the page name, instead of page number? I mean changing the script fo...