gpt4 book ai didi

android - 计算经度和纬度数组的道路距离

转载 作者:行者123 更新时间:2023-11-30 01:30:06 26 4
gpt4 key购买 nike

我有一个 Android 应用程序,每 15 秒捕获一次经纬度,我们使用这组经纬度来查找起点和目的地之间的道路距离(第一个和最后一个经纬度按时间戳排序)。

实际上,这个应用程序是为在城市中经营微型卡车的客户设计的,他们的卡车司机将使用这个应用程序来标记旅程的开始/结束、丢包等。我们将根据客户运行的公里数向我们的客户收取费用一次旅行。

在我们的场景中,车辆将在充满转弯、环形交叉路口和一次又一次穿越相同路径的聚居地/小区域递送数据包。

所以我试图找到一种最佳方法来计算所有收集的经纬度的距离。

我选择了两种方法:

  1. 使用“haversine”公式计算两个经纬度之间的地球距离,加上连续的距离。在这里,我的距离缩短了 10%。
  2. 另一个是 google map api,但它在直路上成功,但在我的场景中失败了。

请建议一些方法,该方法至少可提供 96-97% 的准确度,这是业界广泛接受的。我们不想在车上部署 VTS 设备,因为司机必须使用 Android 应用程序,这会使成本翻倍。

最佳答案

distanceTo() 方法将返回鸟飞时的距离,而不是公路。您可以使用此方法获取两点之间的距离(通过公路):

public String getDistance(final double lat1, final double lon1, final double lat2, final double lon2){
String parsedDistance;
String response;
Thread thread=new Thread(new Runnable() {
@Override
public void run() {
try {

URL url = new URL("http://maps.googleapis.com/maps/api/directions/json?origin=" + lat1 + "," + lon1 + "&destination=" + lat2 + "," + lon2 + "&sensor=false&units=metric&mode=driving");
final HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
InputStream in = new BufferedInputStream(conn.getInputStream());
response = org.apache.commons.io.IOUtils.toString(in, "UTF-8");

JSONObject jsonObject = new JSONObject(response);
JSONArray array = jsonObject.getJSONArray("routes");
JSONObject routes = array.getJSONObject(0);
JSONArray legs = routes.getJSONArray("legs");
JSONObject steps = legs.getJSONObject(0);
JSONObject distance = steps.getJSONObject("distance");
parsedDistance=distance.getString("text");

} catch (ProtocolException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
}
});
thread.start();
try {
thread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
return parsedDistance;
}

关于android - 计算经度和纬度数组的道路距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35865982/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com