首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取最近的节点

如何获取最近的节点
EN

Stack Overflow用户
提问于 2015-10-07 04:11:00
回答 1查看 1K关注 0票数 1

我把主要数据从OSM转换成表,这是我的osm中的主要数据--我的数据库中的数据--还有另一个用于总线gps数据的数据,我每20秒收集一次总线数据,现在它保存在我的数据库中。问题是如何使用js或php在osm中绘制路径。我设计了算法,但不工作,因为它需要很长的时间。

我应该做的是从我的数据库表方式和表节点中通过osm数据纠正路由。

我的3张表来自osm的节点

从osm出发

全球定位系统每20秒一次

非常感谢你能帮我

代码语言:javascript
复制
<meta http-equiv="content-type" content="text/html; charset=utf-8"> 
代码语言:javascript
复制
$mysql_server_name='localhost'; //改成自己的mysql数据库服务器
$mysql_username='root'; //改成自己的mysql数据库用户名
$mysql_password=''; //改成自己的mysql数据库密码
$mysql_database='goxml'; //改成自己的mysql数据库名
$conn=mysql_connect($mysql_server_name,$mysql_username,$mysql_password) or die("error connecting") ; //连接数据库
mysql_query("set names 'utf8'"); //数据库输出编码 应该与你的数据库编码保持一致.南昌网站建设公司百恒网络PHP工程师建议用UTF-8 国际标准编码.
mysql_select_db($mysql_database); //打开数据库
$sql_getstop ="SELECT RouteId,NameZh,Latitude,Longitude,GoBack FROM getstop; "; //SQL语句
$result_getstop = mysql_query($sql_getstop,$conn); //查询
$arr_getstop=array(array());
while($row1 = mysql_fetch_array($result_getstop))
{
//$arr[]=$row1['Latitude'];
$arr_getstop[]=$row1;

}

echo $arr_getstop[1]['Latitude'];
echo $arr_getstop[9]['Latitude'];
//////////
$arr_test2 ="SELECT RouteID,BusID,Goback,Longitude,Latitude FROM test2 where RouteID='1' ;"; //SQL语句
$result_test2 = mysql_query($arr_test2,$conn); //查询
$arr_test2=array(array());
while($row2 = mysql_fetch_array($result_test2))
{
    //$arr[]=$row1['Latitude'];
    $arr_test2[]=$row2;

}
for($j=1;$j<count($arr_test2);$j++)
{
echo $arr_test2[$j]['Latitude'];
echo $arr_test2[$j]['Longitude'];
echo "<br/>";
}
/*
//////////////////////////////输出所有的node
$arr_node ="SELECT ID,Lat,Lon FROM node where Lat>25.0883588 and Lon>121.4257346 and Lat <25.1883598 and Lon>121.4257316 ;"; //SQL语句
$result_node = mysql_query($arr_node,$conn); //查询
$arr_node=array(array());
while($row3 = mysql_fetch_array($result_node))
{
    //$arr[]=$row1['Latitude'];
    $arr_node[]=$row3;

}
echo "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%";
for($j=1;$j<count($arr_node);$j++)
{
echo $arr_node[$j]['Lat'];
echo $arr_node[$j]['Lon'];
echo "<br/>";
} */
///////////////////////超级运算
    echo "result is +++++++++++++++++++++++++++++++++++++++++++++++++";
for($j=0;$j<count($arr_test2);$j++)
    {
    $node_Lon1=$arr_test2[$j]['Longitude']+0.000117;
    $node_Lon2=$arr_test2[$j]['Longitude']-0.000117;
    $node_Lat1=$arr_test2[$j]['Latitude']+0.000117;
    $node_Lat2=$arr_test2[$j]['Latitude']-0.000117;
    $arr_node ="SELECT ID,Lat,Lon FROM node where Lat<$node_Lat1 and Lat>$node_Lat2 and Lon <$node_Lon1 and Lon>$node_Lon2 ;";
    $result_node = mysql_query($arr_node,$conn); //查询
    $arr_node=array(array());
    while($row3 = mysql_fetch_array($result_node))
    {
    //$arr[]=$row1['Latitude'];
    $arr_node[]=$row3;

    }
    for($m=1;$m<count($arr_node);$m++)
    {
        echo $arr_node[$m]['Lat'];
        echo $arr_node[$m]['Lon'];
        echo "<br/>";
    }

    }

?>enter code here

代码运行时间超过服务小时,无法显示结果。

EN

回答 1

Stack Overflow用户

发布于 2015-10-07 16:09:30

似乎你在谈论一个https://en.wikipedia.org/wiki/Map_matching问题。

OSM有多种解决方案:

在gis.stackexchange.com上阅读相关问题的答案:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32983681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档