2010-10-26 231 views
0

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

<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 

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

谢谢。

回答

3

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

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

编辑:所以,经过一些计算 - 两次重新投影后的误差约为毫米的十分之一。我非常怀疑这是值得在任何真实世界的应用程序上改进的。