Я знаю, что этот вопрос старый, но у меня недавно была эта проблема, и в конце концов я нашел способ сделать это.
Это может быть достигнуто с помощью Osgeo's gdal
, который включает драйвер PDF. В основном вы можете сделать что-то вроде:
from osgeo import gdal
#Open your Unreferenced PDF
src = gdal.Open("originalFile.pdf")
Затем получите или рассчитайте каким-либо образом нужную систему проекции и геотрансформацию, которую вы хотите добавить в PDF. Например, мы можем извлечь их из GeoTiff, выполнив:
#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()
Наконец, установите проекцию и геотрансформацию в PDF, а затем создайте копию с помощью драйвера 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)
В результате получается PDF-файл с географической привязкой, в котором его левый верхний угол размещается на месте gt
с использованием системы проекции coords
. Это можно проверить, открыв PDF-файл в QGis или ArcGis, или, используя gdalinfo
команду PDF-файла, на который вы ссылаетесь.