当我升级到 postGIS 3.3 时,我得到了不同的结果。最终为了缩小问题范围,我进行了从 SRID 900913 到 4316 的简单转换,令我惊讶的是,我得到了不同的结果。
见下文
postgres 15 上的 postgis 3.3.3
gis=# select ST_AsText(ST_Transform('010100002031BF0D00CDCCCC1CD50E5F41EC51B81E6583F2C0'::geometry(Geometry,900913),4326));
st_astext
---------------------------------------------
POINT(73.13770833824148 -0.685769673774372)
postgres 9.5 上的 postgis 2.2.1
gis=# select ST_AsText(ST_Transform('010100002031BF0D00CDCCCC1CD50E5F41EC51B81E6583F2C0'::geometry(Geometry,900913),4326));
st_astext
--------------------------------------------
POINT(73.1377083382415 -0.681179307212437)
我已将问题范围缩小到一个简单的查询,该查询在版本上给出不同的结果。 有什么想法吗?
PostGIS 依赖 Proj 库进行空间转换。随着时间的推移,Proj 经历了重大更新,提高了坐标系统的准确性和处理能力。这些更新可能会导致不同的转换结果,因为:
转换算法的变化:新版本的 Proj 可能使用更准确的转换算法。 EPSG 定义更新:定义坐标系的 EPSG 数据库会定期更新。这些更新可以更改转换中使用的参数。 错误修复和改进:Proj 的每个版本都修复了错误并提高了性能,这可能会改变转换结果。