PROJ 9.6.0版本发布:地理空间坐标转换工具的重大更新
项目简介
PROJ是一个功能强大的开源地理空间坐标转换库,广泛应用于GIS(地理信息系统)领域。它提供了坐标转换、地图投影转换以及基准面转换等功能,是许多GIS软件(如QGIS、GDAL等)的核心组件之一。PROJ支持数千种坐标参考系统(CRS)和投影方法,能够处理复杂的地理空间数据转换需求。
PROJ 9.6.0版本核心更新
1. 性能优化与效率提升
新版本在多方面进行了性能优化,显著提升了处理效率:
-
坐标转换加速:
proj_factors()函数在重复调用相同复合或投影CRS时速度得到显著提升,这对于需要频繁进行相同类型坐标转换的应用场景尤为重要。 -
数据库查询优化:
createOperations()函数避免了对使用未知基准的CRS(通常是PROJ字符串)进行不必要的数据库查找,减少了冗余操作。 -
内存缓存管理:
proj_download_file()函数现在会在下载文件后使相关内存缓存失效,确保当前上下文中的数据一致性。
2. 新增投影方法支持
9.6.0版本引入了多种新的地图投影方法:
-
Airocean投影(原Dymaxion投影):这是一种创新的投影方法,能够将地球表面展开为一个近似等面积的二十面体,特别适合全球可视化。
-
Spilhaus投影:专为海洋制图设计的投影方法,能够突出显示全球海洋系统的连通性。
-
新增对ESRI:54099(
WGS_1984_Spilhaus_Ocean_Map_in_Square)投影的PROJ字符串导出支持。
3. 坐标参考系统(CRS)处理增强
-
复合CRS支持:
proj_trans_bounds()函数现在能够正确处理目标CRS为复合CRS的情况,扩展了其应用范围。 -
工程CRS支持:数据库新增了
engineering_datum和engineering_crs表,并导入了相关EPSG记录,增强了对工程坐标系统的支持。 -
垂直转换改进:新增对"Vertical Offset by Grid Interpolation (asc)"方法的支持,映射到
+proj=vgridshift。
4. 数据库与转换方法更新
-
EPSG数据库升级:更新至EPSG v12.004版本,包含最新的坐标参考系统定义。
-
转换方法扩展:新增对"Coordinate Frame rotation full matrix (geocen)"和"Coordinate Frame rotation full matrix (geog2D)"方法的支持。
-
网格转换增强:支持新的EPSG方法"Cartesian Grid Offsets by TIN Interpolation (JSON)"和"Vertical Offset by TIN Interpolation (JSON)"。
5. 构建与部署改进
-
C++17标准:项目构建系统升级至C++17版本,利用了现代C++的特性优势。
-
资源文件嵌入:新增CMake选项
EMBED_RESOURCE_FILES和USE_ONLY_EMBEDDED_RESOURCE_FILES,允许将proj.db和proj.ini等资源文件直接嵌入到库中,简化部署。 -
TIF/JSON资源嵌入:通过
EMBED_RESOURCE_DIRECTORY选项,可以将.tif/.json文件嵌入到libproj中,提高便携性。
重要问题修复
-
坐标转换稳定性:修复了
+proj=cass投影在输入坐标等于假东移或假北移值时可能出现的非收敛问题。 -
内存管理:修复了
proj_clone()函数未能正确传播errorIfBestTransformationNotAvailable等标志的问题。 -
SSL连接:增加了对"SSL connection timeout"的重试机制,提高了网络操作的可靠性。
-
ITRF转换:修正了ITRF97到ITRF2014转换文件中的参数错误。
开发者工具增强
-
projinfo改进:现在可以显示操作是否具有时间依赖性,帮助开发者更好地理解转换特性。
-
bash自动补全:为projinfo工具添加了bash补全脚本,提升命令行使用体验。
-
调试支持:在多网格TIFF文件打开时,将子网格索引附加到网格名称中,便于调试和分析。
总结
PROJ 9.6.0版本在性能、功能和稳定性方面都有显著提升,特别是新增的投影方法和增强的CRS处理能力,使其在地理空间数据处理领域继续保持领先地位。对于GIS开发者和数据分析师来说,升级到这个版本将获得更高效、更可靠的坐标转换体验。无论是处理传统的地图投影需求,还是应对新兴的地理空间数据处理挑战,PROJ 9.6.0都提供了强有力的支持。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0218
cann-learning-hubCANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。Jupyter Notebook0140
uni-appA cross-platform framework using Vue.jsJavaScript09
GLM-5.2智谱开源 GLM-5.2,这是针对长文本任务的最新旗舰模型。相较于前代产品 GLM-5.1,它在长文本任务处理能力上实现了显著飞跃,并且首次在稳定的 100 万 token 上下文中提供这一能力。Jinja00
SwanLab⚡️SwanLab - an open-source, modern-design AI training tracking and visualization tool. Supports Cloud / Self-hosted use. Integrated with PyTorch / Transformers / LLaMA Factory / veRL/ Swift / Ultralytics / MMEngine / Keras etc.Python00
tiny-universe《大模型白盒子构建指南》:一个全手搓的Tiny-UniverseJupyter Notebook03