使用JavaScript将笛卡尔坐标(ECEF)转换为WGS84(Lat / Long Decimal)

时间:2012-10-23 20:44:42

标签: javascript mapping geospatial

我有一个javascript文件正在读取包含笛卡尔坐标的文本文件。我可以解析出X,Y,Z值;但是我需要将这些转换为十进制格式的纬度/经度。这些输出值将用于谷歌地图标记。

我一直在研究,肯定有很多关于纬度/长度到笛卡尔的转换的指南,但是我需要这个指向相反的方向。

尝试了以下几点:

//convert to lat long dec
var tmp = cartZ/6371;
//convert to radians
var tmpR = tmp * Math.PI / 180;
var lat = Math.asin(tmpR);
latFinal = lat * 180 / Math.PI;
alert (latFinal);

通常这是完全错误的...不确定我是否在正确的轨道上!

如果有人在使用javascript之前做到了这一点,那就太好了。

3 个答案:

答案 0 :(得分:1)

您可以尝试使用proj4js库为您进行转换。请参阅this question - 投影不同,但您应该能够弄明白。

答案 1 :(得分:1)

我最终使用了以下内容:javascript routines

正是我所需要的。希望这篇文章对其他人有所帮助。谢谢!

答案 2 :(得分:0)

npmjs.org上有这个方便的库,可以帮到你。安装后(使用npm和browserify),您可以使用:

var projector = require('ecef-projector');
var xyz = projector.project(37.8043722, -122.2708026, 0.0);
console.log(xyz);  
// output: [ -2694044.4111565403, -4266368.805493665, 3888310.602276871 ]

var gps = projector.unproject(xyz[0], xyz[1], xyz[2]);
console.log(gps);
// output: [ 37.8043722, -122.27080260000001, 0.0 ]

使用它你可以双向投射。