中国开发网: 论坛: 程序员情感CBD: 贴子 871777
jacky1936
找到原因了
Google Map API 国内地图偏移的解决 收藏
由于国内地图采用的坐标系统和国际通用的不一样,所以如果直接用GPS取得的经纬度 来请求Google Map ,会发现有偏移。CSDN上有个牛人 找到了Google 修正偏移的接口,完美解决了这个问题 。


在使用他所说的方法之前,为了解决地图偏移问题,找了不少资料,发现对引起国内地图偏移的原因有所误解,也就是说,其实不是以前一直以为的有关部门瞎折腾。

简单地说,地球不是一个完美的椭圆体,所以如何以经纬度 及海拔来标识地球上面的一个点,与选择什么样的近似椭圆体是有关的。(外行表述,行家请指教)国际上比较通用的体系叫做WGS84,中国现在的地图则基本采用了北京54 体系,另外国内还有一个西安80体系,看到资料貌似现在新建设的GIS系统还要采用一个2000年的标准。

一个国家采用自己的标准,也不是只有中国这么干,貌似现在有上百个这类的坐标系。坐标系之间是可以互相转换的。首先,要将一个坐标系的经纬度 和海拔BLH这三个数据,根据选择的椭圆形的长径和扁率来转换成称为大地坐标的XYZ,然后使用另外一个体系的长径和扁率来将XYZ转换成新的BLH。所有的坐标体系所选择的椭圆形的半径和扁率都是公开的,包括国内的这些。

这 样看起来貌似没问题,但是实际上通过这样的转换是无法得到正确的坐标的。因为各个坐标体系选择地球的哪个点来作为椭球的中心,以及坐标轴的方向,都不一样 的。所以,在将XYZ转换成新的BLH之前,还需要对XYZ进行一次变换。外行的我不知道原因,只知道地球上各个点要进行变换所需要的参数是不一样的,而 且是没法通过公式计算的。

其它的坐标体系会把变换所需要的参数公开,但是北京54 和西安80则只公开了这两者之间互转的参数,原因是基于国家安全的理由。所以,世界上的GIS系统支持很多坐标系,但是就是没法支持这两个,也增加了国内搞GIS的人很多麻烦。

总而言之,国内采用自己的坐标系,不是特立独行瞎折腾,只不过……


相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录