L'emplacement actuel du bus peut être vu sur Google Map, mais cartographions-le par vous-même. Affichons-le sur python en utilisant un plug-in d'affichage de carte Web appelé folium. Les icônes de la carte sont cliquables et peuvent également afficher des informations détaillées.
realtimebus.py3
from google.transit import gtfs_realtime_pb2
import urllib.request, urllib.error
import folium
import pandas as pd
#GTFS-URL publique de RT(Uno Bus)
url ='http://www3.unobus.co.jp/GTFS/GTFS_RT-VP.bin'
#Déclaration du nom de la colonne
list_df = pd.DataFrame(columns=['id' , 'vehicle_id', 'trip_id','vehicle_timestamp','longitude','latitude','occupancy_status'])
feed = gtfs_realtime_pb2.FeedMessage()
#Téléchargement de données et conversion de format
with urllib.request.urlopen(url) as res: #Téléchargement de données
feed.ParseFromString(res.read()) #Désérialiser le tampon de protocole
for entity in feed.entity:
tmp_se = pd.Series( [
entity.id, #ID du véhicule
entity.vehicle.vehicle.id, #Numéro de véhicule
entity.vehicle.trip.trip_id, #Numéro de route?
entity.vehicle.timestamp, #Temps de véhicule
entity.vehicle.position.longitude, #Latitude du véhicule
entity.vehicle.position.latitude, #Longitude du véhicule
entity.vehicle.occupancy_status #Degré de congestion
], index=list_df.columns )
list_df = list_df.append( tmp_se, ignore_index=True )
#Calculer le point central de la carte
average_pos = list_df.mean()
#Créer une carte près des coordonnées du centre
m = folium.Map(location=[average_pos['latitude'], average_pos['longitude']], zoom_start=11)
#Tracer chaque bus(La couleur est bleue)
list_df.apply(lambda row:
folium.Marker(
location=[row['latitude'], row['longitude']],
popup='<table border="1"><tr><th>occupancy_status</th></tr><tr><td>'
+str(row['occupancy_status'])
+'</td></tr></table>',
icon=folium.Icon(color='blue',icon='bus', prefix='fa')
).add_to(m), axis=1)
m
Les informations de localisation en temps réel téléchargées ont été tracées sur la carte
Le moment de l'exécution est passé 22h30, mais le bus est toujours en marche. .. ..
Recommended Posts