将坐标单位转换为米
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
方法在具有两个不同默认实现的接口上找到:Euclidean2DCalculator
和 Sphere2DCalculator
。欧几里德实现假设一个无单位的笛卡尔坐标 space 并计算两个坐标之间的直线距离。这就是你得到的样子。
如果您正在寻找球坐标,那么您需要实例化Sphere2DCalculator
。我不熟悉库的用法,只是在 Google 代码上挖掘代码。
球体算法returns两点之间的大圆距离,以米为单位,假设地球是一个半径为6371010米的球形地球。
球形地球不是最好的表示,但根据您的应用程序可能就足够了。当前制图在 WGS 84 上标准化,而此库不支持该表示。
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
方法在具有两个不同默认实现的接口上找到:Euclidean2DCalculator
和 Sphere2DCalculator
。欧几里德实现假设一个无单位的笛卡尔坐标 space 并计算两个坐标之间的直线距离。这就是你得到的样子。
如果您正在寻找球坐标,那么您需要实例化Sphere2DCalculator
。我不熟悉库的用法,只是在 Google 代码上挖掘代码。
球体算法returns两点之间的大圆距离,以米为单位,假设地球是一个半径为6371010米的球形地球。
球形地球不是最好的表示,但根据您的应用程序可能就足够了。当前制图在 WGS 84 上标准化,而此库不支持该表示。