目次
1. TransBigData の概要
2. データの前処理
3. データ ラスター化
4、订单起讫点OD提取与聚合集计
5、交互可视化
ホームページ バックエンド開発 Python チュートリアル すごいですね、Python で交通データの可視化が実現!

すごいですね、Python で交通データの可視化が実現!

Apr 11, 2023 pm 07:52 PM
python データの視覚化


すごいですね、Python で交通データの可視化が実現!

1. TransBigData の概要

TransBigData は、一般的な交通時空間ビッグデータ (タクシーの GPS データ、シェア自転車など) を処理します。データやバス GPS データなど)は、迅速かつ簡潔な方法を提供します。 TransBigData は、トラフィック時空間分析の各段階でさまざまな処理方法を提供し、コードは簡潔、効率的、柔軟で使いやすい、複雑なデータ タスクも簡潔なコードで実装できます。

現在、TransBigData は主に次のメソッドを提供しています。

  • データ前処理: データセットのデータ量、期間、サンプリング間隔などの基本情報を迅速に計算するメソッドを提供します。この種のデータ ノイズは、対応するクリーニング方法を提供します。
  • データ ラスター化: 調査エリア内で複数の種類の地理ラスター (長方形、三角形、六角形、およびジオハッシュ ラスター) を生成および照合するためのメソッド システムを提供します。これらのラスターは迅速にベクトル化できます。アルゴリズムは、空間点データをマップ上にマッピングします。地理ラスター。
  • データ視覚化: 視覚化パッケージ keplergl に基づいて、簡単なコードを使用して Jupyter Notebook 上にデータを対話的かつ視覚的に表示できます。
  • 軌跡処理: 軌跡データ GPS ポイント、密集軌跡点、疎軌跡点などから軌跡線種を生成します。
  • 地図ベースマップ、座標変換と計算: 地図ベースマップとさまざまな特殊座標系の間の座標変換を読み込み、表示します。
  • 具体的な処理手法:タクシーのGPSデータからの注文開始地点と終了地点の抽出、携帯電話の信号データや地下鉄網のGISデータからの居住地・勤務先の特定など、各種の具体的なデータに対応した処理手法を提供ネットワークトポロジの構築や最短経路の計算などを行います。

TransBigData は pip または conda を通じてインストールできます。コマンド プロンプトで次のコードを実行してインストールします:

pip install -U transbigdata
ログイン後にコピー

インストールが完了したら、Python で次のコードを実行してインポートしますトランスビッグデータバッグ。

import transbigdata as tbd
ログイン後にコピー

2. データの前処理

TransBigData は、データ処理で一般的に使用される Pandas および GeoPandas パッケージとシームレスに接続できます。まず、Pandas パッケージを導入し、タクシー GPS データを読み取ります。

import pandas as pd
# 读取数据
data = pd.read_csv('TaxiData-Sample.csv',header = None)
data.columns = ['VehicleNum','time','lon','lat','OpenStatus','Speed']
data.head()
ログイン後にコピー

結果を図 2 に示します。

すごいですね、Python で交通データの可視化が実現!

▲図 2 タクシー GPS データ

次に、GeoPandas パッケージを導入し、調査範囲の地域情報を読み取って表示します:

import geopandas as gpd
# 读取研究范围区域信息
sz = gpd.read_file(r'sz/sz.shp')
sz.plot()
ログイン後にコピー

結果を図 3 に示します:

すごいですね、Python で交通データの可視化が実現!

▲図 3 調査範囲の地域情報

TransBigData パッケージには、交通時空間データの一般的な前処理方法がいくつか統合されています。このうち、tbd.clean_outofshapeメソッドはデータと調査範囲領域情報を入力し、調査範囲外のデータを削除することができます。 tbd.clean_taxi_status メソッドを使用すると、タクシー GPS データ内の乗客ステータスの瞬間的な変化の記録を削除できます。前処理メソッドを使用する場合は、データ テーブルの重要な情報列に対応する列名を渡す必要があります。コードは次のとおりです:

# 数据预处理
#剔除研究范围外的数据,计算原理是在方法中先栅格化后栅格匹配研究范围后实现对应。因此这里需要同时定义栅格大小,越小则精度越高
data = tbd.clean_outofshape(data, sz, col=['lon', 'lat'], accuracy=500)
# 剔除出租车数据中载客状态瞬间变化的数据
data = tbd.clean_taxi_status(data, col=['VehicleNum', 'time', 'OpenStatus'])
ログイン後にコピー

上記のコードを処理した後、すでにタクシーのGPSは研究対象外でデータ化されており、乗客状況の瞬間的な変化などのデータはデータから削除されています。

3. データ ラスター化

ラスター形式 (地理空間内で同じサイズのグリッド) は、データ分布を表現する最も基本的な方法です。GPS データがラスター化された後、各データ ポイントには以下が含まれます。それらが配置されているラスターに関する情報。ラスターを使用してデータの分布を表現すると、ラスターが表す分布は実際の状況に近くなります。

TransBigData ツールは、完全で高速かつ便利なラスター処理システムを提供します。 TransBigData をラスター分割に使用する場合、最初にラスター化パラメーターを決定する必要があります (これは、ラスター座標系を定義すると理解できます)。パラメーターは、迅速なラスター化に役立ちます:

# 定义研究范围边界
bounds = [113.75, 22.4,114.62, 22.86]
# 通过边界获取栅格化参数
params = tbd.area_to_params(bounds,accuracy = 1000)
params
ログイン後にコピー

Output :

{'slon': 113.75,
'slat': 22.4,
'deltalon': 0.00974336289289822,
'deltalat': 0.008993210412845813,
'theta': 0,
'method': 'rect',
'gridsize': 1000}
ログイン後にコピー

このとき出力されるラスタライズパラメータparamsの内容には、ラスタ座標系の原点座標(slon、slat)と、単一ラスタの経度、緯度が格納されます。 deltalon、deltalat)、グリッドの回転角 (theta)、グリッドの形状 (メソッド パラメーター、値は正方形、rect、三角形 tri、および hexagon hexa にすることができます)、およびグリッドのサイズ (gridsize パラメーター、メートル単位) )。

ラスター化パラメーターを取得した後、TransBigData で提供されるメソッドを使用して、GPS データのラスター マッチングや生成などの操作を実行できます。

完全なラスター処理方法システムを図 4 に示します。

すごいですね、Python で交通データの可視化が実現!

▲図 4 TransBigData が提供するラスター処理システム

Use各タクシーの GPS ポイントを生成する tbd.GPS_to_grid メソッド。このメソッドは数値列 LONCOL と LATCOL を生成し、一緒にグリッドを指定します:

# 将GPS数据对应至栅格,将生成的栅格编号列赋值到数据表上作为新的两列
data['LONCOL'],data['LATCOL']= tbd.GPS_to_grids(data['lon'],data['lat'],params)
ログイン後にコピー

下一步,聚合集计每一栅格内的数据量,并为栅格生成地理几何图形,构建GeoDataFrame:

# 聚合集计栅格内数据量
grid_agg=data.groupby(['LONCOL','LATCOL'])['VehicleNum'].count().reset_index()
# 生成栅格的几何图形
grid_agg['geometry']=tbd.grid_to_polygon([grid_agg['LONCOL'],grid_agg['LATCOL']],params)
# 转换为GeoDataFrame
grid_agg=gpd.GeoDataFrame(grid_agg)
# 绘制栅格
grid_agg.plot(column = 'VehicleNum',cmap = 'autumn_r')
ログイン後にコピー

结果如图5所示:

すごいですね、Python で交通データの可視化が実現!

▲图5 数据栅格化的结果

对于一个正式的数据可视化图来说,我们还需要添加底图、色条、指北针和比例尺。TransBigData也提供了相应的功能,代码如下:

import matplotlib.pyplot as plt
fig =plt.figure(1,(8,8),dpi=300)
ax =plt.subplot(111)
plt.sca(ax)
# 添加行政区划边界作为底图
sz.plot(ax=ax,edgecolor=(0,0,0,0),facecolor=(0,0,0,0.1),linewidths=0.5)
# 定义色条位置
cax = plt.axes([0.04, 0.33, 0.02, 0.3])
plt.title('Data count')
plt.sca(ax)
# 绘制数据
grid_agg.plot(column = 'VehicleNum',cmap = 'autumn_r',ax = ax,cax = cax,legend = True)
# 添加指北针和比例尺
tbd.plotscale(ax,bounds = bounds,textsize = 10,compasssize = 1,accuracy = 2000,rect = [0.06,0.03],zorder = 10)
plt.axis('off')
plt.xlim(bounds[0],bounds[2])
plt.ylim(bounds[1],bounds[3])
plt.show()
ログイン後にコピー

结果如图6所示:

すごいですね、Python で交通データの可視化が実現!

▲图6 tbd包绘制的出租车GPS数据分布

