排序/订购地点

时间:2010-08-18 16:04:02

标签: c# geospatial

我有一张地图,地图如下图所示。

alt text

这些位置保存在C#Dictionary对象中,包含纬度/经度和笛卡尔坐标(x,y,z)。该地区由5个团队负责,其中第一个团队位于该地区的西南部。我需要的是能够命令点,以便最南端的西点是第一个 - 这将是地图上恩尼斯基林附近的绿色'3'标记。我一直在尝试不同的方法,但没有得到我想要的结果。

任何人都可以解释一种有用的方法吗?

标记

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/