我有一张地图,地图如下图所示。
这些位置保存在C#Dictionary对象中,包含纬度/经度和笛卡尔坐标(x,y,z)。该地区由5个团队负责,其中第一个团队位于该地区的西南部。我需要的是能够命令点,以便最南端的西点是第一个 - 这将是地图上恩尼斯基林附近的绿色'3'标记。我一直在尝试不同的方法,但没有得到我想要的结果。
任何人都可以解释一种有用的方法吗?
标记
答案 0 :(得分:1)
假设您知道此地图的西南角的纬度/经度,我将使用Aviation Formulary计算每个点与该角的距离。然后你只需要根据计算的距离进行排序。
答案 1 :(得分:0)
如果您想以类似于“最南端”的方式定义“最西南”,您可以按(x,y)
订购点x+y
。您可以将此视为从SW角移动地图上的NW-SE线,注意到达到点的顺序。这相当于通过在y
上进行排序来定义“最南端”,在那里您从南边向上移动东西向线并注意到达每个点的顺序。
答案 2 :(得分:0)
我会使用Haversine公式来确定地图西南角某个位置与每个点之间的距离。这里有一些链接,包含C#和Sql Server的一些代码,可以做到这一点。
http://www.storm-consultancy.com/blog/development/code-snippets/the-haversine-formula-in-c-and-sql/