简述如何利用百度地图api获取poi并绘制交通等时线

早在三年前写过一篇利用百度地图自驾车线路数据绘制等时线的文章,惭愧的是当时那些数据都是我手动一个一个获取的。直到去年,研究了一下腾讯、百度地图的js api,才逐步找到一些可以省事的方法。现在将自己了解的一些土办法分享给大家。

首先我要绘制的是基于某一个地点到周边所有地区的自驾时间的这么一张图。我们可以反推一下,如何来绘制这张图。

在Arcgis中,如果要提取contour,那么要有dem或者tin,而dem也可以说是由tin生成的,故要想生成等时线,必须要有tin。tin从哪儿来呢?一个是可以从线要素创建,一个是可以从点要素创建,线是不可能了,因为我们是想求线,所以只能是点。也就是说我们要得到被分析的地点周边很多个点到该地点的自驾时间值,然后通过用这些点生成tin即可。

第一步:选取这些点。我要分析的地方是帝都某郊区县的一个地方,所以我选取了北京市及这个区县所相邻的外省各县的所有乡镇政府所在地、机场、车站作为分析的点。如何得到他们的名称和坐标信息呢?用百度地图的搜索功能。http://developer.baidu.com/map/jsdemo.htm#i1_4 这个链接所给出的实例讲述了如何用百度地图api搜索本地的内容。对这段代码稍微做一下修改,就可以得到刚刚所说的所有的镇政府、机场、车站的名称、地址或坐标。如果你会javascript,看一下他的说明文档,这应该是很简单的事。注意,在检索的时候,注意设定一下检索的范围,将city设为北京。如果你对js代码不太感冒,可以通过我编写的这个网页来实现此功能:点这里。

拿到名称和坐标之后呢,将得到的结果转存到excel中,备用。我取到了不到300条数据,如果你有耐心,可以以村为单位,估计能得到好几千条数据。

第二步:获取这些点到目的地的自驾时间。我们先看一下百度地图的自驾路线搜索功能,如下图,通过起点、终点搜索自驾线路,会得到时间、路程、红绿灯、打车时间等等信息。我们只需要取自驾时间就够了。

这个时候,需要看百度给出的这个实例:http://developer.baidu.com/map/jsdemo.htm#i5_5 这个链接给出的实例中,可以通过设置起点、终点,来查询驾车线路的时间和路程。

QQ截图20150721213619

 

我们对这个实例再进行一下改造,设置两个文本框。左边一个为输入框,右边一个为输出框。我们把第一步得到的坐标值按行的形式贴到左边输入框里面。修改实例代码,把原来的目的地按地址搜索改为按坐标搜索(当然,如果第一步你也取了地址,在这里不改也是可以的),然后以逗号将所取得的时间(s)、路程(m)进行连接,输出到右边的文本框中。如下图所示。这样的话,1分钟的时间里,就获得了近300条自驾时间、路程的信息。我把这个也放到了网上,具体可以看这:点这里。

WP_20150616_15_27_10_Pro

第三步:数据加工。剩下的就是捣鼓excel和arcmap了。把生成的用逗号分隔的数据,存为txt,导入到excel中,与第一步取得的名称、坐标数据进行匹配。得到一张完整的excel表。将这个表加载到arcmap中,将数据按照经纬度的字段加载到地图中。然后用arcgis的分析工具,好像是feature to tin,用点数据生成tin。然后tin转一个dem,就得到了下面这张图。

WP_20150616_15_42_35_Pro

 

原理已经说完了,不知道大家看明白了没有。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

填写验证码: *