Je sais que cette question est ancienne, mais j'ai eu ce problème récemment et j'ai finalement trouvé un moyen de le faire.
Cela peut être accompli en utilisant Osgeo gdal
, qui se trouve avoir un pilote PDF inclus. Fondamentalement, vous pouvez faire quelque chose comme:
from osgeo import gdal
#Open your Unreferenced PDF
src = gdal.Open("originalFile.pdf")
Ensuite, obtenez ou calculez en quelque sorte le système de projection et la géotransformation que vous souhaitez ajouter au PDF. Par exemple, nous pouvons extraire ceux d'un GeoTiff en faisant:
#Open the Tiff to obtain its data from
geoTiff = gdal.Open("someMap.tif")
#Obtain its Projection system and its Geotransform
coords = geoTiff.GetProjection()
gt = geoTiff.GetGeoTransform()
Enfin, définissez la projection et la géotransformation sur votre PDF, puis créez une copie avec le pilote PDF:
src.SetProjection(coords)
src.SetGeoTransform(gt)
#Instantiate a PDF driver and save your Referenced copy
pdf_driver = gdal.GetDriverByName("PDF")
dst = pdf_driver.CreateCopy("referencedFile.pdf", src, 1)
Le résultat est un PDF géoréférencé pour que son coin supérieur gauche soit placé à l'emplacement gt
à l'aide du système de projection coords
. Cela peut être vérifié en ouvrant le PDF sur QGis ou ArcGis, ou bien en utilisant la gdalinfo
commande sur votre PDF référencé.