我试图从原点(海德拉巴坐标-17.3850,78.4867)获取车站的道路距离。用下面的查询得到距离,但它是空中距离。我需要路边距离。
我的sql:
SELECT latitude, longitude,Station_Name, Station_Key,
(6371 * 2 * ASIN(SQRT(
POWER(SIN((17.3850 - ABS(latitude)) * PI()/180 / 2),
2) + COS(17.3850 * PI()/180 ) * COS(ABS(latitude) *
PI()/180) * POWER(SIN((78.4867 - longitude) *
PI()/180 / 2), 2) ))) AS distnce
FROM abrs_stations
所以任何人都可以告诉我如何实现这一目标。提前谢谢。
答案 0 :(得分:1)
使用您拥有的数据,您可以计算出空中距离。如果您只需要知道海德拉巴的道路距离(而不是确切路径),那么您可以找到数据库中每个位置的道路距离(例如使用谷歌地图)并将其存储在您的数据库中。如果您想动态确定道路距离,那么您必须寻找一个API(可能是Google Maps API),它可以为您提供两个坐标之间的道路距离。
无论哪种方式, NO 你都不能完全用SQL做到这一点。
答案 1 :(得分:0)
您可以使用Google API查找两个lat long之间的距离
https://maps.googleapis.com/maps/api/distancematrix/json?origins=" . $from_latitude . "," . $from_longitude . "&destinations=" . $destination_latitude . "," . $destination_longitude . "&mode=driving&language=pl-PL
使用此网址,您可以获得远距离的响应。
$url = "https://maps.googleapis.com/maps/api/distancematrix/json?origins=" . $from_latitude . "," . $from_longitude . "&destinations=" . $destination_latitude . "," . $destination_longitude . "&mode=driving&language=pl-PL";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_PROXYPORT, 3128);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$response = curl_exec($ch);
curl_close($ch);
$response_a = json_decode($response, true);
$distance= $dist = $response_a['rows'][0]['elements'][0]['distance']['text'];
此处$distance
是两个纬度之间的距离google API