【问题标题】:Sort/Order Locations排序/订购地点
【发布时间】:2011-03-31 15:45:38
【问题描述】:

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

这些位置保存在具有纬度/经度和笛卡尔(x、y、z)坐标的 C# Dictionary 对象中。该地区由5支队伍覆盖,其中第一支队伍位于该地区的西南部。我需要的是能够对这些点进行排序,以便首先位于最西南的点 - 这将是地图上 Enniskillen 附近的绿色“3”标记。我一直在尝试不同的方法,但没有得到我想要的结果。

谁能解释一种可行的方法?

标记

【问题讨论】:

  • 您尝试了哪些方法?

标签: c# geospatial


【解决方案1】:

假设您知道这张地图西南角的纬度/经度,我将使用Aviation Formulary 计算每个点与该角的距离。然后你只需要根据计算出的距离进行排序。

【讨论】:

  • 我已经在使用这个公式来计算直线距离 - 但在我尝试的所有方法中,我从未想过要在西南角选择一个点并从那里排序!
【解决方案2】:

如果您想以类似于“最南风”的方式定义“最西南风”,您可以将点 (x,y) 排序为 x+y。您可以将其视为从 SW 角在地图上移动 NW-SE 线,注意到达点的顺序。这相当于通过在y 上进行排序来定义“最南端”,您将在其中从南边缘向上移动一条东西线,并注意您到达每个点的顺序。

【讨论】:

  • 您好,我并没有真正理解您所说的话。当我按 x+y 排序时,它会在 Enniskillen 附近给出绿色的“3”标记。但是,如果我删除它,我希望在 Enniskillen 附近获得绿色的“4”标记。实际上,我在地图顶部的 Coleraine 附近找到了绿色的“1”标记。你能提供一些伪代码吗?
【解决方案3】:

我会使用Haversine 公式来确定地图西南角的某个位置与每个点之间的距离。这是一个包含 C# 和 Sql Server 的代码的链接。

http://www.storm-consultancy.com/blog/development/code-snippets/the-haversine-formula-in-c-and-sql/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-10
    • 2018-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-05
    • 1970-01-01
    相关资源
    最近更新 更多