等时线在交通规划里面分析可达性还是挺有用的。那么分析现状的某种交通方式的等时线,可以通过爬取高德、百度等的路径规划数据,然后在arcgis里面生成。arcgis的网络分析做服务区等时线以后有时间分享一下。

第一步,爬取POI

爬取POI网上工具很多啦,也有不少人分享,可以很方便的下载到,如果找不到,也可以自己写爬虫爬取,例如高德的:

import requests
url_search ="http://restapi.amap.com/v3/place/text"
param_search={
     'key':'自己申请的高德key',
     'keywords':'',
     'types':'',
     'city':'',
     'citylimit':'true',
     'children':'',
     'offset':'',
     'page':'',
     'building':'',
     'floor':'',
     'extensions':'',
     'sig':'',
     'output':'',
     'callback':''
     }
res = requests.get(url_search, params = param_search)

具体的参数可以查看api文档https://lbs.amap.com/api/webservice/guide/api/search,其中types、city、page需要,其他好像都不用。

返回的eval(res.text)['pois']就是各个poi点的坐标,可以自己写到文件什么的下一步提取使用,我们只需要提取坐标就好了。

第二步,获取某个起始点到各个POI点的行程时间

比如开车,一个点到一个点的路径规划按下面方法获取:

url_travel_search = "http://restapi.amap.com/v3/direction/driving"
param_travel = {
    'origin':'114.3,30.6',
    'destination':'114.3,30.7',
    'output':'JSON',
    'key':'自己申请的高德key',
    'strategy':'0',
    'extensions':'base'
}
res = requests.get(url, params = param_travel)

具体不同交通方式、不同参数什么的都可以查文档https://lbs.amap.com/api/webservice/guide/api/direction

总的行程时间就是:eval(res.text)['route']['paths'][0]['duration'],当然也可以提取各个段的时间。

好了,按上述方法,构建一个循环什么的,就可以查询起点到很多个poi目的点的行程时间了

现在我们得到三列数据:

经度、纬度、行程时间

写入csv文件,接下来就在arcgis里面操作了。

第三步,生成点

首先,高德获取的点是火星坐标,可以根据网上各种算法,转成标准84坐标。当然也可以先生成点,导出shp再根据我上上篇文章用qgis转。

csv转点,还是比较简单的,arcgis目录里面把csv文件拖到内容列表里来,然后右键显示xy数据,X字段就是经度,Y字段就是纬度,坐标系为WGS84,生成出来就是一个点事件,导出shp就可以保存了。

建议输出为投影坐标系,地理坐标系分析的时候可能会产生问题


第四步,生成TIN

打开arctoolbox,找到3D analyst工具-数据管理-TIN-创建TIN,高度值就选时间字段


第五步,TIN转等值线或等值面

arctoolbox-3D analyst工具-表面三角化-表面等值线,等值线间距根据事实情况自己调整,然后就完成了。

arctoolbox-3D analyst工具-转换-由TIN转出-TIN转栅格,这个转出来的直接就相当于是个面,不过是个栅格面,可以可以研究一下转矢量面

上面都可以自己调整一下符号系统显示效果。

最后修改日期:2018 年 6 月 2 日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。