用地图计算行驶距离

问题描述

| 是否可以仅使用经度和纬度来计算行驶距离而无需使用地图? 我正在编写服务器端应用程序的代码,并尝试避免使用Web服务,API和第三方工具。 您能帮我实现这个目标吗?     

解决方法

        有了数据 您可以进行简单的乌鸦飞行计算:
sqrt((lat1 - lat2)^2 + (long1 - long2)^2) = distance
您可以做一个简单的曼哈顿距离计算:
abs(lat1 - lat2) + abs(long1 - long2) = distance
您可以进行简单的地球距离计算。请参阅:http://www.ehow.com/how_6353104_calculate-between-two-points-globe.html 这些对于某些目的足够准确,并且可能对于您的目的足够准确,但是并不完全准确。 为了完全准确,您将需要更多数据点。路线图数据或已知路线信息。 使用路线图数据,您还必须实现寻路算法。路径查找算法的一些示例是A-star和Dijikstra。     ,        “ haversine”公式可计算两点之间的大圆距离-即地球表面上的最短距离-给出两点之间的“乌鸦飞”距离,而忽略任何山丘,弯道,道路,障碍物等 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 
您可能还会研究余弦球定律     ,        在计算行驶距离时,您的应用程序不需要“乌鸦飞过距离”,因为它是最小距离,但绝对不是行驶距离。 您在这里有两个选择。首先,使用网络服务(Google Directions API)并创建自己的图形表示。 您已经切断了第一个选项,因此需要研究第二个选项。第二种选择是,创建具有精确步骤的图形(一个步骤是方向路线上的一个明显转弯),并建立一个庞大的本地图形数据库以进行查询(也许使用OLAP)。这将需要一个非常健壮的数据库,我的建议仍然是使用第一个选项,但是您也要打开第二个选项。     ,        在美国,您可以随时下载联邦TIGER人口普查地图数据并进行自己的计算。如果要行驶距离,就无法避开某种地图数据。 http://arcdata.esri.com/data/tiger2000/tiger_statelayer.cfm?sfips=19     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...