【问题标题】:Converting coordinate units to meters将坐标单位转换为米
【发布时间】:2015-05-04 13:21:41
【问题描述】:
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 LineMode 值,指定 AB 应被视为无限线还是线段。

返回值 C 到 AB 线的距离,坐标单位。

我正在使用来自SpatialLite Library 的上述方法。返回的变量是 double 类型,如文档中所述,它是以坐标为单位的距离。我不明白“坐标单位”到底是什么。如何将它们转换为米?

源码here.

【问题讨论】:

  • 假设您有一个坐标 (0,0) 和一个坐标 (0,1)。这两个坐标之间的距离是一个坐标的单位。

标签: c# .net spatial spatialite


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 是度数。但它不会像 23.1247,38.2114 这样的坐标返回该方法只是返回像 19.874 这样的双精度数
    • 这只是表示 19.874 度的距离,现在使用您需要的目标空间参考将其转换为米。您的计划适用于哪个位置?
    • 希腊。我应该使用什么空间参考?
    • 这进一步取决于您想要的投影精度,但是 UTM34 可能是您的不错选择。您的源参考系统是哪个?
    • 源参考系统是WGS84
    猜你喜欢
    • 2011-08-20
    • 2011-02-10
    • 2014-02-26
    • 1970-01-01
    • 1970-01-01
    • 2014-05-06
    • 2021-11-11
    • 2014-07-21
    • 2019-05-16
    相关资源
    最近更新 更多