我试图通过php使用OSM获得速度限制。但是,我无法做到这一点,因为我收到的信息如下所示:
本文档中包含的数据来自www.openstreetmap.org。数据在ODbL下提供。
可能是什么问题?下面是我的php文件。 注意:代码仍然不完整,我现在正在测试我是否能够访问OSM数据库..但我不能。我希望有人能指出我正确的方向..
<?php
$lat = 24.32633;
$lng = 54.58061;
$latm = -0.00015 + $lat;
$latp = 0.00015 + $lat;
$lngm = -0.00015 + $lng;
$lngp = 0.00015 + $lng;
//$json_url = 'http://overpass-api.de/api/interpreter?data=[out:json];node(24.326180, 54.580460,24.336580, 54.580860);way(bn);(._;>;);out;';
$json_url = 'http://overpass.osm.rambler.ru/cgi/interpreter';
$data = '<query type="way"> <bbox-query s="' . $lngm . '" w="' . $latm . '" n="' . $lngp . '" e="' . $latp . '"/> <!--this is auto-completed with the current map view coordinates.--> </query> <print/>';
$ch = curl_init( $json_url );
$options = array(
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => array('Content-type: application/json') ,
CURLOPT_POSTFIELDS => $data,
CURLOPT_RETURNTRANSFER => true,
);
curl_setopt_array( $ch, $options );
$result = curl_exec($ch);
echo curl_exec($ch);
/*$resultArr = explode("<",$result);
foreach ($resultArr as $val) {
$temp = explode('"', $val);
//check the size of the array, if it is == 5, then do
if ($temp[1]=="maxspeed")
$speedlimit=$temp[3];
}
echo '{"speedlimit": "120"}'; */
?>
答案 0 :(得分:2)
您的边界框非常小,OpenStreetMap中没有可用于边界框的数据。这就是为什么你得到以下几乎空洞但有效的结果:
<?xml version="1.0" encoding="UTF-8"?>
<osm version="0.6" generator="Overpass API">
<note>The data included in this document is from www.openstreetmap.org. The data is made available under ODbL.</note>
<meta osm_base="2015-06-06T08:10:03Z"/>
<bounds minlat="54.5805" minlon="24.3262" maxlat="54.5808" maxlon="24.3265"/>
</osm>
我强烈建议先在立交桥turbo中尝试不同的选项,以便更熟悉Overpass API。请检查以下链接作为起点:http://overpass-turbo.eu/s/9MQ - 它也仅限于带有最大速度标记的高速公路(这就是您要寻找的,对吧?)。
为了便于说明,这里是一个屏幕截图,中间是你的小边框: