TransBigData是一個(gè)為交通時(shí)空大數(shù)據(jù)處理、分析和可視化而開發(fā)的Python包。TransBigData為處理常見(jiàn)的交通時(shí)空大數(shù)據(jù)(如出租車GPS數(shù)據(jù)、共享單車數(shù)據(jù)和公交車GPS數(shù)據(jù)等)提供了快速而簡(jiǎn)潔的方法。TransBigData為交通時(shí)空大數(shù)據(jù)分析的各個(gè)階段提供了多種處理方法,代碼簡(jiǎn)潔、高效、靈活、易用,可以用簡(jiǎn)潔的代碼實(shí)現(xiàn)復(fù)雜的數(shù)據(jù)任務(wù)。轉(zhuǎn)自同濟(jì)大學(xué)余慶博士的文章:點(diǎn)擊跳轉(zhuǎn)
應(yīng)專業(yè)選修課《數(shù)據(jù)分析與可視化》的期末考核,本人參考了@小旭學(xué)長(zhǎng)的文章:點(diǎn)擊跳轉(zhuǎn)?
本文根據(jù)上述文章,對(duì)該項(xiàng)目進(jìn)行了一些代碼上的修改(在一些可能報(bào)錯(cuò)的地方進(jìn)行了修改),以及增加了對(duì)代碼的解釋以及圖文介紹,并且增加了上海的出租車軌跡數(shù)據(jù)。
本項(xiàng)目作為課程設(shè)計(jì)參考,個(gè)人感覺(jué)本項(xiàng)目在最后的呈現(xiàn)效果上十分出色。該項(xiàng)目使用jupyter notebook開發(fā)環(huán)境。
項(xiàng)目地址:https://gitee.com/scaukzh/visualization
話不多說(shuō),直接看項(xiàng)目。
數(shù)據(jù):
①出租車軌跡數(shù)據(jù)集
來(lái)源:https://people.cs.rutgers.edu/~dz220/data.html
介紹:該數(shù)據(jù)源自國(guó)外大學(xué)一名助理教授,包含了深圳市2013.10.22一天中大約600多輛出租車的軌跡數(shù)據(jù),數(shù)據(jù)包含的信息依次為出租車ID,時(shí)間,緯度,經(jīng)度,占用狀態(tài),速度;入住狀態(tài):1-乘客和0-乘客。數(shù)據(jù)一共大約54w條。
VehicleNum | Time | Lng | Lat | OpenStatus | Speed | |
---|---|---|---|---|---|---|
0 | 34745 | 20:27:43 | 113.806847 | 22.623249 | 1 | 27 |
1 | 34745 | 20:24:07 | 113.809898 | 22.627399 | 0 | 0 |
2 | 34745 | 20:24:27 | 113.809898 | 22.627399 | 0 | 0 |
3 | 34745 | 20:22:07 | 113.811348 | 22.628067 | 0 | 0 |
4 | 34745 | 20:10:06 | 113.819885 | 22.647800 | 0 | 54 |
... | ... | ... | ... | ... | ... | ... |
544994 | 28265 | 21:35:13 | 114.321503 | 22.709499 | 0 | 18 |
544995 | 28265 | 09:08:02 | 114.322701 | 22.681700 | 0 | 0 |
544996 | 28265 | 09:14:31 | 114.336700 | 22.690100 | 0 | 0 |
544997 | 28265 | 21:19:12 | 114.352600 | 22.728399 | 0 | 0 |
544998 | 28265 | 19:08:06 | 114.137703 | 22.621700 | 0 | 0 |
544999 rows × 6 columns
補(bǔ)充:我在項(xiàng)目中補(bǔ)充了一個(gè)上海的數(shù)據(jù)集,該數(shù)據(jù)集是香港科技大學(xué)智慧城市研究小組共享的數(shù)據(jù)集,包含上海市2007年02月20日單日若干輛出租車的軌跡數(shù)據(jù)。
②地圖數(shù)據(jù)
地圖采用json格式,這個(gè)地圖數(shù)據(jù)用于標(biāo)明深圳區(qū)域的范圍,在后期進(jìn)行繪圖以及數(shù)據(jù)處理的時(shí)候都有作用。
代碼部分:
一、第三方包和數(shù)據(jù)集的導(dǎo)入
1.第三包的導(dǎo)入
import transbigdata as tbd
import pandas as pd
import geopandas as gpd
import matplotlib.pyplot as plt
使用pip命令直接裝transbigdata和geopands包可能會(huì)失敗。不過(guò)transbigdata我已經(jīng)放在項(xiàng)目中去了,大家直接調(diào)用即可。geopands比較容易裝,這里就不詳細(xì)討論了。
2.讀入出租車GPS軌跡數(shù)據(jù)
data = pd.read_csv('D:/code_for_school/visualtaxi/gps_data/shenzhen_taxi_gps.csv', header=None)#修改自身路徑即可
data.columns = ['VehicleNum', 'Time', 'Lng', 'Lat', 'OpenStatus', 'Speed']
data.head() #head函數(shù)其中一個(gè)默認(rèn)參數(shù)為5,故只返回頭5條數(shù)據(jù)
VehicleNum | Time | Lng | Lat | OpenStatus | Speed | |
---|---|---|---|---|---|---|
0 | 34745 | 20:27:43 | 113.806847 | 22.623249 | 1 | 27 |
1 | 34745 | 20:24:07 | 113.809898 | 22.627399 | 0 | 0 |
2 | 34745 | 20:24:27 | 113.809898 | 22.627399 | 0 | 0 |
3 | 34745 | 20:22:07 | 113.811348 | 22.628067 | 0 | 0 |
4 | 34745 | 20:10:06 | 113.819885 | 22.647800 | 0 | 54 |
3.讀入深圳市地圖數(shù)據(jù)
# Read the GeoDataFrame of the study area
sz = gpd.read_file(r'D:/code_for_school/visualtaxi/geo_data/sz.json')#修改自身路徑即可
sz.crs = None
sz.head()
centroid_x | centroid_y | qh | geometry | |
---|---|---|---|---|
0 | 114.143157 | 22.577605 | 羅湖 | POLYGON ((114.10006 22.53431, 114.10083 22.534... |
1 | 114.041535 | 22.546180 | 福田 | POLYGON ((113.98578 22.51348, 114.00553 22.513... |
2 | 114.270206 | 22.596432 | 鹽田 | POLYGON ((114.19799 22.55673, 114.19817 22.556... |
3 | 113.851387 | 22.679120 | 寶安 | MULTIPOLYGON (((113.81831 22.54676, 113.81948 ... |
4 | 113.926290 | 22.766157 | 光明 | POLYGON ((113.99768 22.76643, 113.99704 22.766... |
sz.plot()
二、數(shù)據(jù)處理
1.剔除掉超出深圳地圖范圍的數(shù)據(jù)
# Data Preprocessing
# Delete the data outside of the study area
data = tbd.clean_outofshape(data, sz, col=['Lng', 'Lat'], accuracy=500) #剔除超出研究區(qū)域的數(shù)據(jù)
data.head(20)
VehicleNum | Time | Lng | Lat | OpenStatus | Speed | |
---|---|---|---|---|---|---|
0 | 34745 | 20:27:43 | 113.806847 | 22.623249 | 1 | 27 |
1 | 27368 | 09:08:53 | 113.805893 | 22.624996 | 0 | 49 |
2 | 22998 | 10:51:10 | 113.806931 | 22.624166 | 1 | 54 |
3 | 22998 | 10:11:50 | 113.805946 | 22.625433 | 0 | 43 |
4 | 22998 | 10:12:05 | 113.806381 | 22.623833 | 0 | 60 |
5 | 22396 | 12:14:28 | 113.806602 | 22.623949 | 1 | 45 |
6 | 32436 | 08:15:34 | 113.806465 | 22.624166 | 0 | 50 |
7 | 32436 | 08:15:04 | 113.807053 | 22.626350 | 0 | 0 |
8 | 32436 | 08:15:19 | 113.806252 | 22.625933 | 0 | 22 |
9 | 32436 | 08:14:49 | 113.807053 | 22.626333 | 0 | 0 |
10 | 32436 | 18:10:57 | 113.806885 | 22.622967 | 0 | 50 |
11 | 32436 | 18:10:27 | 113.806450 | 22.626083 | 0 | 36 |
12 | 32436 | 18:35:15 | 113.806686 | 22.623632 | 1 | 29 |
13 | 32436 | 18:10:42 | 113.805984 | 22.624683 | 0 | 41 |
14 | 27373 | 18:58:43 | 113.805969 | 22.624983 | 0 | 42 |
15 | 27373 | 08:42:34 | 113.807114 | 22.623211 | 0 | 61 |
16 | 31910 | 09:49:56 | 113.806801 | 22.626200 | 0 | 25 |
17 | 35161 | 00:43:41 | 113.807030 | 22.622833 | 1 | 51 |
18 | 35161 | 00:43:25 | 113.807098 | 22.624184 | 1 | 54 |
19 | 23411 | 20:20:06 | 113.806549 | 22.623550 | 0 | 56 |
如此一來(lái),那些不在深圳市版圖中的數(shù)據(jù)就被我們剔除掉了。
2.對(duì)數(shù)據(jù)按照車輛編號(hào)和時(shí)間順序排好
# Delete the data with instantaneous changes in passenger status
data = tbd.clean_taxi_status(data, col=['VehicleNum', 'Time', 'OpenStatus'])
#刪除出租車數(shù)據(jù)中載客狀態(tài)瞬間變化的記錄,這些記錄的存在會(huì)影響出行訂單判斷。
#判斷條件為:如果對(duì)同一輛車,上一條記錄與下一條記錄的載客狀態(tài)都與本條記錄不同,則本條記錄應(yīng)該刪去
#實(shí)際上就是按照編號(hào)和時(shí)間順序?qū)?shù)據(jù)排好
data.head(30)
VehicleNum | Time | Lng | Lat | OpenStatus | Speed | LONCOL | LATCOL | |
---|---|---|---|---|---|---|---|---|
452072 | 22396 | 00:00:29 | 113.996719 | 22.693333 | 1 | 20 | 81 | 65 |
444077 | 22396 | 00:01:01 | 113.995514 | 22.695032 | 1 | 34 | 81 | 66 |
444078 | 22396 | 00:01:09 | 113.995430 | 22.695766 | 1 | 41 | 81 | 66 |
444075 | 22396 | 00:01:41 | 113.995369 | 22.696484 | 1 | 0 | 81 | 66 |
444079 | 22396 | 00:02:21 | 113.995430 | 22.696650 | 1 | 17 | 81 | 66 |
444073 | 22396 | 00:03:01 | 113.994934 | 22.697884 | 0 | 23 | 81 | 66 |
444074 | 22396 | 00:03:41 | 113.992683 | 22.697350 | 0 | 18 | 81 | 66 |
444076 | 22396 | 00:04:21 | 113.992348 | 22.696733 | 0 | 36 | 81 | 66 |
452073 | 22396 | 00:05:01 | 113.992996 | 22.693632 | 0 | 2 | 81 | 65 |
446704 | 22396 | 00:05:41 | 113.989250 | 22.693083 | 0 | 56 | 80 | 65 |
422019 | 22396 | 00:06:21 | 113.986366 | 22.691000 | 0 | 48 | 79 | 65 |
422218 | 22396 | 00:07:41 | 113.988747 | 22.685450 | 0 | 16 | 80 | 63 |
426967 | 22396 | 00:08:21 | 113.989586 | 22.681749 | 0 | 43 | 80 | 63 |
443922 | 22396 | 00:09:01 | 113.986015 | 22.681583 | 0 | 0 | 79 | 63 |
443923 | 22396 | 00:09:41 | 113.986481 | 22.680332 | 0 | 47 | 79 | 62 |
422292 | 22396 | 00:10:21 | 113.988297 | 22.676416 | 0 | 31 | 80 | 61 |
422295 | 22396 | 00:11:01 | 113.991600 | 22.677517 | 0 | 41 | 80 | 62 |
422291 | 22396 | 00:11:09 | 113.992149 | 22.677317 | 0 | 33 | 80 | 62 |
443991 | 22396 | 00:11:41 | 113.993401 | 22.674368 | 0 | 31 | 81 | 61 |
443987 | 22396 | 00:11:49 | 113.993446 | 22.674217 | 0 | 0 | 81 | 61 |
可以看到編號(hào)相同的數(shù)據(jù)是相鄰并且是以時(shí)間推進(jìn)排序的。
3.將數(shù)據(jù)按照經(jīng)緯度進(jìn)行柵格化
柵格化的意思就是把每個(gè)數(shù)據(jù)按照經(jīng)緯度分到不同位置的格子上
# Data gridding
# Define the bounds and generate gridding parameters
bounds = [113.6, 22.4, 114.8, 22.9]
params = tbd.area_to_params(bounds, accuracy=500)
params
#(113.6, 22.4, 0.004872390756896538, 0.004496605206422906)
#柵格參數(shù)(lonStart,latStart,deltaLon,deltaLat),分別為柵格左下角坐標(biāo)與單個(gè)柵格的經(jīng)緯度長(zhǎng)寬
# Mapping GPS data to grids
data['LONCOL'], data['LATCOL'] = tbd.GPS_to_grid(data['Lng'], data['Lat'], params)
data.head()
VehicleNum | Time | Lng | Lat | OpenStatus | Speed | LONCOL | LATCOL | |
---|---|---|---|---|---|---|---|---|
452072 | 22396 | 00:00:29 | 113.996719 | 22.693333 | 1 | 20 | 81 | 65 |
444077 | 22396 | 00:01:01 | 113.995514 | 22.695032 | 1 | 34 | 81 | 66 |
444078 | 22396 | 00:01:09 | 113.995430 | 22.695766 | 1 | 41 | 81 | 66 |
444075 | 22396 | 00:01:41 | 113.995369 | 22.696484 | 1 | 0 | 81 | 66 |
444079 | 22396 | 00:02:21 | 113.995430 | 22.696650 | 1 | 17 | 81 | 66 |
這一部分完成,我們就已經(jīng)將數(shù)據(jù)劃分在不同的棧格里了。
4.計(jì)算每個(gè)柵格中的數(shù)據(jù)個(gè)數(shù)
# Aggregate data into grids
#python中g(shù)roupby函數(shù)主要的作用是進(jìn)行數(shù)據(jù)的分組以及分組后地組內(nèi)運(yùn)算!
datatest = data.groupby(['LONCOL', 'LATCOL'])['VehicleNum'].count().reset_index()
# Generate the geometry for grids
datatest['geometry'] = tbd.grid_to_polygon([datatest['LONCOL'], datatest['LATCOL']], params)
# Change it into GeoDataFrame
# import geopandas as gpd
datatest = gpd.GeoDataFrame(datatest)
datatest.head()
#計(jì)算出每個(gè)柵格里的出租車數(shù)量(不按時(shí)間,是一天數(shù)據(jù)中所有的點(diǎn))
LONCOL | LATCOL | VehicleNum | geometry | |
---|---|---|---|---|
0 | 36 | 63 | 3 | POLYGON ((113.77297 22.68104, 113.77784 22.681... |
1 | 36 | 64 | 2 | POLYGON ((113.77297 22.68553, 113.77784 22.685... |
2 | 36 | 65 | 1 | POLYGON ((113.77297 22.69003, 113.77784 22.690... |
3 | 36 | 66 | 1 | POLYGON ((113.77297 22.69453, 113.77784 22.694... |
4 | 36 | 67 | 8 | POLYGON ((113.77297 22.69902, 113.77784 22.699... |
LONCOL代表經(jīng)度上第幾個(gè)棧格,LATCOL代表維度上第幾個(gè)棧格,VehicleNum表示了這個(gè)棧格中數(shù)據(jù)的數(shù)量,可用于后面進(jìn)行GPS軌跡熱力圖的繪圖。
5.OD訂單的處理
①將各個(gè)數(shù)據(jù)轉(zhuǎn)化成OD數(shù)據(jù)(每一個(gè)數(shù)據(jù)代表狀態(tài))
載客狀態(tài)無(wú)非就兩種狀態(tài),即(載客-空載-載客)和(空載-載客-空載)。
# Extract taxi OD from GPS data
#OD形成就是每一個(gè)訂單都算一個(gè)OD行程,每一行代表一個(gè)OD行程
#stime代表出發(fā)時(shí)間,slon和slat是出發(fā)的經(jīng)緯度
#etime代表結(jié)束時(shí)間,elon和elat是結(jié)束的經(jīng)緯度
# ID是訂單順序號(hào)
oddata = tbd.taxigps_to_od(data,col = ['VehicleNum', 'Time', 'Lng', 'Lat', 'OpenStatus'])
oddata
VehicleNum | stime | slon | slat | etime | elon | elat | ID | |
---|---|---|---|---|---|---|---|---|
427075 | 22396 | 00:19:41 | 114.013016 | 22.664818 | 00:23:01 | 114.021400 | 22.663918 | 0 |
131301 | 22396 | 00:41:51 | 114.021767 | 22.640200 | 00:43:44 | 114.026070 | 22.640266 | 1 |
417417 | 22396 | 00:45:44 | 114.028099 | 22.645082 | 00:47:44 | 114.030380 | 22.650017 | 2 |
376160 | 22396 | 01:08:26 | 114.034897 | 22.616301 | 01:16:34 | 114.035614 | 22.646717 | 3 |
21768 | 22396 | 01:26:06 | 114.046021 | 22.641251 | 01:34:48 | 114.066048 | 22.636183 | 4 |
... | ... | ... | ... | ... | ... | ... | ... | ... |
175519 | 36805 | 22:49:12 | 114.114365 | 22.550632 | 22:50:40 | 114.115501 | 22.557983 | 5083 |
212092 | 36805 | 22:52:07 | 114.115402 | 22.558083 | 23:03:12 | 114.118484 | 22.547867 | 5084 |
119041 | 36805 | 23:03:45 | 114.118484 | 22.547867 | 23:20:09 | 114.133286 | 22.617750 | 5085 |
224103 | 36805 | 23:36:19 | 114.112968 | 22.549601 | 23:43:12 | 114.089485 | 22.538918 | 5086 |
170962 | 36805 | 23:46:14 | 114.091217 | 22.540768 | 23:53:36 | 114.120354 | 22.544300 | 5087 |
5088 rows × 8 columns
②將od行程分為載客狀態(tài)下和空載狀態(tài)下的
data_deliver, data_idle = tbd.taxigps_traj_point(data,oddata,col=['VehicleNum',
'Time',
'Lng',
'Lat',
'OpenStatus'])
data_deliver #載客狀態(tài)的od路徑
VehicleNum | Time | Lng | Lat | OpenStatus | Speed | LONCOL | LATCOL | ID | flag | |
---|---|---|---|---|---|---|---|---|---|---|
427075 | 22396 | 00:19:41 | 114.013016 | 22.664818 | 1 | 63.0 | 85.0 | 59.0 | 0.0 | 1.0 |
427085 | 22396 | 00:19:49 | 114.014030 | 22.665483 | 1 | 55.0 | 85.0 | 59.0 | 0.0 | 1.0 |
416622 | 22396 | 00:21:01 | 114.018898 | 22.662500 | 1 | 1.0 | 86.0 | 58.0 | 0.0 | 1.0 |
427480 | 22396 | 00:21:41 | 114.019348 | 22.662300 | 1 | 7.0 | 86.0 | 58.0 | 0.0 | 1.0 |
416623 | 22396 | 00:22:21 | 114.020615 | 22.663366 | 1 | 0.0 | 86.0 | 59.0 | 0.0 | 1.0 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
64411 | 36805 | 23:53:09 | 114.120354 | 22.544300 | 1 | 2.0 | 107.0 | 32.0 | 5087.0 | 1.0 |
64405 | 36805 | 23:53:15 | 114.120354 | 22.544300 | 1 | 1.0 | 107.0 | 32.0 | 5087.0 | 1.0 |
64390 | 36805 | 23:53:21 | 114.120354 | 22.544300 | 1 | 0.0 | 107.0 | 32.0 | 5087.0 | 1.0 |
64406 | 36805 | 23:53:27 | 114.120354 | 22.544300 | 1 | 0.0 | 107.0 | 32.0 | 5087.0 | 1.0 |
64393 | 36805 | 23:53:33 | 114.120354 | 22.544300 | 1 | 0.0 | 107.0 | 32.0 | 5087.0 | 1.0 |
209250 rows × 10 columns
data_idle #空載狀態(tài)的od路徑
VehicleNum | Time | Lng | Lat | OpenStatus | Speed | LONCOL | LATCOL | ID | flag | |
---|---|---|---|---|---|---|---|---|---|---|
416628 | 22396 | 00:23:01 | 114.021400 | 22.663918 | 0 | 25.0 | 86.0 | 59.0 | 0.0 | 0.0 |
396136 | 22396 | 00:23:41 | 114.023148 | 22.665100 | 0 | 21.0 | 87.0 | 59.0 | 0.0 | 0.0 |
396129 | 22396 | 00:24:21 | 114.024414 | 22.665367 | 0 | 35.0 | 87.0 | 59.0 | 0.0 | 0.0 |
401744 | 22396 | 00:25:01 | 114.027115 | 22.662100 | 0 | 25.0 | 88.0 | 58.0 | 0.0 | 0.0 |
394630 | 22396 | 00:25:41 | 114.024551 | 22.659834 | 0 | 21.0 | 87.0 | 58.0 | 0.0 | 0.0 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
170971 | 36805 | 23:45:42 | 114.091217 | 22.540768 | 0 | 0.0 | 101.0 | 31.0 | 5086.0 | 0.0 |
170954 | 36805 | 23:45:57 | 114.091217 | 22.540768 | 0 | 0.0 | 101.0 | 31.0 | 5086.0 | 0.0 |
170955 | 36805 | 23:46:12 | 114.091217 | 22.540768 | 0 | 0.0 | 101.0 | 31.0 | 5086.0 | 0.0 |
64391 | 36805 | 23:53:36 | 114.120354 | 22.544300 | 0 | 0.0 | 107.0 | 32.0 | 5087.0 | 0.0 |
64396 | 36805 | 23:53:51 | 114.120354 | 22.544300 | 0 | 0.0 | 107.0 | 32.0 | 5087.0 | 0.0 |
332941 rows × 10 columns
可以看出載客狀態(tài)下數(shù)據(jù)有20w條,而空載狀態(tài)下數(shù)據(jù)有33w條,說(shuō)明在一天的過(guò)程中,總體上處于空載狀態(tài)的時(shí)間是大于載客狀態(tài)的時(shí)間的。
?
三、繪圖以及可視化展示
1.GPS軌跡的熱力圖繪制
# Plot the grids
fig = plt.figure(1, (16, 6), dpi=300)
ax1 = plt.subplot(111)
#ax用于調(diào)整大小
# tbd.plot_map(plt, bounds, zoom=10, style=4)
datatest.plot(ax=ax1, column='VehicleNum', legend=True)
plt.xticks([], fontsize=10)
plt.yticks([], fontsize=10)
plt.title('Taxi GPS track point count', fontsize=12);
# Plot the grids
fig = plt.figure(1, (16, 6), dpi=300) # 確定圖形高為6,寬為8;圖形清晰度
ax1 = plt.subplot(111)
datatest.plot(ax=ax1, column='VehicleNum', legend=True, scheme='quantiles')
# plt.legend(fontsize=10)
plt.xticks([], fontsize=10)
plt.yticks([], fontsize=10)
plt.title('Taxi GPS track point count', fontsize=12);
# Plot the grids
fig = plt.figure(1, (16, 6), dpi=150) # 確定圖形高為6,寬為8;圖形清晰度
ax1 = plt.subplot(111)
datatest.plot(ax=ax1, column='VehicleNum', legend=True, cmap='OrRd', scheme='quantiles')
# plt.legend(fontsize=10)
plt.xticks([], fontsize=10)
plt.yticks([], fontsize=10)
plt.title('Taxi GPS track point count', fontsize=12);
?2.載客狀態(tài)和空載狀態(tài)下的od訂單圖
traj_deliver = tbd.points_to_traj(data_deliver)
traj_deliver.plot()
traj_idle = tbd.points_to_traj(data_idle)
traj_idle.plot()
?3.依賴keplergl第三方包繪制可交互式的可視化動(dòng)畫
keplergl是由Uber開源的一款地理數(shù)據(jù)可視化工具,我們可以在Jupyter notebook中使用該工具讓我們的數(shù)據(jù)可視化做到美觀。使用前需要先安裝,安裝教程可參考該篇文章:點(diǎn)擊跳轉(zhuǎn)
keplergl官網(wǎng):點(diǎn)擊跳轉(zhuǎn)
①可交互式熱力圖
# 可視化數(shù)據(jù)點(diǎn)分布
tbd.visualization_data(data,col = ['Lng','Lat'],accuracy=40,height = 500) #accuracy是柵格大小,數(shù)值越大表示一個(gè)柵格涵蓋地圖面積越大
②可交互式OD訂單圖
# 可視化數(shù)據(jù)點(diǎn)分布
tbd.visualization_od(oddata,accuracy=2000,height = 500)
?注:同時(shí)使用Ctrl和鼠標(biāo)左鍵可移動(dòng)觀看視角
③可交互式的視頻動(dòng)圖
tbd.visualization_trip(data_deliver) #一天當(dāng)中的所有載客軌跡
?總結(jié)
大家按照上述步驟進(jìn)行項(xiàng)目,大問(wèn)題是沒(méi)有的,之前我遇到的主要問(wèn)題就是transbigdata的包找了半天,其他的一些如各個(gè)包版本之間不適配的問(wèn)題,可以直接百度解決。本項(xiàng)目的主要難點(diǎn)就是要去理解數(shù)據(jù)處理的一些函數(shù),這些函數(shù)的大概功能我已經(jīng)在注釋中和內(nèi)容中闡述了。如果有小伙伴想更加深入的了解函數(shù)的原理,可以去看transbigdata的源代碼,這樣可以更加直觀的了解這些函數(shù)。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-427575.html
補(bǔ)充
如有其他問(wèn)題,請(qǐng)私信我,謝謝。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-427575.html
到了這里,關(guān)于基于python的transbigdata實(shí)現(xiàn)出租車軌跡數(shù)據(jù)分析與可視化的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!