从以毫米为单位的距离计算坐标
Calculate coordinates from a distance in mm
我正在编写一个软件,负责记录某些机器部件的位置。
现在是这样的:
- 有 1 个 RTK 固定 GPS 接收器(+/- 2 厘米精度),固定在机器上。使用 2 个不同的位置计算航向
- 机器上有2个臂(左臂和右臂)可以相互独立地向外或向内旋转
- 机器上有固定位置的 1 个臂(中臂)
我已经拥有的:
一个计算手臂外侧位置的软件(这很有魅力)。这会生成一个 shapefile 作为日志文件,其中手臂的位置是可见的,这适用于每个标题。
问题是:
该算法使用以毫米为单位的 delta X 和 delta Y 距离计算手臂的位置。
我的假设是经度 0.00000001 等于 X 轴上的 1.1 毫米 (source)。男孩,我错了什么...
当使用 shapefile 查看器测量生成的 shapefile 时,它返回 2,19 米而不是计算的 3,25。请注意,这是在纬度 52.810146939(北半球)上。
因此问题:
有没有人知道如何形成一个以纬度或经度为起点和以 [mm] 为单位的距离然后返回校正后的纬度或经度的公式?或者我如何计算相对增量坐标值以将它们与原始坐标相加?
我有一段代码:
Armlocations->leftarm.locationX = ownLocation.locationX + MM_TO_COOR(deltaX);
Armlocations->leftarm.locationY = ownLocation.locationY + MM_TO_COOR(deltaY);
deltaX 和 deltaY 是以毫米为单位的距离,应该添加到坐标中。宏MM_TO_COOR是这样的:
#define COOR_TO_MM(x) ((x) * 110000000)
#define MM_TO_COOR(x) ((x) / 110000000)
问题不是关于编程 -> 我明白了,而是更多关于与此相关的数学。
我确定这不是正确的地方,它可能更适合使用 https://gis.stackexchange.com。
关于纬度,它总是(大约)每度111公里,所以.00000001°(1E-8°)在y方向上确实应该是1.1毫米。
经度的关系确实取决于您当前的纬度:在这里,每度的系数是 111 公里乘以 cos(纬度)。在您的情况下,这将(在球形地球上)产生 0.60445804192912 的系数,导致每度 67.1 公里或每 1E-8° 0.671 毫米。在我们的耳朵上,在两极被压平了,这个值略有不同,但应该是差不多的(但是我不知道误差有多大。)
你确定你的GPS设备有这么高的几毫米的分辨率吗?
我正在编写一个软件,负责记录某些机器部件的位置。
现在是这样的:
- 有 1 个 RTK 固定 GPS 接收器(+/- 2 厘米精度),固定在机器上。使用 2 个不同的位置计算航向
- 机器上有2个臂(左臂和右臂)可以相互独立地向外或向内旋转
- 机器上有固定位置的 1 个臂(中臂)
我已经拥有的:
一个计算手臂外侧位置的软件(这很有魅力)。这会生成一个 shapefile 作为日志文件,其中手臂的位置是可见的,这适用于每个标题。
问题是:
该算法使用以毫米为单位的 delta X 和 delta Y 距离计算手臂的位置。 我的假设是经度 0.00000001 等于 X 轴上的 1.1 毫米 (source)。男孩,我错了什么...
当使用 shapefile 查看器测量生成的 shapefile 时,它返回 2,19 米而不是计算的 3,25。请注意,这是在纬度 52.810146939(北半球)上。
因此问题:
有没有人知道如何形成一个以纬度或经度为起点和以 [mm] 为单位的距离然后返回校正后的纬度或经度的公式?或者我如何计算相对增量坐标值以将它们与原始坐标相加?
我有一段代码:
Armlocations->leftarm.locationX = ownLocation.locationX + MM_TO_COOR(deltaX);
Armlocations->leftarm.locationY = ownLocation.locationY + MM_TO_COOR(deltaY);
deltaX 和 deltaY 是以毫米为单位的距离,应该添加到坐标中。宏MM_TO_COOR是这样的:
#define COOR_TO_MM(x) ((x) * 110000000)
#define MM_TO_COOR(x) ((x) / 110000000)
问题不是关于编程 -> 我明白了,而是更多关于与此相关的数学。
我确定这不是正确的地方,它可能更适合使用 https://gis.stackexchange.com。
关于纬度,它总是(大约)每度111公里,所以.00000001°(1E-8°)在y方向上确实应该是1.1毫米。
经度的关系确实取决于您当前的纬度:在这里,每度的系数是 111 公里乘以 cos(纬度)。在您的情况下,这将(在球形地球上)产生 0.60445804192912 的系数,导致每度 67.1 公里或每 1E-8° 0.671 毫米。在我们的耳朵上,在两极被压平了,这个值略有不同,但应该是差不多的(但是我不知道误差有多大。)
你确定你的GPS设备有这么高的几毫米的分辨率吗?