【问题标题】:Precision error when transforming coordinates using proj4js使用 proj4js 转换坐标时的精度错误
【发布时间】:2011-04-30 20:44:54
【问题描述】:

我正在使用库 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

有人知道如何解决这个问题吗?

谢谢。

【问题讨论】:

    标签: javascript coordinates proj proj4js


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2021-12-23
      • 2015-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-21
      相关资源
      最近更新 更多