Principe général de Dircograph

Dircograph a été conçu pour vérifier des fichiers de mesures horodatés, avec ou sans données de localisation GPS.

Il est entièrement écrit dans le langage Python.

Dans un dossier il lit des fichiers de mesures en format CSV, des photos, des vidéos et des fichiers de son. Voir plus bas pour les détails.

S'il y a des positions GPS, il affiche le trajet, et permet d'afficher un fond de carte ou satellite GoogleMap.

Dans un premier temps il lit les fichiers pour fabriquer une base de données (c'est  le fichier Log.h5). C'est une opération qui peut être longue.

Ensuite, à chaque fois que l'on veut exploiter les logs, c'est ce fichier qui est lu. Au niveau des performances, l'exploitation d'un fichier d'1 million de lignes et une vingtaine de variables a été possible avec une parfaite fluidité sur un PC portable de bureautique.

  

Format des fichiers de données

Tous les fichiers doivent se trouver dans un dossier unique, qui contient tout ou partie des éléments suivants :

  • Fichier(s) de mesures horodatées, en format texte CSV.
  • Dossier(s) contenant chacun une séquence de photos horodatées, format jpeg
  • Dossier(s) contenant chacun 1 vidéo au format MJPEG
  • Dossiers(s) contenant des fichiers de sons horodatés, format mp3

   

Format des fichiers de mesures

Nom du fichier : il doit avoir l'extension .csv

Le fichier se présente sous la forme de mesures en colonnes séparées par des ";"

La ligne NE DOIT PAS se terminer par ";"

1ère ligne : Le nom des colonnes avec le type de données entre crochets (optionnel). Si le type n'est pas fourni, il sera demandé.

exemple :

[date]Date ; [int]Heure ; [latitude]Latitude ; [longitude]Longitude ; [float]Altitude ; [float]HDOP; [int]Mode;

Chaque fichier doit contenir impérativement une colonne de datation en milli-secondes.

Les types de données possibles :

  • [date] : entier en ms. 1 et 1 seul par fichier. Doit être en 1ère colonne il me semble.
  • [int] : entier
  • [float] : flottant. Format standard et notation scientifique. (exemple : 0.50, 5e-10, 0e0, +5.5e-5)
  • [latitude] : latitude : 1 par configuration d'analyse. Sert si on veut afficher un trajet
  • [longitude] : longitude : 1 par configuration d'analyse. Sert si on veut afficher un trajet
  • [UTC] : Temps ou ce que vous voulez en chaîne de caractères, ou entier. 1 par configuration d'analyse. S'affiche dans la fenêtre de trajet, à côté du point de position courante.
  • [hex] : Nombre en hexadécimal. de la forme 0x.... ou 0X... (exemple : 0x10)
  • [string] : Chaîne de caractères. (Sans utilité connue)

Lignes suivantes : Les données. Noter que si une colonne de date en ms est impérative, il n'y a pas de restriction particulière : Les dates peuvent être différentes entre les fichiers, et dans un même fichier, deux lignes successives peuvent avoir un écart variable de plusieurs millisecondes. Par contre les dates doivent être croissantes.

Les nombres peuvent être encadrés par des espaces ou des tabulations, même si ce n'est pas particulièrement souhaitable.

Exemple : ;50    ; sera analysé comme ;50;

 

Exemple du fichier gps.csv :

%[date]Date ; [int]Heure ; [latitude]Latitude ; [longitude]Longitude ; [float]Altitude ; [float]HDOP; [int]Mode
2300;83359;48.8094833333;1.88326666667;68;1.4;1
3300;83400;48.809485;1.88326666667;68;1.4;1
4300;83401;48.809485;1.883265;68.2;1.4;1
.....

Les valeurs manquantes dans les fichiers

Un nombre qui n'est pas écrit dans un format valide est considéré comme une valeur manquante. Exemple, pour un entier, "aa" ou "" ou "nan" ... seront ignorés sans que ce soit une erreur.

Exemple 1 de valeurs manquantes :

%[date]Date ; [int]var1 ; [float]var2

2500 ;aa;bb

2500;;x

 

 

aa, bb, x sont des valeurs manquantes. A la date 2500, il y a aussi une valeur manquante pour var1

 

 

Des lignes de date identiques se complètent  :

Exemple :

[date] date;[float]var1;[float]var2

2000;50;

2000;;25

est équivalent à la ligne

2000;50;25

 

Si pour la même date, une variable prend plusieurs valeurs, il en résultera l'affichage d'autant de points de mesure à la même abscisse.

exemple :

[date] date;[float]var1

2000;25

2000;30

provoquera l'affichage d'un segment vertical à la date 2000.

   

Format des photos

Dircograph permet d'afficher des photos horodatées au format jpeg, ce qui forme un film.

Les photos doivent être dans un répertoire. on peut créer plusieurs répertoires s'il y a plusieurs sources de photos.

Le nom des photos : date en ms suivi de l'extension jpg

exemple : 5600.jpg est l'image prise au temps 5600

   

Format des vidéos

Les vidéos doivent impérativement être au format MJPEG. C'est le seul format supporté.

Chaque vidéo doit se trouver dans un dossier qui lui est propre

  • Le nom de la vidéo code la date de début de la vidéo : date en ms suivi de l'extension .avi Exemple : 5300.avi pour une vidéo qui commence au temps 5300 ms
  • Le nom de la vidéo code la date de fin de la vidéo : date en ms suivie de e.avi Exemple : 4600e.avi pour une vidéo qui se termine au temps 4600 ms

   

Format des fichiers sons

Les fichiers sons doivent être dans un répertoire.

Nom des fichiers : date en ms suivi de .mp3

exemple : 5600.mp3 pour un fichier de son qui commence au temps 5600 ms.

 

  

Superposer à la cartographie des points de repères ou des tracés

Cela se fait en ajoutant dans le dossier REP_INSTALL/Marks des fichiers portant l'extension .csv.

Renommer marks.csv_example en marks.csv, ainsi que marks_xy.csv_example et relancer DircoGraph pour tester.

Les coordonnées sont soit en coordonnées géographiques (latitudes, longitudes), soit en coordonnées Lambert.

 

le format des données est indiqué dans le fichier readme.txt

Exemple de fichiers :

deg ; mark ; BLUE VIOLET ; 2.0 ; circle
Latitude ; longitude ; nom (optional)
48.78536  ;  2.09877  ;  F1
48.78752  ;  2.09151  ;
48.78770  ;  2.08942  ;
48.78782  ;  2.08912  ;  A3

 

xy ; line ; sienna ; 1.0 ; circle
lambert x ; lambert y ;
582654.828;120498.663;
582679.168;120492.957;
582703.508;120487.250;
582727.848;120481.544;
582736.926;120479.416;
582741.795;120478.278;
582746.670;120477.166

 

   

Calcul d'indicateurs

Les indicateurs permettent des calculs sur les données, à partir d'un ou plusieurs fichiers CSV

Voir à titre d'exemple les fichiers vitmax.py et vitmoy.py dans le dossier REP_INSTALL/Indicators

 

   

Affichage des trajets et courbes : Artefacts

L'affichage est optimisé pour n'afficher que quelques milliers de points pour le trajet et chaque courbe.

En effet, afficher tous les points pourrait-être beaucoup trop long.

Mais dans certains cas, on a besoin d'afficher tous les points sans exception. Par exemple pour rechercher  des valeurs aberrantes, ou lorsque des signaux périodiques s'affichent mal (Shanon).

  1. Pour le trajet, on peut parvenir à afficher tous les points en diminuant la fenêtre temporelle en modifiant la barre verticale à gauche du trajet. Lorsque les points ne sont pas tous affichés, le trajet est tracé en bleu (couleur de gauche). Lorsque tous les points sont affichés, le trajet est mauve (couleur de droite).
  2. Pour les courbes, on affiche tous les points en choisissant l'affichage des "points".

 

   

Résolution de problèmes

Lorsqu'on ouvre un dossier de logs, Dircograph crée une erreur

Il est probable que la base de données soit corrompue, ou que la restauration automatique de l'affichage ait un problème.

Fermer Dircograph. A la racine du dossier de log, supprimer les fichiers Log.h5 (c'est la base de données), et screen.xml (c'est le fichier de configuration de l'affichage).

Relancer Dircograph et regénérer la base de données.

 

   

Pour aller plus loin ...

Où sont définis les types de variables ?

Ils sont définis par des expressions rationnelles, dans tablesmanager.py, vers la ligne 70. 

Chercher par exemple : FLOATVALUE_MODEL

 

  

Est-ce que je peux utiliser Dircograph dans un script ?

On peut automatiser la génération du fichier Log.h5, qui est une étape qui peut être longue.

Testé sous Linux (en étant dans le répertoire d'installation de DircoGraph:

python DircoGraph.py -b repertoire_de_log  configuration

repertoire_de_log : Comme son nom l'indique, un dossier de données

configuration : une configuration

Il faut donc préalablement défini une configuration, par l'interface graphique.

la configuration est extraite de ~/.dircograph


Ce n'est pas testé sous Windows, mais il faut essayer quelque chose du genre :

cd c:\program files\DircoGraph

Python27\python.exe Dircograph.py -b c:\.......\repertoire_de_log  configuration

  

    

Peut-on utiliser Dircograph pour simplement afficher des courbes, sans trajet ?

Oui. Il suffit de ne pas définir des colonnes de type latitude et longitude.

  

    

Peut-on afficher de fichiers qui sont en cours d'écriture ?

Dircograph a été conçu aussi pour ça. Exemple, un appareil de mesures écrit dans un fichier régulièrement au cours du temps. Vous pouvez suivre l'évolution avec Dircograph.

Nota : Cela marchait encore récemment, avant un certain nombre de modifications.J'espère que ça fonctionne toujours...

  

    

Peut-on forcer la langue de l'interface graphique ?

Oui. Editez DircoGraph.py

et décommentez la ligne qui vous intéresse :

# To choose French :
#langid = wx.LANGUAGE_FRENCH

# To choose English
#langid = wx.LANGUAGE_ENGLISH

  

    

Limitations occasionnées par la prise en charge des valeurs manquantes

Tout variable qui ne correspond pas au format de son type est considérée comme une valeur manquante.

Voici comment c'est pris en charge :

  1. Dans le cas d'un nombre décimal (float), la variable est supprimée et remplacée dans les tables par la valeur MISSINGVALUE_FLOAT = numpy.inf (voir tablesmanager.py, fonction GenerateTableDataInsertFunction).  Ensuite, lors de la lecture des tables, les lignes comportant cette valeur sont ignorées. (voir GetVariable dans tablesmanager.py).
  2. Dans le cas d'un nombre entier (soit les types int et hex), la variable est remplacée dans les tables par MISSINGVALUE_INT = 2147483647. Cette valeur correspond au plus grand entier codé en 32 bits. Cette méthode pose problème si les données sont susceptibles de contenir cette valeur. Dans ce cas, la solution est de déclarer la variable en "float".

  

  

Peut-on utiliser Dircograph pour toute région du Monde ?

 Non. Dircograph est limité à l'affichage des trajets pour la France.

La raison est que l'algorithme qui transforme les coordonnées sphériques en x,y est propre à la France. A ma connaissance,chaque région ou État utilise un algorithme particulier, ce qui complique l'implémentation. Si quelqu'un a un algorithme général, je suis preneur ...

La solution alternative serait d'autoriser des fichiers avec les coordonnées X,Y déjà calculées, comme c'est le cas déjà pour les points de repères. A faire prochainement.