将坐标单位转换为米

Converting coordinate units to meters

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

参数:

c 类型:SpatialLite.Core.API.Coordinate 计算距离的坐标。

一个 类型:SpatialLite.Core.API.Coordinate 线一分。

b 类型:SpatialLite.Core.API.Coordinate 线的另一个点。

模式 类型:SpatialLite.Core.Algorithms.LineMode 指定 AB 应被视为无限线还是线段的 LineMode 值。

Return 值 从 C 到直线 AB 的距离(以坐标单位表示)。

我正在使用 SpatialLite 库中的上述方法。返回的变量是双精度类型,如文档中所述,它是以坐标单位表示的距离。我不明白 "coordinate's units" 到底是什么。我如何将它们转换为米?

源代码here .

单位可以是也可以不是米,具体取决于您的空间参考系统。假设您有一个地理系统(例如 WGS84),这意味着您以度为单位分配坐标,您以度为单位。然而,在矩形参考系统上,您可能以米为单位。另一个单位是像素,它是显示器的距离单位——例如你的浏览器。这里坐标(0; 0)表示左上角,而地理系统中的(0, 0)表示大西洋某处。

我很确定 SpatialLite 有一种方法可以将一个坐标从一个空间参考系统投影(这就是您需要寻找的)到另一个空间参考系统。

编辑:我发现 this spatialLite 方法可以满足您的需要。将需要距离的点转换为目标空间参考系统,然后使用简单的代数计算距离。或者将整个数据重新投影到 UTM34。因此,您可以使用您已经提到的方法,因为您不需要任何需要很长时间的即时转换。但是,您会永久更改您的数据。

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

如果您正在寻找球坐标,那么您需要实例化Sphere2DCalculator。我不熟悉库的用法,只是在 Google 代码上挖掘代码。

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

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