Tutoriel


Cartographie de vols en temps réel - Tutoriel débutant

Cartographie de vols en temps réel - Tutoriel débutant



ParJulien Godenir

...

7 Juin 2018

L'idée est ici de montrer que nous pouvons utiliser le calcul NOW() pour afficher l'état d'avancement du flux. Alors c'est parti !

1. Les données

Ce tutoriel peut être appliqué à toute source de donnée avec les propriétés suivantes:

  • 2 champs datetime (un pour le moment du départ et l'autre pour le moment estimé de l'arrivée, dans mon cas ce sont DEPARTURE_DATETIME et ARRIVAL_DATETIME) Ces champs sont essentiels pour calculer l'avancement du flux.
  • 2 points géolocalisés (un pour le point de départ et un pour le point d'arrivée). Ces colonnes doivent être des couples latitude-longitude. Même si Tableau a déjà intégré le geocodage des villes, pays et même aéroports depuis la 10.1, nous allons devoir faire quelques calculs avec les latitudes et longitudes. Ici, j'ai donc DEPARTURE_LAT, DEPARTURE_LON, ARRIVAL_LAT, ARRIVAL_LON.

Une dernière chose à savoir est que pour que Tableau soit capable de lier un point A à un point B il a besoin d'avoir le point de départ et le point d'arrivée sur deux lignes de données différentes. Ce point précis a été expliqué spécifiquement dans un poste de Sophie Sparkes dans ce post de blog

Si votre source de données contient déjà les coordonnées de départ et d'arrivée dans deux colonnes (au lieu de quatre), alors qu'une colonne additionnelle indique laquelle est laquelle (exemple: les points de départs sont identifiés par un 0 alors que les arrivées sont identifiées par un 1), alors vous êtes déjà bons pour la suite. Autrement, il vous faudra probablement appliquer un LEFT JOIN (jointure gauche) à vos données afin de dupliquer les lignes et y assigner la première ligne au point de départ et la deuxième ligne au point d'arrivée.

The dataset I'm using for this visualization

Si vous jetez un oeil à mes données vous verrez en vert les champs qui sont nécessaires pour ma viz alors que j'ai surligné en orange une colonne nommée JOIN remplie de 1s. Cette colonne sera utilisée comme clé pour joindre les champs depuis une feuille Excel secondaire contenant les 2 colonnes et lignes ci-dessous. Ainsi nous recréons simplement une nouvelle source de données où j'indique mes départs et arrivées avec des 0 et des 1 respectivement.

Model to be used for the JOIN

Pour terminer, il peut être utile d'avoir un identifiant unique pour chaque voyage. A la fin de ce tutoriel vous verrez que j'utilise le numéro de billets sur les détails pour m'assurer que chaque chemin n'est pas une aggrégation de plusieurs voyages.

2. Connection à Tableau

Maintenant que vous avez votre data, connectez simplement à Tableau et appliquez la jointure si elle n'a pas été déjà réalisée !

Here is how you do the left join

C'est ce à quoi votre donnée doit ressembler désormais (remarquez comment chaque ligne est maintenant doublée avec la colonne Path à la droite).

Each row has been duplicated: in the Path column one row contains a 0, the other a 1

3. Les Calculs de table

Pour commencer nous souhaitons filtrer uniquement les voyages en cours en ce moment. Pour ce faire, créez simplement les champs calculés suivant en utilisant la fonction NOW() de Tableau:

NOW() > [DEPARTURE DATETIME] AND NOW() < [ARRIVAL DATETIME]

This formula allows you to show flights currently in the air

Glissez-déposez ce champ calculé vers les Filtres et réglez-le à Vrai. Désormais, uniquement les vols en cours sont concernés par nos calculs (vous pouvez si vous le souhaitez appliquer ce filtre par contexte).

Ensuite vous devez calculer l'état d'avancement du déplacement depuis le point A au point B. Nous allons interpoler l'avancement à partir des temps de départ et d'arrivée:

(NOW()-[DEPARTURE DATETIME]) / ([ARRIVAL DATETIME] - [DEPARTURE DATETIME])

This formula gives you a completion in percent based on time

Vous pouvez appliquer la propriété d'affichage par défaut du champ d'avancement COMPLETION à un pourcentage si vous le souhaitez.

Pour terminer, vous pourrez placer la position estimée actuelle de chaque vol en appliquant le calcul d'avancement à une ligne droite entre le point de départ et le point d'arrivée. Pour ce faire, nous allons créer deux champs calculés nommés Lat et Lon comme suit:

IIF( [PATH] = 0, [DEPARTURE LATITUDE], ( [ARRIVAL LATITUDE] - [DEPARTURE LATITUDE] ) * [COMPLETION] + [DEPARTURE LATITUDE] )

This calculated field gives you the current latitude of your flight

et

IIF( [PATH] = 0, [DEPARTURE LONGITUDE], ( [ARRIVAL LONGITUDE] - [DEPARTURE LONGITUDE] ) * [COMPLETION] + [DEPARTURE LONGITUDE] )

This calculated field gives you the current longititude of your flight

N'oubliez surtout pas de régler leur role géographiques à latitude et longitude respectivement!

Here is how to change the geographic role of your calculated field

Et c'est terminé pour nos champs calculés !

4. Créez votre feuille

Glissez-déposez Lat vers les lignes et Lon vers les colonnes, et dans le menu supérieur, allez vers Analyse et décochez Mesures Aggrégées. Vous devriez obtenir quelque chose comme suit:

We are getting closer to our expected result

Ensuite, j'agrandis la taille de mes points et je place un autre calcul Lon sur les colonnes ainsi qu'un autre calcul Lat sur les lignes... Ce que nous cherchons à faire est de placer chacun l'un au-dessus de l'autre en sélectionnant l'option Axe Double pour chacun comme suit:

Duplicating our marks using the dual axis

Maintenant vous pouvez changer une des marques pour une ligne et ajouter la colonne Path à la marque chemin pour tracer les lignes (cf. capture d'écran ci-dessous à gauche). Ajoutez la colonne Path sur la taille pour les cercles (cf. capture d'écran ci-dessous à droite). Vous pouvez ensuite aggréger vos données en utilisant tout champ que vous jugez pertinent à votre visualisation en le déposant sur les détails ou la couleur. Dans mon cas j'utilise le numéro du vol.



Voici ce que vous devriez obtenir:

Duplicating our marks using the dual axis

Super ! Nous pouvons désormais voir d'où les avions/voitures/humains viennent et où ils se rendent! Si vous le souhaitez, vous pouvez toujours remplacer le calcul NOW() par un paramètre si vous souhaitez donner la possibilité à vos utilisateurs de voir l'état de vos flux dans le passé. Au final, il vous appartient de choisir ce que vous souhaitez faire avec cette technique!

Il y a quelques améliorations que nous pouvons apporter à cette visualisation cependant. Par exemple, nous pourrions dessiner un avion/voiture/quoi que ce soit à la place d'un cercle simple. Aussi, le chemin pris est pour l'instant une droite et nous pourrions préférer de voir le chemin suivre la courbure de la terre.Ceci sera le sujet d'un autre tutoriel dans lequel nous implémenterons ces améliorations!