Page 1 sur 1

Format jSon

Posté : 07 septembre 2015, 15:47
par Bruno
Bonjour,

Est-il envisagé un export jSon pour les données "Temps réel" ?

Je viens par exemple de consulter les disponibilités des VCub, et je vois une possibilité d'export en CSV mais pas un webservice jSon qui serait pourtant bien pratique pour des données simples du genre 'nb_places' et 'nb_vélos' .
Mais comme je découvre le service, peut-être que quelque chose m'a échappé ;-) ?

Re: Format jSon

Posté : 07 septembre 2015, 15:55
par Sébastien Cart-Lamy
Bonjour,
Le CSV, et plus généralement les formats de fichiers diffusés sur le site, ne sont *PAS* utilisables que sur les données non temps réel. Cela pour la simple raison que les fichiers ne sont rafraîchis qu'une fois par jour (la nuit).

Pour utiliser les données temps réel, il faut utiliser les WebServices WMS / WFS / WPS. Ceux-ci sont normalisés et fonctionnent sur du XML.

Il y a sur le forum pas mal d'exemples d'utilisation de ces WebServices, notamment le WFS sur a couche CI_VCUB_P.

Autre point, nous avons mis en ligne un "générateur de requêtes WFS / WPS", qui permet d'élaborer des filtres sur les WebServices, et d'obtenir la requête HTTP à utiliser : http://sig.bordeaux-metropole.fr/apicub/wxsquery/

Re: Format jSon

Posté : 08 septembre 2015, 16:11
par Bruno
Bonjour,

J'ai regardé avec intérêt les exemples fournis (notamment "Export d'entités" - export.php).
Il apparaît que la classe CUB.Layer.Dynamic au travers de la méthode "getEntities"permet de récupérer des données non géographiques d'un élément (en l’occurrence pour les VCUB - 'CI_VCUB_P' : le nombre de places et de vélos disponibles).
Mon problème est que je voudrais récupérer ces information sans passer par l'affichage d'un layer (et 'CUB.Layer.Dynamic' affiche un fond de carte et un layer).

Existe-t-il un autre moyen de procéder ?
Peut-on par exemple récupérer une entity au moyen de ses attributs ( GID ou IDENT) ?

Bien cordialement

Re: Format jSon

Posté : 09 septembre 2015, 09:03
par Sébastien Cart-Lamy
Voici une solution qui pourrait résoudre votre problème.

Si vous souhaitez récupérer les infos d'un objet VCUB donné, à partir de son GID ou IDENT, il faut créer une couche dynamique "temporaire" sur le WFS CI_VCUB_P avec les paramètres suivants (voir la doc de l'APICUB pour plus de détails) :
  • Filtre sur le GID ou l'IDENT
  • Mettre LoadAllAtOnce pour qu'il charge sans restriction géographique
  • Fonction onLoadEnd (appelée à la fin de chargement de la couche), qui va récupérer les infos attributaires de la station que l'on recherche et qui va supprimer la couche (afin qu'elle n'apparaisse pas sur la carte).
Voici ce que ça donne pour récupérer les infos de la station d'IDENT 125 :

Code : Tout sélectionner

new CUB.Layer.Dynamic('', 'http://data.bordeaux-metropole.fr/wfs?key=[VOTRECLE]', {
  layerName: 'CI_VCUB_P',
  loadAllAtOnce: true,
  filter: '<PropertyIsEqualTo><PropertyName>IDENT</PropertyName><Literal>125</Literal></PropertyIsEqualTo>',
  onLoadEnd: function() { 
    var entities = this.getEntities();
    console.log('Il y a ' + entities[0].attributes.NBVELOS + ' vélos disponibles sur la station ' + entities[0].attributes.NOM);
    this.destroy();
  }
})
Pour générer le filtre WFS, j'ai utilisé WXSQuery (comme évoqué dans mon message précédent).

Re: Format jSon

Posté : 09 septembre 2015, 13:43
par Bruno
Tout semble maintenant OK

Votre générateur de requête (http://sig.bordeaux-metropole.fr/apicub/wxsquery) répond parfaitement à mes besoins !

Merci :-)