4、订单起讫点OD提取与聚合集计

针对出租车GPS数据,TransBigData提供了直接从数据中提取出出租车订单起讫点(OD)信息的方法,代码如下:

# 从GPS数据提取OD
oddat=tbd.taxigps_to_od(data,col=['VehicleNum','time','Lng','Lat','OpenStatus'])
oddata
ログイン後にコピー

结果如图7所示:

すごいですね、Python で交通データの可視化が実現!

▲图7 tbd包提取的出租车OD

TransBigData包提供的栅格化方法可以让我们快速地进行栅格化定义,只需要修改accuracy参数,即可快速定义不同大小粒度的栅格。我们重新定义一个2km*2km的栅格坐标系,将其参数传入tbd.odagg_grid方法对OD进行栅格化聚合集计并生成GeoDataFrame:

# 重新定义栅格,获取栅格化参数
params=tbd.area_to_params(bounds,accuracy = 2000)
# 栅格化OD并集计
od_gdf=tbd.odagg_grid(oddata,params)
od_gdf.plot(column = 'count')
ログイン後にコピー

结果如图8所示:

すごいですね、Python で交通データの可視化が実現!

▲图8 tbd集计的栅格OD


添加地图底图,色条与比例尺指北针:

# 创建图框
import matplotlib.pyplot as plt
fig =plt.figure(1,(8,8),dpi=300)
ax =plt.subplot(111)
plt.sca(ax)
# 添加行政区划边界作为底图
sz.plot(ax=ax,edgecolor=(0,0,0,1),facecolor=(0,0,0,0),linewidths=0.5)
# 绘制colorbar
cax=plt.axes([0.05, 0.33, 0.02, 0.3])
plt.title('Data count')
plt.sca(ax)
# 绘制OD
od_gdf.plot(ax = ax,column = 'count',cmap = 'Blues_r',linewidth = 0.5,vmax = 10,cax = cax,legend = True)
# 添加比例尺和指北针
tbd.plotscale(ax,bounds=bounds,textsize=10,compasssize=1,accuracy=2000,rect = [0.06,0.03],zorder = 10)
plt.axis('off')
plt.xlim(bounds[0],bounds[2])
plt.ylim(bounds[1],bounds[3])
plt.show()
ログイン後にコピー

结果如图9所示:

すごいですね、Python で交通データの可視化が実現!

▲ 图9 TransBigData绘制的栅格OD数据

同时,TransBigData包也提供了将OD直接聚合集计到区域间的方法:

# OD集计到区域
# 方法1:在不传入栅格化参数时,直接用经纬度匹配
od_gdf = tbd.odagg_shape(oddata,sz,round_accuracy=6)
# 方法2:传入栅格化参数时,程序会先栅格化后匹配以加快运算速度,数据量大时建议使用
od_gdf = tbd.odagg_shape(oddata,sz,params = params)
od_gdf.plot(column = 'count')
ログイン後にコピー

结果如图10所示:

すごいですね、Python で交通データの可視化が実現!

▲图10 tbd集计的小区OD

加载地图底图并调整出图参数:

# 创建图框
import matplotlib.pyplot as plt
import plot_map
fig =plt.figure(1,(8,8),dpi=300)
ax =plt.subplot(111)
plt.sca(ax)
# 添加行政区划边界作为底图
sz.plot(ax = ax,edgecolor = (0,0,0,0),facecolor = (0,0,0,0.2),linewidths=0.5)
# 绘制colorbar
cax = plt.axes([0.05, 0.33, 0.02, 0.3])
plt.title('count')
plt.sca(ax)
# 绘制OD
od_gdf.plot(ax = ax,vmax = 100,column = 'count',cax = cax,cmap = 'autumn_r',linewidth = 1,legend = True)
# 添加比例尺和指北针
tbd.plotscale(ax,bounds = bounds,textsize = 10,compasssize = 1,accuracy = 2000,rect = [0.06,0.03],zorder = 10)
plt.axis('off')
plt.xlim(bounds[0],bounds[2])
plt.ylim(bounds[1],bounds[3])
plt.show()
ログイン後にコピー

结果如图11所示:

すごいですね、Python で交通データの可視化が実現!

▲ 图11区域间OD可视化结果

5、交互可视化

在TransBigData中,我们可以对出租车数据使用简单的代码在jupyter notebook中快速进行交互可视化。这些可视化方法底层依托了keplergl包,可视化的结果不再是静态的图片,而是能够与鼠标响应交互的地图应用。

