Sei que essa pergunta é antiga, mas tive esse problema recentemente e, finalmente, descobri uma maneira de fazer isso.
Isso pode ser feito usando o Osgeo gdal
, que inclui um driver de PDF. Basicamente, você pode fazer algo como:
from osgeo import gdal
#Open your Unreferenced PDF
src = gdal.Open("originalFile.pdf")
Em seguida, obtenha ou calcule de alguma forma o Sistema de projeção e a geotransformação desejados que você deseja adicionar ao PDF. Por exemplo, podemos extrair os de um GeoTiff fazendo o seguinte:
#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()
Por fim, defina a projeção e a geotransformação para o seu PDF e crie uma cópia com o 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)
O resultado é um PDF georreferenciado para ter seu canto superior esquerdo colocado no local gt
usando o Sistema de projeção coords
. Isso pode ser verificado abrindo o PDF no QGis ou ArcGis, ou também usando o gdalinfo
comando no PDF referenciado.