ฉันรู้ว่าคำถามนี้เก่า แต่ฉันมีปัญหานี้เมื่อเร็ว ๆ นี้และในที่สุดก็ออกมาพร้อมกับวิธีการทำเช่นนี้
สามารถทำได้โดยใช้ Osgeo gdal
ซึ่งมีไดรเวอร์ PDF รวมอยู่ด้วย โดยทั่วไปคุณสามารถทำสิ่งที่ชอบ:
from osgeo import gdal
#Open your Unreferenced PDF
src = gdal.Open("originalFile.pdf")
จากนั้นรับหรือคำนวณค่า Projection System และ Geotransform ที่คุณต้องการเพิ่มลงใน 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 ที่อ้างอิงของคุณ