Analyseur de localisation Google Maps : Calcule le temps passé à des emplacements spécifiques à partir de vos données Google Maps Timeline (Google Takeout).
Ce projet Python permet d'analyser les données de localisation Google Maps (exportées via Google Takeout) pour calculer le temps total passé à des emplacements spécifiques. Le script parcourt vos données de timeline, identifie les visites à des adresses cibles ou dans un rayon géographique défini, et génère un rapport CSV détaillé.
- 📊 Analyse temporelle : Calcule le temps passé par jour et par mois à vos localisations cibles
- 🎯 Ciblage flexible : Filtrage par adresse texte ou coordonnées géographiques (latitude/longitude)
- 📍 Rayon géographique : Recherche dans un rayon configurable (en mètres) autour d'un point
- 🗓️ Support multi-mois : Traite automatiquement les données JSON mensuelles d'une année complète
- 🔄 Cibles multiples : Supporte jusqu'à deux emplacements cibles simultanément
- 📁 Export CSV : Génère un fichier CSV lisible avec toutes les statistiques
- 🌍 Calcul précis : Utilise la formule Haversine pour les distances géographiques
- Python 3.x
- Modules Python standard (aucune dépendance externe requise) :
jsondatetimeoscsvmath
- Clonez ce dépôt :
git clone https://github.com/MatGros/GoogleMaps_TimeAtLocation.git
cd GoogleMaps_TimeAtLocation-
Exportez vos données Google Maps :
- Rendez-vous sur Google Takeout
- Sélectionnez "Historique des positions" (Location History)
- Choisissez le format JSON
- Téléchargez et extrayez l'archive
-
Organisez vos données :
GoogleMaps_TimeAtLocation/
├── GoogleMaps_TimeAtlocation_v0.9.py
└── GoogleMaps_TimeAtlocation_JsonData/
└── 2014/ (ou votre année)
├── 2014_JANUARY.json
├── 2014_FEBRUARY.json
├── 2014_MARCH.json
└── ...
Avant d'exécuter le script, configurez les paramètres dans la section "Main" du fichier Python :
# Numéro de la cible dans la liste (0-5)
TargetNumber = 1
# Activer une deuxième cible (0 = désactivé, 1 = activé)
EnableSecondTarget = 1
SecondTargetNumber = 4
# Liste des adresses cibles
TargetAdressList = [
'nofilter', # 0 - Aucun filtre
'Parade, 30200 Orsan', # 1
'Méditerranée, 30132 Caissargues', # 2
'Genêts, 30132 Caissargues', # 3
'Galilée, 13310 Saint-Martin-de-Crau', # 4
'?' # 5 - À définir
]
# Coordonnées GPS correspondantes (latitude)
Target_latList = [
0, # nofilter
44.13860983334649, # Orsan
43.78764719820701, # Caissargues - Méditerranée
43.787566701084096, # Caissargues - Genêts
43.64180566129205, # Saint-Martin-de-Crau
0
]
# Coordonnées GPS correspondantes (longitude)
Target_lngList = [
0,
4.657463254390843,
4.386207165386871,
4.391149034481557,
4.795406268735807,
0
]
# Rayon de recherche en mètres
radius = 200 # 200 mètres par défautYear = 2014 # Modifiez selon vos donnéesExécutez le script Python :
python GoogleMaps_TimeAtlocation_v0.9.pyLe script va :
- 🔍 Parcourir tous les fichiers JSON mensuels de l'année spécifiée
- 📊 Filtrer les visites correspondant à vos critères
- ⏱️ Calculer les temps de présence par jour et par mois
- 💾 Générer le fichier
GoogleMaps_TimeAtlocation.csv
Le fichier généré contient les colonnes suivantes :
| Colonne | Description |
|---|---|
Address |
Adresse complète de la localisation |
End_time |
Date et heure de fin de visite (format ISO 8601) |
Year |
Année |
Month |
Numéro du mois (1-12) |
Day |
Jour du mois |
TotalHoursPerDay |
Temps total passé ce jour-là (format HH:MM:SS) |
TotalHoursPerMonth |
Temps total cumulé pour le mois (format HH:MM:SS) |
Exemple de sortie :
Address;End_time;Year;Month;Day;TotalHoursPerDay;TotalHoursPerMonth
Route de la Parade. 30200 Orsan. France;2014-02-20T14:35:02.591Z;2014;2;20;05:37:56;15:45:32
Route de la Parade. 30200 Orsan. France;2014-02-21T17:14:14.980Z;2014;2;21;09:31:29;25:16:61- Trouvez les coordonnées GPS de votre bureau (via Google Maps)
- Ajoutez l'adresse et les coordonnées dans les listes de configuration
- Définissez un rayon approprié (ex: 200m pour inclure les bâtiments voisins)
- Exécutez le script pour obtenir vos statistiques de présence
Activez EnableSecondTarget = 1 pour suivre deux emplacements simultanément (par exemple : bureau principal et site secondaire).
Le script utilise la formule Haversine pour calculer la distance orthodromique (great-circle distance) entre deux points géographiques :
def Dist2Geopoints(target_lat, target_lng, lat, lng):
# Conversion degrés → radians
# Calcul de distance avec formule Haversine
# Retourne la distance en mètresLes fichiers JSON contiennent un objet timelineObjects avec :
placeVisit: Visites de lieuxlocation: Coordonnées et adresseduration: Timestamps de début et fin
activitySegment: Déplacements (non traités par ce script)
⚠️ Vie privée : Vos données de localisation sont sensibles. Ne partagez jamais vos fichiers JSON publiquement.- 📏 Précision : La précision dépend de la qualité des données Google Maps (GPS, Wi-Fi, tours cellulaires).
- 🗓️ Format de dates : Le script attend des fichiers nommés
YYYY_MONTHNAME.json(ex:2014_JANUARY.json). - 🔧 Personnalisation : Le code est documenté en français pour faciliter les modifications.
Ce projet est un projet personnel archivé. Le code n'est plus activement maintenu mais reste disponible pour référence et réutilisation.
Ce projet est sous licence MIT - voir le fichier LICENSE pour plus de détails.
MatGros
- GitHub: @MatGros
- Google Takeout pour l'export des données de localisation
- La communauté Python pour les outils et bibliothèques standards
- Google Takeout - Exportez vos données Google
- Documentation formule Haversine
- Format JSON Timeline Google
⭐ Si ce projet vous a été utile, n'hésitez pas à lui donner une étoile ! ⭐