我目前正在使用C#尝试编写代码,该代码将十进制值中的起点和终点纬度和经度坐标对显示,并显示这两点之间的GPS点(经度和纬度)(起点和终点)在我的数据库中。
例如:
我的起始坐标为北纬39.90732,经度为116.45353,我的终点为纬度39.90736,经度为116.44927。在datagridview或listview上查询并显示我数据库中这两点之间的GPS点(纬度和经度值)。
每1米间隔计算一次GPS点数。
答案 0 :(得分:0)
因此,您在数据库中有一组坐标,并希望获得位于某一行的坐标?
对于您的第一个问题:要在数学上正确,您必须得到该行的等式f(x)= k * x + d
并检查您的点,它们是否是该等式的有效解。您可以跳过检查点,这些点肯定位于由起点(s_x, s_y)
和终点(e_x, e_y)
跨越的矩形之外。也就是说,您只需要检查点(x, y)
,其中x
介于s_x
和e_x
之间,y
介于s_y
和e_y
之间
对于你的第二个问题:如果你有一组从问题1中得到的有效点,那么应该很容易计算出每个点到达起点的距离,然后按距离对它们进行分组。
所有这些假设,您知道如何将您的gps坐标转换为公制系统,并且您的距离足够短,以至于球面地球在平面上的投影可以忽略不计。例如,两个经度之间的距离在赤道处最大,并且朝向极点变小。此外,地球上两点之间的最短距离可能不是使用墨卡托投影在平面地图上看起来的最短距离。