tbd.visualization_data方法可以实现数据分布的可视化,将数据传入该方法后,TransBigData会首先对数据点进行栅格集计,然后生成数据的栅格,并将数据量映射至颜色上。代码如下:

结果如图12所示:

# 可视化数据点分布
tbd.visualization_data(data,col = ['lon','lat'],accuracy=1000,height = 500)
ログイン後にコピー

すごいですね、Python で交通データの可視化が実現!

▲ 图12数据分布的栅格可视化

对于出租车数据中所提取出的出行OD,也可使用tbd.visualization_od方法实现OD的弧线可视化。该方法也会对OD数据进行栅格聚合集计,生成OD弧线,并将不同大小的OD出行量映射至不同颜色。代码如下:

# 可视化数据点分布
tbd.visualization_od(oddata,accuracy=2000,height = 500)
ログイン後にコピー

结果如图13所示:

すごいですね、Python で交通データの可視化が実現!

▲ 图13 OD分布的弧线可视化

对个体级的连续追踪数据,tbd.visualization_trip方法可以将数据点处理为带有时间戳的轨迹信息并动态地展示,代码如下:

# 动态可视化轨迹
tbd.visualization_trip(data,col = ['lon','lat','VehicleNum','time'],height = 500)
ログイン後にコピー

结果图14所示。点击其中的播放键,可以看到出租车运行的动态轨迹效果。

すごいですね、Python で交通データの可視化が実現!

以上がすごいですね、Python で交通データの可視化が実現!の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHPおよびPython:さまざまなパラダイムが説明されています PHPおよびPython:さまざまなパラダイムが説明されています Apr 18, 2025 am 12:26 AM

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPとPythonの選択:ガイド PHPとPythonの選択:ガイド Apr 18, 2025 am 12:24 AM

PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。

Sublime Code Pythonを実行する方法 Sublime Code Pythonを実行する方法 Apr 16, 2025 am 08:48 AM

PythonコードをSublimeテキストで実行するには、最初にPythonプラグインをインストールし、次に.pyファイルを作成してコードを書き込み、Ctrl Bを押してコードを実行する必要があります。コードを実行すると、出力がコンソールに表示されます。

PHPとPython:彼らの歴史を深く掘り下げます PHPとPython:彼らの歴史を深く掘り下げます Apr 18, 2025 am 12:25 AM

PHPは1994年に発信され、Rasmuslerdorfによって開発されました。もともとはウェブサイトの訪問者を追跡するために使用され、サーバー側のスクリプト言語に徐々に進化し、Web開発で広く使用されていました。 Pythonは、1980年代後半にGuidovan Rossumによって開発され、1991年に最初にリリースされました。コードの読みやすさとシンプルさを強調し、科学的コンピューティング、データ分析、その他の分野に適しています。

Python vs. JavaScript:学習曲線と使いやすさ Python vs. JavaScript:学習曲線と使いやすさ Apr 16, 2025 am 12:12 AM

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

Golang vs. Python:パフォーマンスとスケーラビリティ Golang vs. Python:パフォーマンスとスケーラビリティ Apr 19, 2025 am 12:18 AM

Golangは、パフォーマンスとスケーラビリティの点でPythonよりも優れています。 1)Golangのコンピレーションタイプの特性と効率的な並行性モデルにより、高い並行性シナリオでうまく機能します。 2)Pythonは解釈された言語として、ゆっくりと実行されますが、Cythonなどのツールを介してパフォーマンスを最適化できます。

vscodeでコードを書く場所 vscodeでコードを書く場所 Apr 15, 2025 pm 09:54 PM

Visual Studioコード(VSCODE)でコードを作成するのはシンプルで使いやすいです。 VSCODEをインストールし、プロジェクトの作成、言語の選択、ファイルの作成、コードの書き込み、保存して実行します。 VSCODEの利点には、クロスプラットフォーム、フリーおよびオープンソース、強力な機能、リッチエクステンション、軽量で高速が含まれます。

メモ帳でPythonを実行する方法 メモ帳でPythonを実行する方法 Apr 16, 2025 pm 07:33 PM

メモ帳でPythonコードを実行するには、Python実行可能ファイルとNPPEXECプラグインをインストールする必要があります。 Pythonをインストールしてパスを追加した後、nppexecプラグインでコマンド「python」とパラメーター "{current_directory} {file_name}"を構成して、メモ帳のショートカットキー「F6」を介してPythonコードを実行します。

See all articles