【问题标题】:Calculate driving distance wtihout map不用地图计算行车距离
【发布时间】:2011-09-03 20:23:38
【问题描述】:

可以不使用地图,仅使用经度和纬度来计算行车距离吗?

我正在编写服务器端应用程序,并尽量避免使用 Web 服务、API 和第三方工具。

你能帮我实现这个目标吗?

【问题讨论】:

    标签: distance routes


    【解决方案1】:

    使用您拥有的数据

    这些对于某些目的来说足够准确,对于您的目的来说可能足够准确,但并不完全准确。

    要完全准确,您需要更多数据点。路线图数据或已知路线信息。

    使用路线图数据,您还必须实施寻路算法。寻路算法的一些例子是A-starDijikstra

    【讨论】:

    • 这适用于短距离或类似纬度的距离。不幸的是,经线不平行,在两极附近靠得更近,在赤道附近靠得更远,使用标准距离公式会严重倾斜
    • @David:老实说,我从来没有费心做那种数学(不知道我是如何在不接触它的情况下逃出高中的......),但我相信我链接的文章有一个公式可以解决你描述的问题。
    【解决方案2】:

    “haversine”公式计算两点之间的大圆距离——即地球表面上的最短距离——给出两点之间的“as-the-crow-flies”距离点忽略任何山丘!、曲线、道路、障碍物等。

    Haversine 公式:

    R = earth’s radius (mean radius = 6,371km)
    Δlat = lat2− lat1
    Δlong = long2− long1
    a = sin²(Δlat/2) + cos(lat1).cos(lat2).sin²(Δlong/2)
    c = 2.atan2(√a, √(1−a))
    d = R.c 
    

    您还可以研究余弦球定律

    【讨论】:

      【解决方案3】:

      当您计算行驶距离时,您的应用程序不需要“as the crow flies distance”,因为它是最小距离,但绝对不是行驶距离。

      这里有两个选择。首先,使用网络服务(Google Directions API)并创建您自己的图形表示。

      您已经取消了第一个选项,因此您需要查看第二个选项。第二个选项是,创建一个具有确切步骤的图形(一个步骤是方向路线中的一个明显转弯)并制作一个巨大的本地图形数据库来查询(可能使用 OLAP)。这将需要一个非常强大的数据库,我的建议仍然是使用第一个选项,但您也可以打开第二个选项。

      【讨论】:

        【解决方案4】:

        对于美国,您可以随时下载联邦 TIGER 人口普查地图数据并自行计算。如果您想要行驶距离,那么您就无法获得某种地图数据。

        http://arcdata.esri.com/data/tiger2000/tiger_statelayer.cfm?sfips=19

        【讨论】:

          猜你喜欢
          • 2023-03-23
          • 1970-01-01
          • 2011-04-26
          • 1970-01-01
          • 2011-07-19
          • 2016-09-23
          • 2016-04-12
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多