使用proj4js转换坐标时的精度误差

时间:2010-10-26 16:44:55

标签: javascript coordinates proj4 proj4js

我正在使用库Proj4js来转换坐标。我正在将坐标从EPSG:23029转换为EPSG:4326。问题是通过变换坐标,与处理负载中使用的精度有一些偏差。我注意到这是通过将坐标系从原点转换到目标而反之亦然。我用来进行转换的代码是:

<script type="text/javascript" src="/proj4js/lib/proj4js-compressed.js"> </ script>
<script type="text/javascript" src="/proj4js/lib/projCode/merc.js"> </ script>
<script type="text/javascript" src="/projCode/tmerc.js"> </ script>
<script type="text/javascript" src="/proj4js/defs/EPSG23029.js"> </ script>
<script type="text/javascript" src="/proj4js/defs/EPSG4326.js"> </ script>

source = new Proj4js.Proj ('EPSG: 23029');
dest = new Proj4js.Proj (map.projection.toString ());

x = feature_selected.geometry.x;
y = feature_selected.geometry.y;

p = new Proj4js.Point (x, y);

p = Proj4js.transform (source, dest, feature_selected.geometry);

当我在两个方向进行转换时,原点不一样。

 x1= -6.34378379330039
 y1=  39.48007480688388

 x2= -6.343783791584894
 y2= 39.4800748068322604

任何人都知道如何解决这个问题?

感谢。

1 个答案:

答案 0 :(得分:3)

在投影系统之间进行转换时,始终会失去一些精确度。有许多错误来源,包括JavaScript引擎中浮点运算的限制以及投影之间转换的可逆性。

另一方面,您的源数据来自哪里?考虑到你只是在大约小数点后九位失去精度,你的源数据可能实际上并不准确(当然不是你常用的GPS,甚至是差分校正的),所以没有多少意义担心重新投影算法中引入的错误。

编辑:因此,经过一些计算 - 两次重新投影后的错误大约是1/10毫米。我非常怀疑为任何现实世界的应用程序改进它是值得的。