Я знаю, що це питання давнє, але у мене виникло це питання нещодавно і, врешті-решт, я вийшов зі способом цього зробити.
Це можна досягти, скориставшись програмою Osgeo, до 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.