[PYTHON] Je veux tracer les informations de localisation de GTFS Realtime sur Jupyter! (Avec ballon)

introduction

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.

la mise en oeuvre

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

résultat

Les informations de localisation en temps réel téléchargées ont été tracées sur la carte

スクリーンショット 2020-08-08 22.43.47.png

Le moment de l'exécution est passé 22h30, mais le bus est toujours en marche. .. ..

Recommended Posts

Je veux tracer les informations de localisation de GTFS Realtime sur Jupyter! (Avec ballon)
J'ai essayé d'obtenir les informations de localisation du bus Odakyu
Je veux obtenir des informations sur le fonctionnement de Yahoo Route
Je veux sortir le début du mois prochain avec Python
Je veux vérifier la position de mon visage avec OpenCV!
Je veux écrire un blog avec Jupyter Notebook
Je veux exprimer mes sentiments avec les paroles de Mr. Children
Je souhaite arrêter la suppression automatique de la zone tmp dans RHEL7
J'ai essayé d'obtenir les informations sur le film de l'API TMDb avec Python
Lors de la génération d'un grand nombre de graphiques avec matplotlib, je ne souhaite pas afficher le graphique à l'écran (environnement jupyter)
Je souhaite personnaliser l'apparence de zabbix
Je souhaite utiliser Python dans l'environnement de pyenv + pipenv sous Windows 10
Une bibliothèque pour la science des données "Je veux faire ça" sur le bloc-notes Jupyter
Je suis un amateur le 14e jour de python, mais je veux essayer l'apprentissage automatique avec scicit-learn
Je veux grep le résultat de l'exécution de strace
Ajoutez des informations au bas de la figure avec Matplotlib
Dessinez sur Jupyter en utilisant la fonction de tracé des pandas
Je veux hériter de l'arrière avec la classe de données python
Je veux bien comprendre les bases de Bokeh
J'ai essayé de visualiser les informations spacha de VTuber
Je veux AWS Lambda avec Python sur Mac!
Je souhaite augmenter la sécurité de la connexion SSH
Je souhaite prendre une capture d'écran du site sur Docker en utilisant n'importe quelle police
J'ai essayé de visualiser les caractéristiques des nouvelles informations sur les personnes infectées par le virus corona avec wordcloud
J'ai essayé de faciliter la modification du paramètre du proxy authentifié sur Jupyter
Le 15e temps réel hors ligne, j'ai essayé de résoudre le problème de l'écriture avec python
J'ai essayé de trouver l'entropie de l'image avec python
Je souhaite spécifier une autre version de Python avec pyvenv
Mémo pour obtenir la valeur côté html-javascript avec jupyter
J'ai essayé de trouver la moyenne de plusieurs colonnes avec TensorFlow
J'ai écrit la grammaire de base de Python dans Jupyter Lab
Je veux démarrer un environnement Jupyter avec une seule commande
Je souhaite utiliser uniquement le traitement de normalisation SudachiPy
Je veux changer le drapeau japonais en drapeau des Palaos avec Numpy
Je veux colorier des photos en noir et blanc de souvenirs avec GAN
[Python] Je souhaite utiliser l'option -h avec argparse
Je veux déterminer l'authenticité d'un élément du tableau numpy
Je souhaite utiliser un environnement virtuel avec jupyter notebook!
Je veux connaître la nature de Python et pip
Keras Je veux obtenir la sortie de n'importe quelle couche !!
Je veux connaître la légende du monde des technologies informatiques
J'ai écrit le fonctionnement de base de matplotlib dans Jupyter Lab
Je veux changer la destination du lien symbolique de / lib64 de / usr / lib64 à / my-lib64 sur CentOS
[Pytorch] Je souhaite attribuer manuellement les paramètres d'entraînement du modèle
Je veux connaître la météo avec LINE bot avec Heroku + Python
Familiarisez-vous avec (voulez être) autour du pipeline de spaCy
J'ai essayé d'automatiser l'arrosage du pot avec Raspberry Pi
Je souhaite extraire une URL arbitraire de la chaîne de caractères de la source html avec python
Je veux lire la version html de la version "OpenCV-Python Tutorials" OpenCV 3.1
[Introduction à StyleGAN] J'ai joué avec "The Life of a Man" ♬
J'ai étudié avec Kaggle Start Book basé sur kaggle [Partie 1]
J'ai essayé de démarrer avec Bitcoin Systre le week-end
J'ai écrit le fonctionnement de base de Pandas dans Jupyter Lab (partie 1)
Comment utiliser Jupyter sur le frontal de Spacon ITO
J'ai essayé d'agrandir la taille du volume logique avec LVM
Pour le moment, je veux convertir n'importe quel fichier avec ffmpeg !!
Je veux faire ○○ avec les Pandas
J'ai vérifié l'image de l'Université des sciences sur Twitter avec Word2Vec.
Je veux connaître la population de chaque pays du monde.
J'ai essayé d'améliorer l'efficacité du travail quotidien avec Python