我正在使用库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
任何人都知道如何解决这个问题?
感谢。
答案 0 :(得分:3)
在投影系统之间进行转换时,始终会失去一些精确度。有许多错误来源,包括JavaScript引擎中浮点运算的限制以及投影之间转换的可逆性。
另一方面,您的源数据来自哪里?考虑到你只是在大约小数点后九位失去精度,你的源数据可能实际上并不准确(当然不是你常用的GPS,甚至是差分校正的),所以没有多少意义担心重新投影算法中引入的错误。
编辑:因此,经过一些计算 - 两次重新投影后的错误大约是1/10毫米。我非常怀疑为任何现实世界的应用程序改进它是值得的。