本發(fā)明屬于城市規(guī)劃技術(shù)領(lǐng)域,涉及基于大型數(shù)據(jù)庫對出租車gps數(shù)據(jù)處理的方法。
技術(shù)背景
移動數(shù)據(jù)是記錄和反映城市動態(tài)的重要傳感數(shù)據(jù),目前國內(nèi)外學(xué)者已經(jīng)對手機(jī)、公共交通卡以及出租車的移動數(shù)據(jù)進(jìn)行了廣泛和深入的研究工作,而出租車作為市內(nèi)常用公共交通工具,出租車gps數(shù)據(jù)可以記錄和反映城市交通出行、人群移動,且具有覆蓋范圍廣、布設(shè)成本低、位置數(shù)據(jù)精度高、隱私問題小和信息提取方便的優(yōu)點(diǎn),是重要移動軌跡數(shù)據(jù)來源之一,較之傳統(tǒng)的出行信息采集方式能大大節(jié)省成本、提高了效率。對出租車的gps數(shù)據(jù)進(jìn)行處理分析,既可以用于城市交通狀況的判斷,也能用于居民出行行為的分析。對于大數(shù)據(jù)應(yīng)用來說,最重要的是在獲得大數(shù)據(jù)以后,如何處理海量的具有空間位置信息原始數(shù)據(jù),然后才能在此基礎(chǔ)上進(jìn)行相應(yīng)的研究工作。
雖然國內(nèi)外的文獻(xiàn)對出租車gps數(shù)據(jù)進(jìn)行了大量的相關(guān)研究,但很少就gps出租車的原始數(shù)據(jù)處理過程作詳細(xì)的說明,現(xiàn)有的數(shù)據(jù)處理方法也比較繁瑣,影響了出租車gps數(shù)據(jù)的廣泛而又深入的應(yīng)用。本發(fā)明提出一種基于大型數(shù)據(jù)庫處理出租車gps數(shù)據(jù)的方法,處理后的出租車gps數(shù)據(jù)可以匹配到城市道路網(wǎng)上去,進(jìn)行相關(guān)的處理和分析,包括從出租車的軌跡數(shù)據(jù)中識別出行起點(diǎn)和終點(diǎn)、出行起點(diǎn)和終點(diǎn)的時(shí)空分布規(guī)律以及出租車的軌跡數(shù)據(jù)處理和顯示等。
技術(shù)實(shí)現(xiàn)要素:
發(fā)明目的:針對現(xiàn)存問題的不足,本發(fā)明提出一種基于大型數(shù)據(jù)庫的出租車位置數(shù)據(jù)處理方法,該方法操作較為簡便,精確度高,且能根據(jù)研究所需提取所需數(shù)據(jù),有效彌補(bǔ)了目前較為缺失的出租車gps原始數(shù)據(jù)處理方法。處理后的數(shù)據(jù)可應(yīng)用于多種數(shù)據(jù)分析,為下一步城市交通狀況的判斷、居民出行行為的分析奠定基礎(chǔ)。
技術(shù)方案:為了達(dá)到上述發(fā)明目的,本發(fā)明提供了基于大型數(shù)據(jù)庫的出租車位置數(shù)據(jù)處理方法,包括以下步驟:
(1)通過數(shù)據(jù)庫的管理軟件將出租車的gps原始數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫中,所述原始數(shù)據(jù)包括出租車id、gps時(shí)間、gps經(jīng)度、gps緯度、gps速度、gps方向和載客狀態(tài);
(2)基于sql語句對出租車gps數(shù)據(jù)進(jìn)行清洗處理,包括刪除經(jīng)緯度越界、車輛靜止、載客和空載狀態(tài)長時(shí)間無變化、行駛方向大于360度的數(shù)據(jù);
(3)將清洗后的出租車gps數(shù)據(jù)進(jìn)行坐標(biāo)轉(zhuǎn)換,統(tǒng)一到與數(shù)字地圖相同的坐標(biāo)系;
(4)將轉(zhuǎn)換坐標(biāo)后的出租車gps數(shù)據(jù)進(jìn)行地圖匹配,使得出租車的gps軌跡數(shù)據(jù)匹配到數(shù)字地圖的路網(wǎng)數(shù)據(jù)上;
(5)將處理后的出租車gps數(shù)據(jù)應(yīng)用于實(shí)際城市空間分析。
進(jìn)一步地,所述步驟(1)中,出租車的gps原始數(shù)據(jù)存儲于一個csv文件中。
進(jìn)一步地,所述步驟(2)中包括:
(2.1)查詢研究范圍的經(jīng)緯度坐標(biāo)范圍,使用sql語句查詢不在該地理坐標(biāo)范圍內(nèi)的數(shù)據(jù)并予以刪除;
(2.2)使用sql語句查詢每一輛出租車gps速度總和為0的數(shù)據(jù)并予以刪除;
(2.3)使用sql語句查詢每一輛出租車載客狀態(tài)不為0或1的數(shù)據(jù)并予以刪除,并查詢每一輛出租車載客狀態(tài)總和為0或平均值為1的數(shù)據(jù)并予以刪除;其中載客狀態(tài)為0表示出租車空駛,為1表示出租車載客;
(2.4)使用sql語句查詢每一輛出租車gps方向值大于360的數(shù)據(jù)并予以刪除。
進(jìn)一步地,所述步驟(5)包括:
(5.1)使用sql語句根據(jù)載客狀態(tài)的變化從清洗后的出租車gps數(shù)據(jù)提取乘客出行的起點(diǎn)和終點(diǎn),創(chuàng)建起點(diǎn)表和終點(diǎn)表;
(5.2)將起點(diǎn)表和終點(diǎn)表中的坐標(biāo)數(shù)據(jù)進(jìn)行轉(zhuǎn)換,與遙感影像數(shù)據(jù)在arcgis中進(jìn)行疊加顯示,獲得不同時(shí)間出行點(diǎn)空間分布特性;
(5.3)生成出租車軌跡線要素,并疊加上乘客的上車點(diǎn)和下車點(diǎn),對出租車運(yùn)行軌跡中的不同乘客狀態(tài)進(jìn)行可視化處理。
有益效果:本發(fā)明提供的出租車gps數(shù)據(jù)處理方法簡單易行,可操作性強(qiáng),充分利用現(xiàn)有的數(shù)據(jù)管理軟件和gis軟件,方便沒有計(jì)算機(jī)背景的人士處理原始gps數(shù)據(jù),有利于時(shí)空位置數(shù)據(jù)在城市研究中的應(yīng)用和推廣。
附圖說明:
圖1為本發(fā)明實(shí)施例的方法流程圖;
圖2為本發(fā)明實(shí)施例經(jīng)緯度越界的出租車gps數(shù)據(jù)示例圖;
圖3為本發(fā)明實(shí)施例出租車經(jīng)緯度和時(shí)間信息均無變化的數(shù)據(jù)示例圖;
圖4為本發(fā)明實(shí)施例出租車全天乘客狀態(tài)為0的數(shù)據(jù)示例圖;
圖5為本發(fā)明實(shí)施例出租車行駛方向>360的數(shù)據(jù)示例圖;
圖6為本發(fā)明實(shí)施例匹配到路網(wǎng)上的出租車的軌跡點(diǎn)示例圖,其中(a)為匹配前的軌跡點(diǎn),(b)為匹配后的軌跡點(diǎn);
圖7為本發(fā)明實(shí)施例上午8-9點(diǎn)乘客上車點(diǎn)空間分布圖;
圖8為本發(fā)明實(shí)施例出租車gps數(shù)據(jù)的軌跡圖。
具體實(shí)施方式:
下面結(jié)合附圖對本發(fā)明作更進(jìn)一步的說明。
以下將結(jié)合南京主城區(qū)某一天gps數(shù)據(jù)詳細(xì)地說明本發(fā)明的技術(shù)方案。
如圖1所示,本發(fā)明實(shí)施例公開的一種基于大型數(shù)據(jù)庫的出租車數(shù)據(jù)處理方法,具體包括如下步驟:
步驟1:將出租車的gps原始數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫中。由于excel中一個sheet僅能存入10萬行左右的數(shù)據(jù),access數(shù)據(jù)庫雖不受記錄行數(shù)的限制,但受access文件量大小2g限制,而出租車原始gps數(shù)據(jù)一天的數(shù)據(jù)量總計(jì)有數(shù)千萬條記錄,超過2g的文件量大小,所以不能將出租車的gps原始數(shù)據(jù)存儲于excel表或access數(shù)據(jù)庫中進(jìn)行數(shù)據(jù)清洗及處理。本步驟中,將出租車的gps原始數(shù)據(jù)存儲于一個csv文件,主要包括出租車id、gps時(shí)間、gps經(jīng)度、gps緯度、gps速度、gps方向,載客狀態(tài)等信息。
選擇獲取的2010/09/01一天的gps數(shù)據(jù)作為試驗(yàn)數(shù)據(jù),采用大型數(shù)據(jù)庫管理軟件系統(tǒng),如mysql、sqlserver、oracle等數(shù)據(jù)庫,本實(shí)施例以開源的mysql為例,應(yīng)用mysql數(shù)據(jù)庫管理軟件來建立njtaxgps數(shù)據(jù)庫,通過導(dǎo)入數(shù)據(jù)模塊,將2010/09/01一天出租車的gps原始數(shù)據(jù)導(dǎo)入到njtaxgps數(shù)據(jù)庫中,生成
njtaxgps數(shù)據(jù)庫中一個相應(yīng)的tax0901,對數(shù)據(jù)表中的字段進(jìn)行定義,將出租車原始的gps數(shù)據(jù)轉(zhuǎn)化成可處理的格式,數(shù)據(jù)表的字段定義如表1所示。
表1gps數(shù)據(jù)表字段
對tax0901表中的記錄數(shù)據(jù)按vehiclesimid和gpstime兩個字段進(jìn)行升序排列,并生成rownum字段,記錄每一個記錄在表中的順序號,統(tǒng)計(jì)原始數(shù)據(jù)是18668073行。
步驟2:清洗異常數(shù)據(jù)。入庫后的出租車gps數(shù)據(jù),是出租車上加裝gps獲取的采集數(shù)據(jù),是未經(jīng)過處理過的原始數(shù)據(jù),這些數(shù)據(jù)由于系統(tǒng)本身或者外界等因素影響會產(chǎn)生一些不合理誤差或錯誤數(shù)據(jù),這些誤差或錯誤數(shù)據(jù)產(chǎn)生的原因是多種因素所導(dǎo)致,如果不加以處理和清洗,而直接利用這些原始數(shù)據(jù),會影響相關(guān)分析和研究成果的精度和質(zhì)量,所以需要對收集到的出租車原始gps數(shù)據(jù)進(jìn)行數(shù)據(jù)處理和清洗工作,以保證數(shù)據(jù)的準(zhǔn)確性。對gps數(shù)據(jù)進(jìn)行清洗和處理時(shí),主要考慮以下幾種情況:經(jīng)緯度越界、車輛靜止、載客和空載狀態(tài)長時(shí)間無變化、行駛方向大于360度。在本發(fā)明中g(shù)ps原始數(shù)據(jù)以mysql數(shù)據(jù)庫中表的形式存儲,基于mysql的sql語句來刪除誤差或錯誤數(shù)據(jù),清洗異常的出租車gps數(shù)據(jù),對誤差和異常數(shù)據(jù)處理后才能進(jìn)行下一步的應(yīng)用。本數(shù)據(jù)清洗步驟中,具體步驟如下:
步驟2.1:通過使用googleearth軟件查詢研究范圍的經(jīng)緯度坐標(biāo)范圍,使用mysql的sql語句查詢不在該地理坐標(biāo)范圍內(nèi)的數(shù)據(jù)并予以刪除。本次研究范圍是南京市主城區(qū)范圍,通過使用googleearth軟件查詢,此范圍的經(jīng)緯度坐標(biāo)范圍是北緯31°30′-32°30′,東經(jīng)118°00′-119°00′,市中心(新街口)地理坐標(biāo)為北緯32°02′38″、東經(jīng)118°46′43″,因此不在該地理坐標(biāo)范圍內(nèi)的數(shù)據(jù)應(yīng)予以刪除。查詢select*fromtax0901wheregpslongitudenotbetween118.0000and119.0000unionselect*fromtax0901wheregpslatitudenotbetween31.5000and32.5000(圖2),查詢到312199行記錄有錯,從njtaxgps數(shù)據(jù)庫中的tax0901表中刪除。
步驟2.2:如果某輛出租車靜止,該出租車返回的gps經(jīng)緯度數(shù)據(jù)位置坐標(biāo)沒有變化或變化很小,車輛瞬時(shí)速度持續(xù)為0,則這類數(shù)據(jù)無法運(yùn)用。使用mysql的sql語句查詢瞬時(shí)速度總和為0的數(shù)據(jù)并予以刪除。具體操作為:在數(shù)據(jù)庫中查詢selectvehiclesimid,sum(gpsspeed)astotalspeedintospeedfromtax0901groupbyvehiclesimid,totalspeed值為0(圖3),說明出租車經(jīng)緯度和時(shí)間信息均無變化,刪除此類數(shù)據(jù)。
步驟2.3:出租車載客狀態(tài)只有0(表示出租車空駛)和1(表示出租車載客)兩種顯示,由于天氣原因(雨、雪等)或者機(jī)器本身故障原因,可能導(dǎo)致出現(xiàn)0和1以外載客狀態(tài)的錯誤顯示。使用mysql的sql語句查詢每一輛出租車的乘客狀態(tài)值不為0或者1的值并予以刪除。具體操作為:在數(shù)據(jù)庫中查詢select*intopserrfromtax0901wherepassengerstatenotbetween0and1;查詢記錄結(jié)果為0,說明出租車passengerstate的值是正確,沒有發(fā)生誤差或錯誤。
步驟2.4:出租車輛長時(shí)間空車運(yùn)行是無乘客出行(空駛)和全體載客的數(shù)據(jù)對于分析出租車乘客的出行行為無意義。使用mysql的sql語句查詢每一輛出租車的載客狀態(tài)總和為0或者平均值為1的數(shù)據(jù)并予以刪除。具體操作為:在數(shù)據(jù)庫中查詢selectvehiclesimid,sum(passengerstate)astotalpsintosumpsfromtax0901groupbyvehiclesimid,當(dāng)totalps是0時(shí)(圖4),說明一直無乘客出行,刪除此類數(shù)據(jù)。在數(shù)據(jù)庫中查詢selectvehiclesimid,avg(passengerstate)asavgpsintoavgpsfromtax0901groupbyvehiclesimid,當(dāng)avgps是1時(shí),說明是一直都是有乘客出行,刪除此類數(shù)據(jù)。
步驟2.5:出租車行駛方向在0~360°之間,由于天氣原因(雨、雪等)或者機(jī)器本身故障原因,導(dǎo)致出現(xiàn)gps方向的值大于360°。使用mysql的sql語句查詢每一輛出租車gps方向值大于360的數(shù)據(jù)并予以刪除。具體操作為:在數(shù)據(jù)庫中查詢select*intodirerrfromtax0901wheregpsdirectionnotbetween0and360;deletefromtax0901wheregpsdirection>360(圖5)得到出租車行駛方向大于360的數(shù)據(jù),刪除此類數(shù)據(jù)。
經(jīng)過上述數(shù)據(jù)清洗后,2010/09/01的出租車原始gps數(shù)據(jù)由18668073行減少到16504771行,清洗了2163302行錯誤的記錄,約占總數(shù)的11.588%;同時(shí),出租車由原來的7648輛減少到6688輛,減少了960輛出租車。
步驟3:坐標(biāo)轉(zhuǎn)換。出租車gps數(shù)據(jù)只有經(jīng)緯度坐標(biāo),生成的地理坐標(biāo)不能直接與路網(wǎng)和用地等城市數(shù)據(jù)關(guān)聯(lián)。出租車gps數(shù)據(jù)采集時(shí)采用是wgs_84地理坐標(biāo)系,landsat8影像數(shù)據(jù)是采用utm投影,因此需要將不同坐標(biāo)系的數(shù)據(jù)轉(zhuǎn)換到相同的坐標(biāo)系中,這樣才能使出租車gps數(shù)據(jù)定位點(diǎn)準(zhǔn)確地顯示在城市路網(wǎng)電子地圖和城市影像數(shù)據(jù)上。由于landsat8影像數(shù)據(jù)采用utm平面投影坐標(biāo)系,與出租車gps數(shù)據(jù)采用相同的wgs_84地理坐標(biāo)系。由于影像數(shù)據(jù)進(jìn)行坐標(biāo)轉(zhuǎn)換,需要進(jìn)行插值計(jì)算,影響遙感影像數(shù)據(jù)的精度。因此需要以landsat8影像數(shù)據(jù)utm_投影為基準(zhǔn),對出租車的gps數(shù)據(jù)、城市道路、用地?cái)?shù)據(jù)進(jìn)行投影變換,統(tǒng)一到相同的坐標(biāo)系,使出租車的gps數(shù)據(jù)定位點(diǎn)準(zhǔn)確的顯示在電子地圖和城市影像地圖上,顯示出相應(yīng)的位置。本實(shí)施例中,以landsat8影像數(shù)據(jù)wgs_1984_utm_zone_50n的投影為基準(zhǔn),對出租車的gps數(shù)據(jù)和南京市相關(guān)的城市道路、用地?cái)?shù)據(jù)進(jìn)行投影變換。
步驟4:將數(shù)據(jù)進(jìn)行地圖匹配。由于數(shù)字地圖的誤差、坐標(biāo)轉(zhuǎn)換誤差和gps定位誤差這三方面的誤差,使得疊加后出租車gps軌跡點(diǎn)可能并不在相應(yīng)的行駛道路上,因此就需要進(jìn)行地圖匹配。地圖匹配是將出租車gps軌跡數(shù)據(jù)在一定的誤差范圍內(nèi),通過gis中點(diǎn)到線的捕捉算法匹配到gis矢量電子地圖的路網(wǎng)數(shù)據(jù)上,使電子地圖上能直觀地顯示出租車的運(yùn)動軌跡,便于進(jìn)行交通分析。本步驟中,通過將出租車運(yùn)動軌跡點(diǎn)與gis路網(wǎng)數(shù)據(jù)進(jìn)行匹配,匹配結(jié)果存儲在相應(yīng)的arcgis的shapefile文件中。圖6為出租車gps點(diǎn)匹配前后對比圖,其中圖(a)中顯示匹配前的gps軌跡點(diǎn),圖(b)中顯示匹配后的gps軌跡點(diǎn)。
至此,原始出租車gps數(shù)據(jù)處理完畢。
步驟5:將處理后的出租車gps數(shù)據(jù)應(yīng)用于實(shí)際城市空間分析。如具體可做如下分析:
步驟5.1:從出租車的軌跡數(shù)據(jù)中識別出行起點(diǎn)和終點(diǎn)。乘客狀態(tài)的字段值是0和1,其中空車狀態(tài)值為0,載客狀態(tài)值為1。當(dāng)乘客狀態(tài)值由0變?yōu)?時(shí),即為乘客上車地點(diǎn),乘客狀態(tài)值由1變?yōu)?時(shí),即為乘客下車地點(diǎn);計(jì)算本次載客狀態(tài)與上次載客狀態(tài)的差值,當(dāng)前后兩次差值為1時(shí),表明是乘客上車時(shí)的地點(diǎn);當(dāng)前后兩次差值為-1時(shí),表明是乘客下車時(shí)的地點(diǎn);當(dāng)前后兩次差值為0時(shí),表明出租車的載客狀態(tài)沒有發(fā)生變化,由載客狀態(tài)的變化可判斷乘客的上車或下車位置。使用mysql的sql語句來提取乘客出行的起點(diǎn)和終點(diǎn)。
步驟5.2:出行起點(diǎn)和終點(diǎn)的時(shí)空分布規(guī)律。通過sql語句計(jì)算載客狀態(tài)前后兩次不同差值,獲得事例數(shù)據(jù)一天的整個出行點(diǎn)數(shù)據(jù)集。研究乘客上車和下車點(diǎn)的時(shí)空分布規(guī)律,需要以一定的時(shí)間為間隔,來提取不同時(shí)間段乘客上車和下車點(diǎn)的空間分布特征。在數(shù)據(jù)庫中,針對生成出行的起點(diǎn)表和終點(diǎn)表,應(yīng)用sql語句選擇不同時(shí)間段的出行點(diǎn)子集,生成屬性數(shù)據(jù)庫表格,并獲得不同時(shí)間段出行起點(diǎn)和終點(diǎn)數(shù)據(jù)。接著將屬性數(shù)據(jù)表中的經(jīng)、緯度數(shù)據(jù)生成空間位置點(diǎn),并進(jìn)行相應(yīng)的投影變換,獲得與landsat8影像數(shù)據(jù)相同的投影。然后在arcgis中聯(lián)接到數(shù)據(jù)庫中相應(yīng)的表,應(yīng)用makexyeventlayer命令將屬性數(shù)據(jù)表中的經(jīng)、緯度數(shù)據(jù)生成arcgis點(diǎn)的形文件,再應(yīng)用project命令將點(diǎn)空間數(shù)據(jù)投影轉(zhuǎn)換到與影像數(shù)據(jù)相同的投影wgs_1984_utm_zone_50n,將這些不同時(shí)間出行點(diǎn)的數(shù)據(jù)與遙感影像數(shù)據(jù)、用地等數(shù)據(jù)在arcgis中進(jìn)行疊加顯示,從而獲得不同時(shí)間出行點(diǎn)空間分布特性(圖7)。
步驟5.3:出租車的軌跡數(shù)據(jù)處理和顯示。從數(shù)據(jù)處理的角度來看,一輛出租車的軌跡數(shù)據(jù)可以表示gps采樣點(diǎn)的集合、二維地圖上的曲線和關(guān)鍵地點(diǎn)(乘客的上車點(diǎn)和下車點(diǎn))所構(gòu)成。本步驟中,將屬性數(shù)據(jù)生成空間位置點(diǎn)要素,然后由空間位置點(diǎn)要素連成線,并生成線要素,接著在此基礎(chǔ)上再疊加上乘客的上車點(diǎn)和下車點(diǎn),對出租車運(yùn)行軌跡中的不同乘客狀態(tài)進(jìn)行可視化處理生成圖8。
綜上,本發(fā)明實(shí)施例的方法操作較為簡便,處理后的數(shù)據(jù)較為精確,客觀性較強(qiáng),能直接將出租車gps數(shù)據(jù)應(yīng)用于城市時(shí)空出行和空間結(jié)構(gòu)方面的分析和研究。