这是一个老歌,但我似乎找不到解决方案。
当我想在
st_transform
坐标上对 900913
系统执行 4326
操作时,y 坐标会发生移动。
示例:
SELECT
AsText(
Transform(
Transform(
GeomFromText( 'POINT( 449760.25168159 6790560.4594059 )', 900913),
4326
),
900913
)
)
这里原来的
900913
起始点是st_stransformed
到4326
然后回到900913
。结果不是原来的点,y不同。
我尝试将
proj4text
更改为 4326
,添加 +nadgrids=@null
就像我在某处读到的那样。
proj4text
的 srid 4326
目前是:
"select proj4text from spatial_ref_sys where srid=4326"
+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs
proj4text
的 srid 900913
目前是:
"select proj4text from spatial_ref_sys where srid=900913"
+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m
+nadgrids=@null +no_defs
我还尝试从
900913
到另一个到 4326
的投影,但我得到了与从 900913
到 4326
的直接变换完全相同的点。
大家有什么想法吗?
EPSG:900913 是不明确的投影。您应该使用 EPSG:3857,它应该与球面墨卡托完全相同,但是是标准化的。
任何重投影都是有损操作。来回转换坐标会在最后的二进制数字中产生噪音,这通常是亚毫米误差。
您使用的 PostGIS 版本是什么?我已经尝试使用此配置进行查询:
POSTGIS="1.5.2" GEOS="3.2.2-CAPI-1.6.2" PROJ="Rel. 4.7.1, 23 September 2009"
,它工作正常。
尽管如此,我还是红色了一些涉及 900913 坐标的问题。