做GIS开发或者数据分析的朋友们,应该都懂那种痛。手里攥着一堆珍贵的空间数据,格式要么是那种 proprietary 私有格式,要么是一层层复杂的文件夹结构,想拿出来分享或者归档,最方便的就是转成通用的 geo数据库 pdf 形式。别嫌我啰嗦,昨天我在整理项目资料时,差点因为一个版本兼容性问题把三个通宵的成果给搞砸了。现在市面上工具那么多,但真正好用且不踩雷的并不多。
首先得说清楚,很多人对“转换”有个误区,觉得就是把地图打印出来。大错特错。我们需要的不仅是图片,而是具备查询属性的文档。如果你只是简单截图或者打印成图片,那根本算不上真正的 geo数据库 pdf,后续连个图层都打不开,更别提做空间分析了。真正的 geo数据库 pdf 核心在于它的 GeoJSON 或者 GeoXML 元数据是否完整嵌入到了 PDF 的文件结构中。这点在 ArcGIS Pro 2.9 以上版本,或者 QGIS 3.28 版本里做得还算不错,但如果你还在用老版本的 ArcMap,恭喜你,你掉进坑里了。老版本打印出来的 PDF,空间信息往往是丢失或者损坏的,你指望用现在的 Adobe Acrobat 去恢复?很难,基本是徒劳。
我在实际操过程中发现,最大的坑在于坐标系的问题。很多小伙伴直接导出,结果导出来的 PDF 拿到其他平台上一打开,地图歪得亲妈都不认识。这是因为导出时没有正确绑定 CRS(坐标参考系统)。正确的姿势是,在导出前,确保你的地图框架里所有图层的坐标系是一致的,并且明确指定投影。比如你要导出用于国内项目的 geo数据库 pdf,务必选择 CGCS2000 或者 Gauss-Kruger 投影,千万别用 WGS84 经纬度直接导矢量数据到 PDF,那样虽然能看个大概,但坐标偏移能让你怀疑人生。
再说说那个被很多人忽视的细节——透明度。有时候我们的底图是复杂的 DEM 或者卫星影像,为了叠加矢量要素,我们习惯把矢量设置成半透明。但在生成 geo数据库 pdf 的过程中,有些转换器处理不好半透明像素,最后输出的文档里,线条变得糊成一团,或者完全看不见。建议你在导出前,先把透明度设为 100%,或者将矢量要素转成光栅化后再导出,虽然文件体积会变大,但稳妥啊。
还有一点,文件体积。生成的 geo数据库 pdf 动不动就几百兆甚至几个G,怎么发给老板或者客户?这时候就需要压缩。但普通的压缩会牺牲掉大部分空间信息。推荐在导出时选择“最小化文件大小”选项,然后在 Acrobat Pro 里使用“优化 PDF”功能,勾选“保留嵌入的空间数据”。这一步很关键,我上次因为没勾选,结果文档发出去后,同事那边打不开属性表,急得给我打电话,还好及时补救,重新导了一遍。
最后提一嘴,QGIS 的用户。虽然 QGIS 开源免费,功能强大,但在导出 geo数据库 pdf 时,它的菜单藏得挺深。在“项目”->“打印布局”->“导出为 PDF”里,注意左下角有个“高级”按钮,点进去找到“地图元数据”,确保选中了“嵌入空间参考系”。很多新手找不到这个选项,导致导出的 PDF 只有皮没有骨。
总结一下,生成高质量 geo数据库 pdf 并不难,难的是对细节的把控。坐标系要统一,版本要匹配,透明度和压缩比要权衡好。希望我刚才说的这些坑,能帮你少走弯路。毕竟,做技术的,时间就是生命,别把精力浪费在这些低级错误上。要是你还遇到什么奇怪的问题,别硬扛,多去社区翻翻帖子,或者看看官方文档的最新更新,别信那些过时的教程。数据是活的,工具也是常更的,咱们也得跟着变。
(注:刚才写到这儿突然想起,之前有个朋友用 GeoServer 直接输出 PDF 格式,那效果简直惨不忍睹,建议大家还是本地软件处理好再导出更靠谱。另外,Adobe 最近有个插件好像能修复一些损坏的空间元数据,感兴趣可以自己搜搜看,不过还是预防胜于治疗。)