Tôi biết câu hỏi này đã cũ, nhưng tôi đã có vấn đề này gần đây và cuối cùng đã đưa ra một cách để làm điều này.
Điều này có thể được thực hiện bằng cách sử dụng Osgeo gdal
, có trình điều khiển PDF đi kèm. Về cơ bản bạn có thể làm một cái gì đó như:
from osgeo import gdal
#Open your Unreferenced PDF
src = gdal.Open("originalFile.pdf")
Sau đó, lấy hoặc tính toán bằng cách nào đó Hệ thống Chiếu và Geotransform mong muốn mà bạn muốn thêm vào PDF. Ví dụ: chúng ta có thể trích xuất những thứ đó từ GeoTiff bằng cách thực hiện:
#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()
Cuối cùng, đặt phép chiếu và geotransform thành PDF của bạn và sau đó tạo một bản sao với Trình điều khiển 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)
Kết quả là một tệp PDF được tham chiếu địa lý để đặt góc trên bên trái của nó được đặt tại vị trí gt
bằng Hệ thống Chiếu coords
. Điều này có thể được xác minh bằng cách mở tệp PDF trên QGis hoặc ArcGis hoặc bằng cách sử dụng gdalinfo
lệnh trên tệp PDF được tham chiếu của bạn.