CN109977323A - 一种基于电子地图的通勤数据批量采集方法 - Google Patents

一种基于电子地图的通勤数据批量采集方法 Download PDF

Info

Publication number
CN109977323A
CN109977323A CN201910189978.XA CN201910189978A CN109977323A CN 109977323 A CN109977323 A CN 109977323A CN 201910189978 A CN201910189978 A CN 201910189978A CN 109977323 A CN109977323 A CN 109977323A
Authority
CN
China
Prior art keywords
data
path
trip
time
poi
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201910189978.XA
Other languages
English (en)
Other versions
CN109977323B (zh
Inventor
石飞
秦艺帆
徐建刚
祁毅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing University
Original Assignee
Nanjing University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nanjing University filed Critical Nanjing University
Priority to CN201910189978.XA priority Critical patent/CN109977323B/zh
Publication of CN109977323A publication Critical patent/CN109977323A/zh
Application granted granted Critical
Publication of CN109977323B publication Critical patent/CN109977323B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Navigation (AREA)

Abstract

本申请公开了一种基于电子地图的通勤数据批量采集方法,包括以下步骤:S1、利用电子地图的公交路径规划API获得通勤数据;S2、采用Python程序,对所述通勤数据进行批量采集。本申请通过利用电子地图的路径规划API,获得精确可靠的出行数据,再采用Python程序从所获得的出行数据中批量采集所需要的参数,实现了对出行数据快速、批量的采集;再对获得的数据进行计算,使出行参数的提取精确可靠。

Description

一种基于电子地图的通勤数据批量采集方法
技术领域
本发明涉及大数据应运技术领域,尤其是涉及一种基于电子地图的通勤数据批量采集方法。
背景技术
目前,互联网电子地图服务商如高德、百度、腾讯等的导航服务功能能够获取点到点的实时出行时间、距离以及最优出行路径,相较于传统基于GIS 平台的网络分析方法得到的时间、距离数据具有明显的精度与效率优势:互联网电子地图的数据包含高速出入口、道路拓扑关系、支路、小区道路等完善且精细的路网信息,研究者无需耗费大量时间与精力建立路网信息数据库;互联网电子地图对出行时间的测度来源于实时路况,即考虑了交通量、交通拥堵、单行与限制转弯信息等因素对交通的影响,相较于基于设计时速为道路赋通行时间成本的方法更符合实际情况,因此数据更为精确可靠,因此,基于电子地图快速、批量采集精确可靠的出行数据,为出行分析提供依据,是目前亟待解决的问题。
发明内容
本发明的目的是提供一种基于电子地图的通勤数据批量采集方法,利用电子地图中路径规划API,采用Python程序,从电子地图快速、批量采集精确可靠的出行数据,为出行分析提供依据。
本发明的上述发明目的是通过以下技术方案得以实现的:
一种基于电子地图的通勤数据批量采集方法,包括以下步骤:
S1、利用电子地图的公交路径规划API获得通勤数据;
S2、采用Python程序,对所述通勤数据进行批量采集。
本申请进一步设置为:步骤S1中,包括以下步骤:
A1、申请Web服务API密钥;
A2、构建公交路径规划API请求网址;
A3、接受HTTP请求返回的数据,获得以JSON格式表示的通勤数据,每一组返回的数据代表一个完整的通勤方案。
本申请进一步设置为:步骤A2中,以出发点经纬度、目的地经纬度、出行城市和出发城市为参数变量构造不同的URL。
本申请进一步设置为:步骤S1中,从所述通勤方案中,直接通过访问 JSON的键获得出行花费、出行时间、出行距离、各段步行距离、各段步行时间;其中,段表示某一个步行方式至下一个步行方式之间的过程;
遍历出行的所有段中所有多段线键值的集合,包括每一段的步行路径和每一段的公交行驶路径,计算出行路径,其中,每一段的步行都计算在内,每一段的公交行驶路径只需计算一次;
公交换乘次数,为段键值对应数组的长度减2;
公交换乘时间,为统计数组 jsonData[‘route’][‘transits’][0][‘segments’]每个元素的步行时间总和,减去首个数组元素和最末数组元素的步行时间;
公交换乘距离,为统计数组 jsonData[‘route’][‘transits’][0][‘segments’]每个元素中的步行距离总和,减去首个数组元素和最末数组元素的步行距离;
公交车内时间,为统计数组 jsonData[‘route’][‘transits’][0][‘segments’]每个元素中公交行驶时间的和;
铁路时间,为统计数组 jsonData[‘route’][‘transits’][0][‘segments’]每个元素中火车行驶时间的和;
其中;“jsonData”表示返回的JSON数据,“data[‘X’]”表示JSON 数据下一层级‘X’键对应的值。
本申请进一步设置为:步骤S2中,数据准备包括以下步骤:
G1、在Excel或ArcGIS软件中,在采集的POI数据中筛选出出发地并将其保存为“O.csv”文件,每个POI按照ID、英文名称、中文名称、类型、经度和纬度的格式依次以分号分割为一条记录;
G2、在电子地图坐标拾取平台或采集的POI数据查询目标地的经纬度坐标,并将其信息依照相同的数据排列格式保存为“D.csv”;
G3、在ArcGIS中打开“O.csv”和“D.csv”,查看出发地与目标地的空间位置是否正确。
本申请进一步设置为:步骤S2中,编写程序包括以下步骤:
B1、创建POI类:POI类表示一个点,其构造函数所需参数为POI的ID、经度、纬度、类型和名称,即每个POI为“.csv”文件的一条记录;
B2、创建LOI类:LOI类表示一条线,其构造函数所需参数为路径的起点,终点、距离、通行时间和路径点经纬度组成的列表;
B3、定义从文本文件中读取POI的函数为 createpoint(filename,idindex,lonindex,latindex,nameindex,namelinde x),从CSV文件中读取POI信息并将每个POI生成为一个点的实例,其中, filename表示函数的参数CSV文件的存储路径,idindex表示POI的ID位于记录的列号数,lonindex表示经度位于记录的列号数,latindex表示纬度位于记录的列号数,nameindex表示英文名称位于记录的列号数,namelindex 表示中文名称位于记录的列号数;
B4、定义采集公交出行数据函数为 GetBusInformation(ak,opoint,dpoint,date,time,city,outputfile),以采集从某个具体起点到某个具体终点的公交出行数据,其中,ak表示密钥, opoint表示起点POI,dpoint表示终点POI,date表示出发日期,time表示出发时间,outputfile表示采集数据保存的文件路径;
B5、定义第一采集出行路径函数为 GetTotalLine(ak,opoint,dpoint,date,time,city,filename),其中,filename表示出行路径保存的文件路径;将出行起点ID、起点名称、起点经纬度、终点ID、终点名称、终点经纬度、路径长度、路径通行时间、路径通行花费和route_locations依次写入文本文件filename中,变量分别以分号分割;
B6、定义第二采集出行路径函数为 GetPolyline(line_sourcefile,shp_output),生成出行路径的Shapefile文件,其中,line_sourcefile表示记录所有出行路径信息的文本文件路径, shp_output表示最终的shapefile文件。
本申请进一步设置为:步骤B4中,包括以下步骤:
C1、公交出行数据函数依据参数密钥、起点POI、终点POI、出发日期、出发时间构造请求URL;
C2、程序通过Python的urllib2模块和json模块,打开请求URL并下载电子地图的路径规划API返回的json数据;
C3、基于返回的json数据,提取或计算出行时间、出行距离、出行费用、全程步行距离、出发点-公交站、步行时间、出发点-公交站步行距离、公家站-目的地步行时间、公交站-目的地步行距离、换乘次数、公交换乘时间、公交换乘距离、公交车内时间、铁路时间的变量值;
C4、依次将所述述变量值写入文本文件outputfile作为一条记录,表示一次出行数据,变量值以逗号分割。
本申请进一步设置为:步骤B5中,包括以下步骤:
D1、第一出行路径函数依据参数密钥、起点POI、终点POI、出发日期、出发时间构造请求URL;
D2、程序通过Python的urllib2模块和json模块,打开请求URL并下载电子地图的路径规划API返回的json数据;
D3、基于返回的json数据,将各出行步骤中步行路径、公交路径通过 Python的字符串运算符“+”相连接,得到最终的路径变量route_locations,其中路径点的经度和纬度以逗号分割,路径点之间以分号分割;并提取出行时间、出行距离与出行花费三个数据后分别赋值给变量duration、distance 和cost;
D4、将出行起点ID、起点名称、起点经纬度、终点ID、终点名称、终点经纬度、路径长度、路径通行时间、路径通行花费和route_locations依次写入文本文件filename中,变量分别以分号分割。
本申请进一步设置为:步骤B6中,包括以下步骤:
F1、利用CreateFeatureclass_management工具函数新建空白shapefile,其坐标系设置为“WGS1984”;
E2、利用AddField_management工具函数为所述shapefile添加七个字段:oid、oname、did、dname、duration、distance和cost,分别代表路径的起点ID、起点名称、终点ID、终点名称、路径长度、路径通行时间、路径通行花费;
E3、读取文本文件line_sourcefile,每条记录生成一个LineWithAttr 类的实例,存储在列表linelist中;
E4、遍历列表linelist,每个LineWithAttr类实例的路径坐标用arcpy.Polylinearray方法生成线几何对象;再基于Arcpy的数据访问模块 dataaccessda依次为七个新建字段赋值,用insertRowrow方法为shapefile 添加路径线要素;
E6、每条路径均转化为shapefile中的一个线要素。
本申请进一步设置为:程序执行的逻辑如下:
F1、确定输出数据的保存文件夹,密钥、出行日期、出行时间、出行城市、存储着出发点信息的CSV文件路径以及存储着目的地信息的CSV文件路径;
F2、分别以ofile和dfile为参数,调用函数createpoint(filename,idindex,lonindex,latindex,nameindex,namelinde x),得到起点POI列表opointlist和终点POI列表dpointlist;
F3、通过双重循环语句,以起点POI列表的第i个起点和终点POI列表的第j个终点为参数,依次调用函数 GetBusInformation(ak,opoint,dpoint,date,time,city,outputfile),得到出发地到目的地的出行数据;
F4、调用mergetxt(outputdirectory,finalfile)函数,将所有属性类型的出行数据合并到一个文本文件final_data.txt。
本申请进一步设置为:取得出行路径数据,包括
F5、通过循环语句,以opointlist的第i个起点和dpointlist的第j 个终点为参数,依次调用函数 GetTotalLine(ak,opoint,dpoint,date,time,city,filename)得到每个出发地到各目的地的出行路径;调用mergetxt(outputdirectory,finalfile)函数,将所有路径文本文件汇总到一个文本文件final_line.txt;以 final_line.txt为参数,调用函数 GetPolyline(line_sourcefile,shp_output),将文本空间信息转化为能够进行可视化和空间分析的Shapefile文件“line.shp”。
与现有技术相比,本发明的有益技术效果为:
1.本发明通过利用电子地图的路径规划API,获得精确可靠的出行数据,再采用Python程序从所获得的出行数据中批量采集所需要的参数,实现了对出行数据快速、批量的采集;
2.进一步地,通过对电子地图的路径规划API处获得的数据进行计算,使出行参数的提取精确可靠。
3.进一步地,通过在Python程序定义相关的函数,实现了批量采集出行参数,使大数据的获取更快速准确。
附图说明
图1是本发明的一个具体实施例的出行路径示意图;
图2是本发明的一个具体实施例的又一个出行路径示意图;
图3是本发明的一个具体实施例的公交路径规划API返回的JSON数据示意图;
图4是本发明的一个具体实施例的又一个出行路径部分数据示意图。
具体实施方式
以下结合附图对本发明作进一步详细说明。
电子地图API是可以获取公交、小汽车、骑行等通勤数据的,本申请以公交通勤的采集进行说明,其余通勤数据的采集以此类推。
互联网电子地图服务商通过“路径规划API”开放出行路径、时间与距离的批量查询。路径规划API是指一套以HTTP形式提供的步行、公交、驾车查询及行驶距离计算接口,包含步行路径规划、公交路径规划、驾车路径规划、骑行路径规划、货车路径规划等多种查询类型,最终返回JSON或XML格式的查询数据。路径规划API能够在无需展现地图的场景下,进行具体城市或跨城市的线路查询,进而返回线路数据、行程时间与花费等数据,以线路结果页的形式展现出发地至目的地之间的公共交通换乘方案或驾车出行方案,将互联网电子地图服务商提供的点到点的出行路径、实时出行时间与距离、出行费用等数据定义为动态出行数据。“路径规划API”类别与返回数据,如表1所示:
表1
在本说明书中,以高德地图为例进行说明,其余以此类推。
一种基于电子地图的通勤数据批量采集方法,包括以下步骤:
S1、利用电子地图的公交路径规划API获得通勤数据;
S2、采用Python程序,对所述通勤数据进行批量采集。
高德地图通过“公交路径规划”API规划综合各类公共交通方式的通勤方案,如火车、公交、地铁,并且返回通勤方案的数据。
在本发明的一个实施例中,通勤方案数据的获取分为三个步骤:
A1、申请“Web服务API”密钥(key);
A2、拼接HTTP请求URL;
A3、接受HTTP请求返回的数据,并解析数据,其中,返回数据以JSON方式体现。
具体地,密钥申请包括以下步骤:
H1、登录高德开放平台网站https://lbs.amap.com,申请高德地图开发者账号。
H2、进入用户控制台界面,点击“应用管理”,再点击右上角“创建新的应用”,应用名称为“MyPOI”,应用类型为“教育”,点击“创建”完成创建新的应用。
H3、在新建的应用“MyPOI”中点击“添加新Key”,输入名称“getPOIs”,服务平台选择“Web服务”,点击“提交”按钮,完成密钥申请。
具体地,“公交路径规划API”请求URL,包括以下步骤:
“公交路径规划API”的在线文档 https://lbs.amap.com/api/webservice/guide/api/direction#bus有完整的接口介绍、请求参数说明、返回结果参数说明和服务示例说明。
R1、分析“公交路径规划API”所需参数:在本实施例中,以南京市居住小区“北京东路小区”到商业中心“德基广场”的出行为例,进行说明。
运用在线文档的实例运行功能理解“公交路径规划API”所需的参数,功能运行示意的表单最右的“必选”说明了该参数是否必填参数。在“公交路径规划API”功能运行示意的表单中,origin参数栏填写北京东路小区的经纬度“118.803314,32.058059”,destination参数栏填写德基广场的经纬度“118.784855,32.044079”,city参数栏填写南京市的城市代码“320100”,strategy参数栏下拉选择“0”(最快捷模式),time参数栏填写“08:00”,其余参数为默认,其中北京东路小区、德基广场的经纬度信息可在高德地图坐标拾取页面https://lbs.amap.com/console/show/picker 查询获取,城市的代码adcode可以在高德地图“Web服务API相关下载”页面 https://lbs.amap.com/api/webservice/download的“城市编码表”查询。点击“运行”按钮后便可以查看返回的结果,如表2所示:
表2
R2、分析“公交路径规划API”请求URL。
实际上,表2所示的表单构造了一个请求网址(URL=uniform resourcelocator),即如果将“您的Key”替换为所述申请的密钥,用浏览器打开替换后的URL,便能够在浏览器看到API返回的包含代码1、代码2、代码3在内的“北京东路小区-德基广场”完整出行数据,
//restapi.amap.com/v3/direction/tFansit/integrated?key=您的
key&origin=118.803314,32.058059&destination=118.784855,32.0440 79&city=320100&cityd
如果将“118.803314,32.058059”替换为其他出行起点、“118.784855,32.044079”替换为其他目的地,“320100”替换为其他城市的城市代码(adcode),“08:00”替换为其他的出行时间,构造出新的URL,则可以在浏览器中查看在其他指定城市、指定起点终点与指定出发时间的出行数据。因此,获取公交出行的关键点是以出发点经纬度、目的地经纬度、出行城市和出发城市为参数变量构造不同的URL。
浏览器查看“公交路径规划API”返回的JSON数据,如附图3所示:
返回JSON格式的数据代表完整的通勤方案,主要包括:请求状态为成功(″status″:″1″、″info″:″OK″)、公交换乘方案数目为5(″count″:″5″)、行程花费为2元(″cost″:″2.0″)、出行时间为1655秒(″duration″:″1655″) 以及出行距离为3488米(″distance″:″3488″)。最优的出行方案分为两段,第一段为“步行+公交”,第二段为通过步行方式到达目的地点,其中,段表示第一个步行方式至第二个步行方式之间的过程。
具体地讲,出行者首先从起始点出发,沿着北京东路步行142秒到位置″118.805092,32.057503″(代码1);紧接着,出行者从该位置附近的“北京东路·九华山”公交站上车乘坐2路普通公交车,经过“太平北路·鸡鸣寺”、“四牌楼”、“大行宫北”以及“网巾市”四站后下车(代码2);最后,从“网巾市”公交站点沿洪武北路和青石街步行294秒,最终到达目的地德基广场(代码3)。
“北京东路小区-德基广场”通勤方案出行第一步的步行部分返回代码,如代码1所示:
代码1
“北京东路小区-德基广场”通勤方案出行第一步的公交部分返回代码如代码所示:
代码2
“北京东路小区-德基广场”通勤方案出行第二步返回代码如代码3所示:代码3
在本发明的一个实施例中,从返回的JSON格式的数据获取出行数据,包括以下步骤:
城市规划研究中常用到的数据,如出行路径、出行时间、出行距离、出行费用、接驳时间、接驳距离、换乘次数、公交换乘时间、公交换乘距离、公交车内时间等均能够从API返回的出行方案中得到。
P1、在返回的通勤方案中,行程花费、出行时间与出行距离等能够直接通过访问JSON的键得到相对应的值,如表3所示。
表3
其中,以“jsonData”表示返回的JSON数据,“data[‘a’]”表示JSON 数据下一层级’a’键对应的值。
其他数据的获取需要基于原始JSON数据进行简单的计算。
P2、出行路径为第一步、第二步中所有‘polyline’键值的集合,如在“北京东路小区-德基广场”通勤方案JSON数据中,路径为“步行→2路公交车→步行”,即三段polyline的连接。获取“北京东路小区-德基广场”通勤方案路径点坐标集合的代码如代码4所示:
代码4:
其中,数组walking(walking=segment[’walking’][‘steps’])中每个元素表示步行的每一步,因此需要遍历数组将所有元素的‘polyline’键值并将其追加至route_locations(3);但数组bus(bus= segment[’bus’][‘buslines’])中每个元素表示可供选择所有公交线路,因此添加每一步的公交行驶路径时,只需追加数组第一个元素的‘polyline’键值至route_locations,而无需将所有元素的‘polyline’追加。
P3、换乘次数的获取则需要简单的统计,键‘segments’对应数组(方括号[])的长度减2即为出行者乘坐公交的次数,如在示例的通勤方案JSON 数据中,由于jsonData[‘route’][‘transits’][0][‘segments’]数组的长度为2,故“北京东路小区-德基广场”出行的公交换乘次数为0。计算“北京东路小区-德基广场”通勤方案换乘次数的代码如代码5所示:
代码5
transits=jsonData[‘route’][‘transits’]
if transits!=[]:
bestTransit=transits[0]
#transits-hum指换乘次数
transits-num=len(bestTransit[segments’])-2
P4、公交换乘时间指在一次出行中,全程的步行时间除却出发点至首个公交站的步行时间、最末公交站点至目的地的步行时间后的剩余步行时间总和,因此需要统计jsonData[‘route’][‘transits’][0][‘segments’] 数组除却首个步行时间(即首个数组元素)和最末步行时间(即最末数组元素)的步行时间总和(公式1)。如在示例的通勤方案JSON数据中,由于“北京东路小区-德基广场”出行仅需乘坐1次普通公交车而无需额外换乘,故该出行的换乘时间为0.
公式(1)
其中,transit_walktime指公交换乘时间,segmenti,walktime指数组jsonData[‘route’][‘transits’][0][‘segments’]元素i的步行时间, n为数组的长度。
计算“北京东路小区-德基广场”通勤方案公交换乘时间的代码如代码6 所示:
代码6
P5、公交换乘距离指在一次出行中,全程的步行距离除却出发点至首个公交站的步行距离、最末公交站至目的地的步行时间后剩余的步行距离总和。换乘距离的统计计算与换乘时间的统计计算相类似(公式2,代码7)。
公式(2)
其中transit_walkdistance指公交换乘距离,segmenti,walkdistance指数组jsonData[‘route’][‘transits’][0][‘segments’]元素i的步行距离, n为数组的长度。
计算“北京东路小区-德基广场”通勤方案公交换乘距离的代码见代码7:
代码7
P6、公交车内时间指一次出行中,出行者在公共交通车厢内停留的时间总和,即每次换乘公共交通行驶时间总和。基于JSON数据,车内时间的获取思路为统计数组jsonData[‘route’][‘transits’][0][‘segments’]每个元素中公交行驶时间的和(公式3)。
公式(3)
其中,bustime指公交车内时间,segmenti,bustime指数组
jsonData[‘route’][‘transits’][0][‘segments’]元素i的公交行驶时间,n为数组的长度。
计算“北京东路小区-德基广场”通勤方案公交车内时间的代码如代码8 所示:
代码8
P7、如果出行起点、出行终点位于不同的城市(adcode),高德“公交路径规划”API返回的JSON出行方案数据将包含铁路出行信息。铁路时间指一次出行中,出行者在火车车厢中停留的时间总和,即火车行驶的时间总和。铁路时间的获取思路与公交车内时间的获取思路类似,即统计数组 jsonData[‘route’][‘transits’][0][‘segments’]每个元素中火车行驶时间的和(公式4)。
公式(4)
其中,railwaytime指铁路时间,segmenti,railwaytime指数组
jsonData[‘route’][‘transits’][0][‘segments’]元素i的铁路时间,n为数组的长度。
计算“北京东路小区-德基广场”通勤方案铁路时间的代码如代码9所示:
代码9
在本发明的一个实施例中,采用Python程序,对所述通勤数据进行批量采集,包括:数据准备、编写程序、程序执行三个阶段。
具体地,数据准备包括以下步骤:
G1、在Excel或ArcGIS软件中,在采集的POI数据中筛选出出发地并将其保存为“O.csv”文件,CSV文件的第一列是从0开始的各出发地的编号,每个POI按照ID、英文名称、中文名称、类型、经度和纬度的格式依次以分号分割为一条记录;
G2、在电子地图坐标拾取平台或采集的POI数据查询目标地的经纬度坐标,并将其信息依照相同的数据排列格式保存为“D.csv”,同样地,CSV文件的第一列是从0开始的各目的地的编号;
G3、在ArcGIS中打开“O.csv”和“D.csv”,查看出发地与目标地的空间位置是否正确。
编写程序包括以下步骤:
B1、创建POI类:POI类(PointWithAttr)表示一个点,其构造函数所需参数为POI的ID(id)、经度(lon)、纬度(lat)、类型(type)和名称(name),每个POI为“.csv”文件的一条记录;
B2、创建LOI类:LOI类(LineWithAttr)表示一条线,即路径,其构造函数所需参数为路径的起点(origin,PointWithAttr类型)、终点 (destination,PointWithAttr类的实例)、距离(distance)、通行时间 (duration)和路径点经纬度组成的列表(coords);
B3、起点信息和终点信息保存在“.csv”文本文件中,定义从文本文件中读取POI的函数为 createpoint(filename,idindex,lonindex,latindex,nameindex,namelinde x),从“.csv”文件中读取POI信息并将每个POI生成为一个PointWithAttr 类的实例,其中,filename表示函数的参数CSV文件的存储路径,idindex 表示POI的ID位于记录的列号数,lonindex表示经度位于记录的列号数, latindex表示纬度位于记录的列号数,nameindex表示英文名称位于记录的列号数,namelindex表示中文名称位于记录的列号数;最终,从文本文件中读取POI的函数返回PointWithAttr类实例组成的POI列表points。
步骤B1至B3定义的类和函数具有从“.csv”文件中读取所有起点、终点信息的功能。
B4、定义采集公交出行数据函数为GetBusInformation (ak,opoint,dpoint,date,time,city,outputfile),以采集从某个具体起点到某个具体终点的公交出行数据,其中,ak表示密钥,opoint表示起点POI (PointWithAttr类的实例),dpoint表示终点POI(PointWithAttr类的实例),date表示出发日期,time表示出发时间,outputfile表示采集数据保存的文件路径;
B5、出行路径数据是一系列坐标点组成的列表,定义第一采集出行路径函数为GetTotalLine(ak,opoint,dpoint,date,time,city,filename),其中, filename表示出行路径保存的文件路径;将出行起点ID、起点名称、起点经纬度、终点ID、终点名称、终点经纬度、路径长度、路径通行时间、路径通行花费和route_locations依次写入文本文件filename中,变量分别以分号分割;
B6、定义第二采集出行路径函数为GetPolyline (line_sourcefile,shp_output),生成出行路径的Shapefile文件,其中, line_sourcefile表示记录所有出行路径信息的文本文件路径,shp_output 表示最终的shapefile文件。该函数主要基于ArcPy拓展包实现。
进一步地,步骤B4中,具体包括以下步骤:
C1、公交出行数据函数依据参数密钥(ak)、起点POI(opoint)、终点 POI(dpoint)、出发日期(date)、出发时间(time)构造请求URL;
requesturl=″http://restapi.amap.com/v3/direction/transit/integrated?key=″+ak+″&origin=″+\opoint.lon+″,″+opoint.lat+″&destination =″+dpoint.lon+″,″+dpoint.lat+″&city=″+city+\″&cityd=&strategy=O&ni ghtflag=O&date=″+date+″&time=″+time;
C2、程序通过Python的urllib2模块和json模块,打开请求URL并下载电子地图的路径规划API返回的json数据;
C3、按照表4、代码5、代码6、代码7、代码8以及代码9的逻辑,将代码片段改写为语法正确且能够顺利运行、完整的Python代码,即基于返回的json数据,提取或计算出行时间、出行距离、出行费用、全程步行距离、出发点-公交站、步行时间、出发点-公交站步行距离、公家站-目的地步行时间、公交站-目的地步行距离、换乘次数、公交换乘时间、公交换乘距离、公交车内时间、铁路时间的变量值;
C4、依次将所述述变量值写入文本文件outputfile作为一条记录,表示一次出行数据,变量值以逗号分割。
进一步地,步骤B5中,具体包括以下步骤:
D1、第一出行路径函数依据参数密钥、起点POI、终点POI、出发日期、出发时间构造请求URL;
requesturl=″http://restapi.amap.com/v3/direction/transit/integrated?key=″+ak+″&origin=″+\opoint.lon+″,″+opoint.lat+″&destination =″+dpoint.lon+″,″+dpoint.lat+″&city=″+city+\″&cityd=&strategy=0&ni ghtflag=O&date=″+date+″&time=″+time
D2、程序通过Python的urllib2模块和json模块,打开请求URL并下载电子地图的路径规划API返回的json数据;
D3、按照代码4的逻辑,将代码片段改写为语法正确且能够顺利运行、完整的Python代码,即基于返回的json数据,将各出行步骤中步行路径、公交路径通过Python的字符串运算符“+”相连接,得到最终的路径变量route_locations,其中路径点的经度和纬度以逗号分割,路径点之间以分号分割;此外,依据表4的逻辑,从json数据中提取出行时间、出行距离与出行花费三个数据后分别赋值给变量duration、distance和cost;
D4、将出行起点ID、起点名称、起点经纬度、终点ID、终点名称、终点经纬度、路径长度、路径通行时间、路径通行花费和route_locations依次写入文本文件filename中,变量分别以分号分割。
进一步地,步骤B6中,具体包括以下步骤:
步骤B5采集的路径数据仅仅写入了文本文件中,无法在ArcGIS软件中查看空间图形和进行后续的空间分析,因此定义第二采集出行路径的函数。
F1、利用CreateFeatureclass_management工具函数新建空白shapefile,其坐标系设置为“WGS1984”。
E2、利用AddField_management工具函数为所述shapefile添加七个字段:oid、oname、did、dname、duration、distance和cost,分别代表路径的起点ID、起点名称、终点ID、终点名称、路径长度、路径通行时间、路径通行花费;
E3、读取文本文件line_sourcefile,每条记录生成一个LineWithAttr 类的实例,存储在列表linelist中;
E4、遍历列表linelist,每个LineWithAttr类实例的路径坐标用arcpy.Polylinearray方法生成线几何对象;再基于Arcpy的数据访问模块 dataaccessda依次为七个新建字段赋值,用insertRowrow方法为shapefile 添加路径线要素;
E6、每条路径均转化为shapefile中的一个线要素。
其中,GIS中每个空间要素是一个几何对象,几何对象是空间坐标值和 ArcGIS支持的空间数据之间转换的桥梁。ArcGIS支持点、多点、线、多边形等几何对象。
具体地,程序执行的逻辑如下:
F1、确定输出数据的保存文件夹(outputdirectory),密钥(ak)、出行日期(date)、出行时间(time)、出行城市(city)、存储着出发点信息的CSV 文件路径(ofile)以及存储着目的地信息的CSV文件路径(dfile);
F2、分别以ofile和dfile为参数,调用函数createpoint(filename,idindex,lonindex,latindex,nameindex,namelinde x),得到起点POI列表opointlist和终点POI列表dpointlist;
F3、通过双重循环语句,以起点POI列表的第i个起点和终点POI列表的第j个终点为参数,依次调用函数 GetBusInformation(ak,opoint,dpoint,date,time,city,outputfile),得到出发地到目的地的出行数据;outputfile以起点id和关键字“data”命名存储采集得到的起点i至所有终点的属性类型的出行数据,其中每个起点至每个终点的出行数据为一条记录。
F4、调用mergetxt(outputdirectory,finalfile)函数,将所有属性类型的出行数据合并到一个文本文件final_data.txt。
若需要用到出行路径数据,则需要通过循环语句,以opointlist的第i 个起点和dpointlist的第j个终点为参数,依次调用函数 GetTotalLine(ak,opoint,dpoint,date,time,city,filename)得到每个居住区到商业中心的出行路径;调用mergetxt(outputdirectory,finalfile)函数,将所有路径文本文件汇总到一个文本文件finalline.txt;以 finalline.txt为参数,调用函数 GetPolyline(line_sourcefile,shp_output),将文本空间信息转化为能够进行可视化和空间分析的Shapefile文件“line.shp”。
按照上述方法,采集了南京市主城区4670个居住小区到2个商业中心的9340条出行属性数据和9340条出行路径,部分内容如附图4所示:
各居住小区到新街口的出行路径如图1所示,
新街口地区的居住小区到新街口的出行路径如图2所示。
本具体实施方式的实施例均为本发明的较佳实施例,并非依此限制本发明的保护范围,故:凡依本发明的结构、形状、原理所做的等效变化,均应涵盖于本发明的保护范围之内。

Claims (11)

1.一种基于电子地图的通勤数据批量采集方法,其特征在于:包括以下步骤:
S1、利用电子地图的公交路径规划API获得通勤数据;
S2、采用Python程序,对所述通勤数据进行批量采集。
2.根据权利要求1所述的通勤数据批量采集方法,其特征在于:步骤S1中,包括以下步骤:
A1、申请Web服务API密钥;
A2、构建公交路径规划API请求网址;
A3、接受HTTP请求返回的数据,获得以JSON格式表示的通勤数据,每一组返回的数据代表一个完整的通勤方案。
3.根据权利要求2所述的通勤数据批量采集方法,其特征在于:步骤A2中,以出发点经纬度、目的地经纬度、出行城市和出发城市为参数变量构造不同的URL。
4.根据权利要求2所述的通勤数据批量采集方法,其特征在于:步骤S1中,从所述通勤方案中,直接通过访问JSON的键获得出行花费、出行时间、出行距离、各段步行距离、各段步行时间;其中,段表示某一个步行方式至下一个步行方式之间的过程;
遍历出行的所有段中所有多段线键值的集合,包括每一段的步行路径和每一段的公交行驶路径,计算出行路径,其中,每一段的步行都计算在内,每一段的公交行驶路径只需计算一次;
公交换乘次数,为段键值对应数组的长度减2;
公交换乘时间,为统计数组jsonData[‘route’][‘transits’][0][‘segments’]每个元素的步行时间总和,减去首个数组元素和最末数组元素的步行时间;
公交换乘距离,为统计数组jsonData[‘route’][‘transits’][0][‘segments’]每个元素中的步行距离总和,减去首个数组元素和最末数组元素的步行距离;
公交车内时间,为统计数组jsonData[‘route’][‘transits’][0][‘segments’]每个元素中公交行驶时间的和;
铁路时间,为统计数组jsonData[‘route’][‘transits’][0][‘segments’]每个元素中火车行驶时间的和;
其中;“jsonData”表示返回的JSON数据,“data[‘X’]”表示JSON数据下一层级‘X’键对应的值。
5.根据权利要求1所述的通勤数据批量采集方法,其特征在于:步骤S2中,数据准备包括以下步骤:
G1、在Excel或ArcGIS软件中,在采集的POI数据中筛选出出发地并将其保存为“O.csv”文件,每个POI按照ID、英文名称、中文名称、类型、经度和纬度的格式依次以分号分割为一条记录;
G2、在电子地图坐标拾取平台或采集的POI数据查询目标地的经纬度坐标,并将其信息依照相同的数据排列格式保存为“D.csv”;
G3、在ArcGIS中打开“O.csv”和“D.csv”,查看出发地与目标地的空间位置是否正确。
6.根据权利要求1所述的通勤数据批量采集方法,其特征在于:步骤S2中,编写程序包括以下步骤:
B1、创建POI类:POI类表示一个点,其构造函数所需参数为POI的ID、经度、纬度、类型和名称,即每个POI为“.csv”文件的一条记录;
B2、创建LOI类:LOI类表示一条线,其构造函数所需参数为路径的起点,终点、距离、通行时间和路径点经纬度组成的列表;
B3、定义从文本文件中读取POI的函数为createpoint(filename,idindex,lonindex,latindex,nameindex,name1index),从CSV文件中读取POI信息并将每个POI生成为一个点的实例,其中,filename表示函数的参数CSV文件的存储路径,idindex表示POI的ID位于记录的列号数,lonindex表示经度位于记录的列号数,latindex表示纬度位于记录的列号数,nameindex表示英文名称位于记录的列号数,name1index表示中文名称位于记录的列号数;
B4、定义采集公交出行数据函数为GetBusInformation(ak,opoint,dpoint,date,time,city,outputfile),以采集从某个具体起点到某个具体终点的公交出行数据,其中,ak表示密钥,opoint表示起点POI,dpoint表示终点POI,date表示出发日期,time表示出发时间,outputfile表示采集数据保存的文件路径;
B5、定义第一采集出行路径函数为GetTotalLine(ak,opoint,dpoint,date,time,city,filename),其中,filename表示出行路径保存的文件路径;将出行起点ID、起点名称、起点经纬度、终点ID、终点名称、终点经纬度、路径长度、路径通行时间、路径通行花费和route_locations依次写入文本文件filename中,变量分别以分号分割;
B6、定义第二采集出行路径函数为GetPolyline(line_sourcefile,shp_output),生成出行路径的Shapefile文件,其中,line_sourcefile表示记录所有出行路径信息的文本文件路径,shp_output表示最终的shapefile文件。
7.根据权利要求5所述的通勤数据批量采集方法,其特征在于:步骤B4中,包括以下步骤:
C1、公交出行数据函数依据参数密钥、起点POI、终点POI、出发日期、出发时间构造请求URL;
C2、程序通过Python的urllib2模块和json模块,打开请求URL并下载电子地图的路径规划API返回的json数据;
C3、基于返回的json数据,提取或计算出行时间、出行距离、出行费用、全程步行距离、出发点-公交站、步行时间、出发点-公交站步行距离、公家站-目的地步行时间、公交站-目的地步行距离、换乘次数、公交换乘时间、公交换乘距离、公交车内时间、铁路时间的变量值;
C4、依次将所述述变量值写入文本文件outputfile作为一条记录,表示一次出行数据,变量值以逗号分割。
8.根据权利要求5所述的通勤数据批量采集方法,其特征在于:步骤B5中,包括以下步骤:
D1、第一出行路径函数依据参数密钥、起点POI、终点POI、出发日期、出发时间构造请求URL;
D2、程序通过Python的urllib2模块和json模块,打开请求URL并下载电子地图的路径规划API返回的json数据;
D3、基于返回的json数据,将各出行步骤中步行路径、公交路径通过Python的字符串运算符“+”相连接,得到最终的路径变量route_locations,其中路径点的经度和纬度以逗号分割,路径点之间以分号分割;并提取出行时间、出行距离与出行花费三个数据后分别赋值给变量duration、distance和cost;
D4、将出行起点ID、起点名称、起点经纬度、终点ID、终点名称、终点经纬度、路径长度、路径通行时间、路径通行花费和route_locations依次写入文本文件filename中,变量分别以分号分割。
9.根据权利要求5所述的通勤数据批量采集方法,其特征在于:步骤B6中,包括以下步骤:
E1、利用CreateFeatureclass_management工具函数新建空白shapefile,其坐标系设置为“WGS1984”;
E2、利用AddField_management工具函数为所述shapefile添加七个字段:oid、oname、did、dname、duration、distance和cost,分别代表路径的起点ID、起点名称、终点ID、终点名称、路径长度、路径通行时间、路径通行花费;
E3、读取文本文件line_sourcefile,每条记录生成一个LineWithAttr类的实例,存储在列表linelist中;
E4、遍历列表linelist,每个LineWithAttr类实例的路径坐标用arcpy.Polylinearray方法生成线几何对象;再基于Arcpy的数据访问模块dataaccessda依次为七个新建字段赋值,用insertRowrow方法为shapefile添加路径线要素;
E6、每条路径均转化为shapefile中的一个线要素。
10.根据权利要求1所述的通勤数据批量采集方法,其特征在于:程序执行的逻辑如下:
F1、确定输出数据的保存文件夹,密钥、出行日期、出行时间、出行城市、存储着出发点信息的CSV文件路径以及存储着目的地信息的CSV文件路径;
F2、分别以ofile和dfile为参数,调用函数createpoint(filename,idindex,lonindex,latindex,nameindex,name1index),得到起点POI列表opointlist和终点POI列表dpointlist;
F3、通过双重循环语句,以起点POI列表的第i个起点和终点POI列表的第j个终点为参数,依次调用函数GetBusInformation(ak,opoint,dpoint,date,time,city,outputfile),得到出发地到目的地的出行数据;
F4、调用mergetxt(outputdirectory,finalfile)函数,将所有属性类型的出行数据合并到一个文本文件final_data.txt。
11.根据权利要求9所述的通勤数据批量采集方法,其特征在于:取得出行路径数据,包括F5、通过循环语句,以opointlist的第i个起点和dpointlist的第j个终点为参数,依次调用函数GetTotalLine(ak,opoint,dpoint,date,time,city,filename)得到每个出发地到各目的地的出行路径;调用mergetxt(outputdirectory,finalfile)函数,将所有路径文本文件汇总到一个文本文件final_line.txt;以final_line.txt为参数,调用函数GetPolyline(line_sourcefile,shp_output),将文本空间信息转化为能够进行可视化和空间分析的Shapefile文件“line.shp”。
CN201910189978.XA 2019-03-13 2019-03-13 一种基于电子地图的通勤数据批量采集方法 Active CN109977323B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910189978.XA CN109977323B (zh) 2019-03-13 2019-03-13 一种基于电子地图的通勤数据批量采集方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910189978.XA CN109977323B (zh) 2019-03-13 2019-03-13 一种基于电子地图的通勤数据批量采集方法

Publications (2)

Publication Number Publication Date
CN109977323A true CN109977323A (zh) 2019-07-05
CN109977323B CN109977323B (zh) 2021-09-03

Family

ID=67078667

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910189978.XA Active CN109977323B (zh) 2019-03-13 2019-03-13 一种基于电子地图的通勤数据批量采集方法

Country Status (1)

Country Link
CN (1) CN109977323B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113074735A (zh) * 2021-03-24 2021-07-06 同济大学 一种地图数据结构的处理方法

Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN201548960U (zh) * 2009-04-23 2010-08-11 厦门高德软件有限公司 一种获取公交信息的设备
CN102087786A (zh) * 2010-02-09 2011-06-08 陈秋和 基于信息融合的智能交通人、车、路的信息处理方法及系统
CN102495856A (zh) * 2011-11-22 2012-06-13 南京大学 一种基于电子地图的步行商圈生成方法
CN102981851A (zh) * 2012-11-15 2013-03-20 深圳市共进电子股份有限公司 一种嵌入式网络设备界面语言的快速开发维护系统及方法
CN103067854A (zh) * 2011-10-21 2013-04-24 昆山研达电脑科技有限公司 一种基于终端计算的手机导航方法及系统
CN103245349A (zh) * 2013-05-13 2013-08-14 天津大学 基于图片gps信息和谷歌地图的路线导航方法
CN103941265A (zh) * 2014-05-05 2014-07-23 中邮科通信技术股份有限公司 基于gps的身份证认证便民信息装置及其应用方法
DE202014103884U1 (de) * 2014-08-20 2015-01-09 Tomtom International B.V. Navigationsvorrichtung mit verbesserten Widgets und Anwendungen
CN104679942A (zh) * 2015-01-29 2015-06-03 华南理工大学 一种基于数据挖掘的建设用地承载效率测度方法
CN104750799A (zh) * 2015-03-23 2015-07-01 华南理工大学 一种基于地址解析数据的建设用地类型快速识别方法
CN106643775A (zh) * 2017-02-23 2017-05-10 高域(北京)智能科技研究院有限公司 基于大数据机器学习的导航方法及其导航系统
CN108182592A (zh) * 2017-12-11 2018-06-19 北京奇虎科技有限公司 公交线路多维特征属性挖掘方法、装置及电子设备
CN109325617A (zh) * 2018-09-04 2019-02-12 青岛海信网络科技股份有限公司 一种城市交通状态预测方法及装置
CN109348417A (zh) * 2018-09-28 2019-02-15 Oppo广东移动通信有限公司 路线的显示方法、装置、终端及存储介质
CN109446381A (zh) * 2018-10-16 2019-03-08 中山大学 一种基于时态图的公共交通路网集成方法

Patent Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN201548960U (zh) * 2009-04-23 2010-08-11 厦门高德软件有限公司 一种获取公交信息的设备
CN102087786A (zh) * 2010-02-09 2011-06-08 陈秋和 基于信息融合的智能交通人、车、路的信息处理方法及系统
CN103067854A (zh) * 2011-10-21 2013-04-24 昆山研达电脑科技有限公司 一种基于终端计算的手机导航方法及系统
CN102495856A (zh) * 2011-11-22 2012-06-13 南京大学 一种基于电子地图的步行商圈生成方法
CN102981851A (zh) * 2012-11-15 2013-03-20 深圳市共进电子股份有限公司 一种嵌入式网络设备界面语言的快速开发维护系统及方法
CN103245349A (zh) * 2013-05-13 2013-08-14 天津大学 基于图片gps信息和谷歌地图的路线导航方法
CN103941265A (zh) * 2014-05-05 2014-07-23 中邮科通信技术股份有限公司 基于gps的身份证认证便民信息装置及其应用方法
DE202014103884U1 (de) * 2014-08-20 2015-01-09 Tomtom International B.V. Navigationsvorrichtung mit verbesserten Widgets und Anwendungen
CN104679942A (zh) * 2015-01-29 2015-06-03 华南理工大学 一种基于数据挖掘的建设用地承载效率测度方法
CN104750799A (zh) * 2015-03-23 2015-07-01 华南理工大学 一种基于地址解析数据的建设用地类型快速识别方法
CN106643775A (zh) * 2017-02-23 2017-05-10 高域(北京)智能科技研究院有限公司 基于大数据机器学习的导航方法及其导航系统
CN108182592A (zh) * 2017-12-11 2018-06-19 北京奇虎科技有限公司 公交线路多维特征属性挖掘方法、装置及电子设备
CN109325617A (zh) * 2018-09-04 2019-02-12 青岛海信网络科技股份有限公司 一种城市交通状态预测方法及装置
CN109348417A (zh) * 2018-09-28 2019-02-15 Oppo广东移动通信有限公司 路线的显示方法、装置、终端及存储介质
CN109446381A (zh) * 2018-10-16 2019-03-08 中山大学 一种基于时态图的公共交通路网集成方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
ZHI KE HAN 等: "Research and Application on the Urban Public Transport Route Accounting System", 《APPLIED MECHANICS AND MATERIALS》 *
徐建刚 等: "镇村布局规划中的空间分析方法", 《安徽农业科学》 *
石伟: "基于LBS的车辆出行时空特征研究", 《中国优秀硕士学位论文全文数据库工程科技Ⅱ辑》 *
罗虹: "基于GPS的公交车辆到达时间预测技术研究", 《中国优秀硕士学位论文全文数据库工程科技Ⅱ辑》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113074735A (zh) * 2021-03-24 2021-07-06 同济大学 一种地图数据结构的处理方法
CN113074735B (zh) * 2021-03-24 2023-01-31 同济大学 一种地图数据结构的处理方法

Also Published As

Publication number Publication date
CN109977323B (zh) 2021-09-03

Similar Documents

Publication Publication Date Title
Kong et al. Mobility dataset generation for vehicular social networks based on floating car data
JP5300821B2 (ja) 交通情報記述モデル確立方法、交通情報要素知識ベース生成方法、交通情報変換方法、交通情報記述モデル確立装置、交通情報要素知識ベース生成装置、及び交通情報変換装置
Ozimek et al. Stata utilities for geocoding and generating travel time and travel distance information
CN110472066A (zh) 一种城市地理语义知识图谱的构建方法
Chilton Crowdsourcing is radically changing the geodata landscape: case study of OpenStreetMap
US9417076B2 (en) Total route score to measure quality of map content
CN103808325A (zh) 交通出行方案的生成方法及装置
JP2011514540A (ja) 地理情報システムにおける線形参照システムイベントの配置
Fogliaroni et al. Intersections of our world
Sevtsuk et al. Predicting pedestrian flow along city streets: A comparison of route choice estimation approaches in downtown San Francisco
Sun et al. An evaluation method of urban public transport facilities resource supply based on accessibility
Teslya Web mapping service for mobile tourist guide
CN107808217A (zh) 一种基于北斗定位与客流量的公交换乘优化方法
CN114187420A (zh) 一种实时在线城市规划沙盘模拟方法
CN109977323A (zh) 一种基于电子地图的通勤数据批量采集方法
Steenberghen et al. Support study on data collection and analysis of active modes use and infrastructure in Europe
Hendawi et al. CrowdPath: a framework for next generation routing services using volunteered geographic information
Paul Reviewing the axial-line approach to capturing vehicular trip-makers’ route-choice decisions with ground reality
Li et al. Multimodal, multicriteria dynamic route choice: A GIS-microscopic traffic simulation approach
US11859985B2 (en) Map data validation using knowledge graphs and randomness measures
Richly et al. Optimizing routes of public transportation systems by analyzing the data of taxi rides
Feldkamp et al. Automatic generation of route networks for microscopic traffic simulations
JP4901073B2 (ja) 簡略化デジタル道路網データの製造方法
Zhang et al. A route-planning algorithm based on subway passenger routes choice behavior analysis
Hajduk Big data for activity based transport models

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant