Conseils & Astuces ArcGIS Online - N°182
N° 182 - Cartographier des horaires d'ouverture avec Arcade
Dans les deux précédents articles (Conseils & Astuces ArcGIS Online
n°180
et
n°181), je vous ai montré comment représenter, via la symbologie de la couche ou les
fenêtres contextuelles, les informations sur les jours et les dates
d'ouverture associés à vos points d'intérêts. Tout cela, grâce à des expressions Arcade.
Lorsque vous disposez d'informations relatives aux heures d'ouverture et de
fermeture, il est également possible de réaliser des cartes plus dynamiques en
utilisant des expressions Arcade.
Dans cet article, je vous propose de voir un exemple d'expression Arcade pour
représenter les heures d'ouvertures de vos points d'intérêt.
Reprenons l'exemple d'une couche de points contenant les déchèteries sur la
région Ile-de-France. Cette dernière contient les horaires d'ouverture et de
fermeture, pour chaque jour de la semaine, stockés dans 14 champs de type
"Heure uniquement" (Time only). Par exemple, pour la journée du lundi, les
horaires se trouveront dans les champs Ouverture_Lundi et Fermeture_Lundi.
Dans mon cas, l'absence de valeur indique une fermeture durant toute la
journée.
Voici comment vous pouvez représenter les déchèteries ouvertes ou fermées en
fonction du jour et de l'heure actuels.
-
Après avoir ajouté la couche des déchèteries dans la carte, vous
afficherez l'interface de définition des styles. Vous cliquerez ensuite
sur le bouton "Expression" pour créer une nouvelle expression
Arcade.
-
Vous donnerez tout d'abord un nom à votre expression, par exemple ici :
"Ouvert/Fermé en ce moment"
Expects($feature, "*") // Récupération de l'index du jour courant // (Lundi = 1 et Dimanche = 7) var IndexJourCourant = ISOWeekday(Now()) // Récupération de l'heure courante var HeureCourante = Time() // On crée une liste des noms des jours var ListeJourSemaine=["Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi","Dimanche"] // On récupère le nom du jour courant // Note: Dans une liste l'index démarre à 0, on retire donc 1 à l'index du jour courant var NomJourCourant = ListeJourSemaine[IndexJourCourant-1] // Si les heures d'ouverture ou de fermeture ne sont pas renseignées dans la table // alors la déchèterie est fermée toute la journée if (!IsEmpty($feature["Ouverture_"+NomJourCourant]) || !IsEmpty($feature["Fermeture_"+NomJourCourant])){ var HeureOuverture = $feature["Ouverture_"+NomJourCourant] var HeureFermeture = $feature["Fermeture_"+NomJourCourant] // Si l'heure courante est entre l'heure d'ouverture et de fermeture if (HeureCourante>=HeureOuverture && HeureCourante<=HeureFermeture){ return "Actuellement ouvert" } else { return "Actuellement fermé" } } else { return "Fermé toute la journée" }
-
Il ne reste plus qu'à définir la symbologie que vous souhaitez appliquer
aux déchèteries pour indiquer qu'elles sont ouvertes et fermées.
-
Votre carte affiche désormais les déchèteries en fonction de leur
ouverture/fermeture pour le jour courant.
Voici la carte lorsque le jour courant est un vendredi à 8:15 :
Voici la carte lorsque le jour courant est un vendredi à 17:05 :
Aller plus loin...
-
Vous pouvez améliorer encore l'exploitation des heures en proposant
une légende plus évoluée pour votre carte. En effet, celle-ci pourra
par exemple informer l'utilisateur des déchèterie qui vont ouvrir ou
fermer dans un certains délais (15 prochaines minutes dans mon
exemple).
L'expression Arcade ressemblera alors à ceci :
Expects($feature, "*") // Récupération de l'index du jour courant // (Lundi = 1 et Dimanche = 7) var IndexJourCourant = ISOWeekday(Now()) // Récupération de l'heure courante var HeureCourante = Time("8:15") // On crée une liste des noms des jours var ListeJourSemaine=["Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi","Dimanche"] // On récupère le nom du jour courant // Dans une liste l'index démarre à 0, on retire donc 1 à l'index du jour courant var NomJourCourant = ListeJourSemaine[IndexJourCourant-1] // Si les heures d'ouverture ou de fermeture ne sont pas renseignées dans la table // alors le POI est fermé toute la journée if (!IsEmpty($feature["Ouverture_"+NomJourCourant]) || !IsEmpty($feature["Fermeture_"+NomJourCourant])){ var HeureOuverture = $feature["Ouverture_"+NomJourCourant] var HeureFermeture = $feature["Fermeture_"+NomJourCourant] // Si l'heure courante est entre l'heure d'ouverture et de fermeture if (HeureCourante>=HeureOuverture && HeureCourante<=HeureFermeture){ return "Actuellement ouvert" } else { if(DateDiff(HeureOuverture,HeureCourante,"minutes")<=15){ return "Bientôt ouvert (moins de 15 min)" }else if(DateDiff(HeureFermeture,HeureCourante,"minutes")<=15){ return "Bientôt fermé (moins de 15 min)" }else{ return "Actuellement fermé" } } }else{ return "Fermé toute la journée" }
Voici un exemple de rendu de la carte un mercredi à 8:20 :
Dans le prochain article, nous verrons comment présenter ces informations sur les horaires d'ouverture dans les fenêtres contextuelles de la couche.
Bonne route sur ArcGIS Online !
Pour retrouver l'ensemble des Conseils & Astuces ArcGIS Online,
cliquez sur ce lien.
0 comments :
Enregistrer un commentaire