我想组织大量的 geoPDF 文件,以便可以轻松地在 Google 地图和 Google 地球上叠加查看它们。
我认为,我的第一步是将 geoPDF 转换为 jpg 类型图像,然后需要匹配的纬度、经度信息。
是否有Python代码来解析geoPDF文件以获取投影和图像数据?
geoPDF2KML 工具?
我在有 python 的 ubuntu 系统上使用的步骤(python 已经是 Unbuntu 的一部分) 1.下载并安装poppler 2.下载并安装proj4 3.下载并安装gdal
poppler$./configure --enable-xpdf-headers --prefix=/usr/local/include/poppler" then the usual "$make" and "$make install"
poppler$make
poppler$sudo make install
sudo apt-get install proj4
gdal$./configure --with-static-proj4=/usr/local/lib --with-threads --with-libtiff=internal --with-geotiff=internal --with-jpeg=internal --with-gif=internal --with-png=internal --with-libz=internal --with-poppler=/usr/local/include/poppler --with-python
gdal$make
gdal$sudo make install
一种选择是使用 GDAL...
gdal的最新版本(即当前的svn trunk,而不是任何发布的版本)应该支持geoPDF。
您需要使用选项
--with-poppler=yes
进行编译并安装 poppler pdf 库。 (编译gdal可能有点痛苦,只是提前警告你......)
Gdal 的 python 绑定很痛苦,但它们通常可以工作。
从那里,您应该能够轻松使用 GDAL 将您的 geopdf 转换为地理参考 jpeg。
如果您还不熟悉 GDAL,那么这可能会带来麻烦而不值得。 geoPDF 中的地理配准信息可能可以通过其他方式提取...
无论如何,希望能有所帮助......
下面的代码可能有助于指导想要将许多 geoPDF 转换为 KML-Superoverlay 的人,然后可以使用 Google Maps API 或 Google Earth API 将其合并为网络地图叠加层...
import shlex
import subprocess
from subprocess import Popen, PIPE
import os
def step1_translate( input_file ):
out = input_file + ".vrt"
translate_command = "gdal_translate -of VRT %s %s" % (input_file,out)
translate_args = shlex.split( translate_command )
p1 = subprocess.Popen( translate_args) # translate
print p1
def step2_warp( input_file):
gdalwarp_command = "gdalwarp -of VRT -t_srs EPSG:4326 %s %s" % (output_file,output_file2)
gdalwarp_args = shlex.split( gdalwarp_command )
p2 = subprocess.Popen( gdalwarp_args , stdin=p1.stdout ) #gdalwarp
def step3_tile( input_file, output_file, output_file2 ):
gdal2tiles_command = "/home/boris/gdal/swig/python/scripts/gdal2tiles.py -p geodetic -k %s" % output_file2
gdal2tiles_args = shlex.split( gdal2tiles_command )
p3 = subprocess.Popen( gdal2tiles_args , stdin=p2.stdout) #gdal2tiles
Python 库 pdfrw (https://pypi.org/project/pdfrw/) 将返回坐标参考信息。下面的示例将从 ArcGIS Pro (3.x) 中制作的地理配准 PDF 中提取坐标系 - 其他来源可能有所不同。结合这三个方面应该允许您在其他地方(例如 KML)对 PDF 的内容进行地理配准。
from pdfrw import PdfReader
myPDF = r'path\to\my.pdf'
x = PdfReader(myPDF)
myGeoCoords = x.pages[0]['/VP'][0]['/Measure']['/GPTS'] #lat/long extent of georeference
myPageCoords = x.pages[0]['/VP'][0]['/Measure']['/LPTS'] #extent on the page of the georeference
myCoordSystem = x.pages[0]['/VP'][0]['/Measure']['/GCS'] #projection information in WKT format