将坐标单位转换为米

时间:2015-05-04 13:21:41

标签: c# .net spatial spatialite

public double CalculateDistance(
      Coordinate c,
      Coordinate a,
      Coordinate b,
      LineMode mode)

参数:

Ç     键入:SpatialLite.Core.API.Coordinate     用于计算距离的坐标。

一     键入:SpatialLite.Core.API.Coordinate     这一点的一点。

b     键入:SpatialLite.Core.API.Coordinate     这一行的另一点。

模式     键入:SpatialLite.Core.Algorithms.LineMode     LineMode值,指定AB是应该被视为无限线还是线段。

返回值 以坐标为单位从C到AB的距离。

我使用SpatialLite库中的上述方法。返回的变量是double类型,如文档中所述,它是坐标单位的距离。我不明白究竟是什么"协调的单位"是。如何将它们转换为米?

源代码here

2 个答案:

答案 0 :(得分:1)

单位可以是或不是米,具体取决于您的空间参照系。假设你有一个地理系统(例如WGS84),这意味着你以度为单位指定坐标,你就有度数作为单位。在矩形参考系统上,您可以将米作为单位。另一个单位是像素,它是显示器的距离单位 - 例如你的浏览器。这里坐标(0; 0)表示左上角,而地理系统中的(0,0)表示大西洋中的某些地方。

我非常确定SpatialLite有一种方法可以将一个坐标从一个空间参考系统投射到另一个空间参考系统中(这是你需要寻找的)。

编辑:我已经找到了做所需的SpatialLite的this方法。将您需要距离的点转换为目标空间参照系,然后使用简单代数计算距离。或者,将整个数据重新投影到UTM34。因此,您可以使用您已经提到的方法,因为您不需要任何需要很长时间的动态转换。但是,您永久更改数据。

答案 1 :(得分:1)

在具有两种不同默认实现的接口上找到CalculateDistance方法:Euclidean2DCalculatorSphere2DCalculator。欧几里得实现假定无单位笛卡尔坐标空间并计算两个坐标之间的直线距离。这就是你的样子。

如果您正在寻找球面坐标,则需要实例化Sphere2DCalculator。我不熟悉图书馆的使用方法,只是深入研究Google Code上的代码。

球形算法以米为单位返回两个点之间的大圆距离,假设球形地球的半径为6371010米。

球形地球不是最好的代表,但根据您的应用可能就足够了。当前制图标准化WGS 84,此库不支持该表示。