Ich weiß, dass diese Frage alt ist, aber ich hatte dieses Problem kürzlich und kam schließlich mit einer Möglichkeit heraus, dies zu tun.
Dies kann mithilfe von Osgeo's erreicht werden gdal
, in dem zufällig ein PDF-Treiber enthalten ist. Grundsätzlich können Sie Folgendes tun:
from osgeo import gdal
#Open your Unreferenced PDF
src = gdal.Open("originalFile.pdf")
Erhalten oder berechnen Sie dann auf irgendeine Weise das gewünschte Projektionssystem und die gewünschte Geotransformation, die Sie zur PDF-Datei hinzufügen möchten. Zum Beispiel können wir diese aus einem GeoTiff extrahieren, indem wir Folgendes tun:
#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()
Stellen Sie schließlich die Projektion und die Geotransformation auf Ihr PDF ein und erstellen Sie dann eine Kopie mit dem PDF-Treiber:
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)
Das Ergebnis ist eine PDF-Datei, deren obere linke Ecke gt
mithilfe des Projektionssystems georeferenziert wird coords
. Dies kann überprüft werden, indem Sie die PDF-Datei in QGis oder ArcGis öffnen oder indem Sie den gdalinfo
Befehl in der PDF-Datei verwenden, auf die verwiesen wird.