Saya tahu pertanyaan ini sudah lama, tetapi saya memiliki masalah ini baru-baru ini dan akhirnya keluar dengan cara untuk melakukan ini.
Ini dapat dilakukan dengan menggunakan Osgeo gdal
, yang kebetulan menyertakan driver PDF. Pada dasarnya Anda dapat melakukan sesuatu seperti:
from osgeo import gdal
#Open your Unreferenced PDF
src = gdal.Open("originalFile.pdf")
Kemudian dapatkan atau hitung entah bagaimana Sistem Proyeksi yang diinginkan dan Geotransform yang ingin Anda tambahkan ke PDF. Misalnya, kita dapat mengekstraknya dari GeoTiff dengan melakukan:
#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()
Terakhir, atur proyeksi dan geotransformasi ke PDF Anda dan kemudian buat salinannya dengan Driver 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)
Hasilnya adalah PDF yang di-georeferensi agar sudut kiri atas diletakkan di lokasi gt
menggunakan Sistem Proyeksi coords
. Ini dapat diverifikasi dengan membuka PDF pada QGis atau ArcGis, atau menggunakan gdalinfo
perintah pada PDF referensi Anda.