-
Notifications
You must be signed in to change notification settings - Fork 117
#627 - Nouvelle couche de type Sensorthings #725
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
@hsquividant prêt pour revue -test / merge. |
|
Merci @Gaetanbrl !
|
|
Merci pour les tests @hsquividant , quand tu parles de la version n-1, tu veux dire à quelle date que je me repère ? |
|
@hsquividant je viens de tester : Avec GeoSAS, si on clic sur 2 features c'est un peu long mais on a bien les 2 résultats. Avec LORA j'ai une erreur dans la console, aucune feature ne fonctionne. |
|
Il semble que ce cas de test ne soit pas encore connu :
@hsquividant je ne sais pas quoi afficher dans le custom control et dans le template pour ces types de données (MultiDatastream) qui sont complètements différents des Datastreams. |
|
J'ai trouvé pourquoi on ne voit rien et ajouté un correctif : Lorsqu'on a plusieurs MultiDatastream, on charge dans le custom control un seul des multidatastream retourné. Donc quand on charge le panel, on a pour notre exemple uniquement une seule feature qui contient des données pour le stream sélectionné (ex: Lora ST1_75). Le problème actuel est qu'on ne peut pas choisir un autre des multidatastream parmis les features cliquées aux même coordonnées (parmis notre exemple Lora ST1_25, Lora ST1_50, Lora ST1_75). Il faudrait donc avoir ce comportement pour les MultiDatastreams :
|
|
Vu avec @hsquividant en évolution :
https://sensorthings-wq.brgm-rec.fr/FROST-Server/v1.0/Datastreams(8862231)/ObservedProperty Pour chaque :
Attention : la base doit être bien peuplées pour avoir des noms différents et pertinent pour l'utilisateur |
RebasePR alignée sur la branche develop. |
La dernière phrase est encore d'actualité. Avec le service agri4cast ou geosas LORA, je reproduis bien facilement un cas où la liste des noms uniques est inférieur aux streams récupérés. Exemple avec GEOSAS et des Datastreams Je clique sur un objet (things) représenté par un carreau de la couche afin d'obtenir les informations : Jusque là on avait dans la PR actuelle 8 noms différents pour les DataStreams : En appliquant la méthode du dernier commentaire, on réalise 1 requête ObserverdProperty par stream afin d'avoir le nom avec par exemple pour la temperature min ( https://api.geosas.fr/agri4cast/v1.0/Datastreams(251)/ObservedProperty Mais il s'avère que pour ce service, les noms ne sont pas uniques car pour cette location, les streams fournissents une liste de noms uniques suivants (on aura supprimé les valeurs en doublons pour générer cette liste) :
On voit donc que les 3 temperatures ont le même nom "temperature" pour la partie ObservedProperty. A voir maintenant pour les MultiDataStreams. Exemple avec MultiDataStreams LORA Les locations sont les suivants (12 entités) : Si on test l'iot.id 11 pour obtenir les streams avec cette requête : https://api.geosas.fr/lora/v1.0/Things(11)/MultiDatastreams On obtiendra 1 seul MultiDatastreams de 3 unités de mesure : Pour obtenir les noms, j'appel les ObservedProperties : https://api.geosas.fr/lora/v1.0/MultiDatastreams(11)/ObservedProperties J'obtiens les noms https://api.geosas.fr/lora/v1.0/Things(11)/MultiDatastreams En l'état pour ce service de multidatastream, on aura seulement 2 noms à rajouter dans le custom control mais 3 types de données. Cette méthode d'appel avec les observedProperties (nom d'ailleurs différent entre datastreams et multidatastreams) me semble donc cohérente seulement avec des données bien saisie en base (c'est à dire 1 dataset du chart = 1 unité de mesure = 1 observedProperty par unité de mesure cliquable dans le custom control comme pour les datastreams). @hsquividant est-ce correct et est-ce la bonne méthode ? |
Pour https://api.geosas.fr/agri4cast/v1.0/ l'observedProperty temperature correspond effectivement à 3 datastreams par thing, il faudra dans ce cas pouvoir mettre dans le plot les trois datastreams si on reste sur l'idée d'@hsquividant. Une requête de ce type permettra de trouver les bons datastreams (mais ne marche pas sur api.geosas.fr) : Pour les multidatastreams lora n'est pas un bon exemple il ne respecte pas le standard. Par ailleurs, les observations également ne sont pas standard sur https://api.geosas.fr/lora/v1.0 : Je ne connais pas d'autres services qui proposent des multidatastreams pour que tu puisses faire des tests, quand j'ai le temps je vais en créer un. |
|
Retour de @tom @hsquividant : |
|
Suite aux derniers retours du de décembre 2023je propose de :
@hsquividant est-ce que cela te convient ? On aura ainsi une première partie fonctionnelle et native dans le mviewer |
|
la PR a été mise à jour sur la base de la branche develop (latest > v3.10.0) |
Description
Cette première contribution permet d'intégrer la notion de sensorthings relativement à l'OGC :
https://www.ogc.org/standards/sensorthings
Cette contribution permet d'utiliser des couches type "sensorthings".
La configuration possibles est la suivante :
Le parcours utilisateur est le suivant :
Clic sur une entité géographique (nommée
thingqui peut être vue comme un capteur positionné sur un toit par exemple) liée à des informations (nommées datastreams) du type humidité, vent, température etc...Dans la légende, un custom control affiche la liste des DataStreams disponibles (par défaut le premier est coché)
Le template s'affiche avec le contenu souhaité sur le ou les streams sélectionnés (graphique, tableau, etc.)
Description technique
La contribution contient 2 fichiers à intégrer dans le coeur mviewer :
Les modifications dans le coeurs contiennent notamment :
https://github.com/mviewer/mviewer/pull/725/files#diff-145371087f78fe03e294a49a849231dc5dace008d0b6fdfc5e56ad13910056a3
js/info.js, Le remplacement du système de multi-requêtage mviewer via JQuery parPromise.all(la fonction _queryMap devient une fonction asynchrone donc le résultat peut être attendu si besoin (via await) )https://github.com/mviewer/mviewer/pull/725/files#diff-ab469724549a1dafc6a8860c0ddd7a323d62d1bfcd4ced2cf35c6ed4b501c11eL694
js/configuration.jshttps://github.com/mviewer/mviewer/pull/725/files#diff-10d6e62c846b22d2126cac364b63c3f2b96b1725136f66c386f12fa518e99869R781
js/featurestyles.jshttps://github.com/mviewer/mviewer/pull/725/files#diff-9d30c1f9e8c74f11b275feff1fd1e3ffc53c514ba8af919cce7d4fe1322480cfR134
https://github.com/mviewer/mviewer/pull/725/files#diff-145371087f78fe03e294a49a849231dc5dace008d0b6fdfc5e56ad13910056a3R177-R191
Reste à faire