我写了一个Delphi程序,生成了一个GPX文件,作为“穷人的导航系统”的输入,通过超轻型飞机进行空中喷洒。
大体上,它使用gpx文件作为输出来生成路由(并行线束)。
路由引擎基于“Vincenty”算法,该算法对任何wgs84计算都很有效,但是
我无法得到由地形定位专家生成的网格的精度(需求)。
我假设椭球体的二维计算:
1)从起始RTEPT(航路点)开始,计算给定方位和任意距离(线束长度)的下一个RTEPT。
2)分别计算前一个方位(90°转弯)和另一个任意距离(线束距离)的下一个rtept。
3)重做1)以最后一个rtept为起点,但方向相反,以此类推。
怎么了?
最佳答案
您没有描述Vincenty地球椭球模型的Pascal实现,因此以下是推测:
模型利用了大量的几何三角函数——ATAN2,
cos、sin等,取决于是否使用内部delphi函数
或者你自己的版本,有可能缺乏精确性
在计算中在您的
计算可能会影响所需的精度。
浮点运算会导致小数点错误会的
不管你用的是单人的,双人的还是真的我
相信一些内部Delphi函数已经随着
不同的版本所以可能是Delphi的版本
使用将影响内部功能的实现方式。
如果实现准确,Vincenty的公式应该是
精确到0.5mm以内惊人的准确性。如果有舍入
Delphi实现中的错误或缺乏精度
错误可能会大得多。
考虑一下你的GPS信息的准确性。取决于
很多卫星在同一时间被GPS接收器使用,
位置信息的准确性会发生变化上的错误
50英尺或更高的高度是可能的。另外,刷新
GPS接收器上的位置信息不一定
瞬间;因此,如果线束“转弯”发生得很快,则
必须确保GPS在转折点更新。
你计算模式的程序似乎是合理的,所以看
在Delphi代码中实现Vincenty算法。
这个清单并不详尽,我想其他人可以改进它
戏剧性地。我所说的是基于我的GPS和
各种版本的Delphi和我能从脑海中回忆起的东西。
你可以试着比较一下你的计算
距离/方位使用算法的实现
网上提供的例子。网上有几个
计算器如果你没去过那里,航空公式
是一个很好的地方找到其他导航技巧的例子。
http://williams.best.vwh.net/avform.htm。比较会
让您对Delphi的精确性有信心
Vincenty算法的实现
数学家简单地说,Vincenty的实现可能不是
准确。再说一遍,错误可能在别处。