是否有Python代码来解析geoPDF文件以获取投影和图像数据? geoPDF2KML 工具?

问题描述 投票:0回答:4

我想组织大量的 geoPDF 文件,以便可以轻松地在 Google 地图和 Google 地球上叠加查看它们。

我认为,我的第一步是将 geoPDF 转换为 jpg 类型图像,然后需要匹配的纬度、经度信息。

是否有Python代码来解析geoPDF文件以获取投影和图像数据?

geoPDF2KML 工具?

python pdf gis geospatial
4个回答
3
投票

我在有 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 

2
投票

一种选择是使用 GDAL...

gdal的最新版本(即当前的svn trunk,而不是任何发布的版本)应该支持geoPDF。

您需要使用选项

--with-poppler=yes
进行编译并安装 poppler pdf 库。 (编译gdal可能有点痛苦,只是提前警告你......)

Gdal 的 python 绑定很痛苦,但它们通常可以工作。

从那里,您应该能够轻松使用 GDAL 将您的 geopdf 转换为地理参考 jpeg。

如果您还不熟悉 GDAL,那么这可能会带来麻烦而不值得。 geoPDF 中的地理配准信息可能可以通过其他方式提取...

无论如何,希望能有所帮助......


2
投票

下面的代码可能有助于指导想要将许多 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

0
投票

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
© www.soinside.com 2019 - 2024. All rights reserved.