Spécifications techniques pour l`accès aux services web de niveaux

Transcription

Spécifications techniques pour l`accès aux services web de niveaux
Spécifications techniques pour l’accès aux services web de
niveaux d’eau
Version 2.0.3
Septembre 2014
Service hydrographique du Canada
Pêches et Océans Canada
Services web de niveaux d’eau
version 2.0.3
Table des matières
Introduction .................................................................................................................................................................... 3
Accès et aide ................................................................................................................................................................... 3
Adresses .......................................................................................................................................................................... 3
Technologies ................................................................................................................................................................... 3
Méthodes disponibles ..................................................................................................................................................... 4
getStatus ............................................................................................................................................................... 4
getName .................................................................................................................................................................... 4
getInfo .................................................................................................................................................................... 4
getVersion............................................................................................................................................................. 4
getBoundaryDate ................................................................................................................................................. 4
getBoundaryDepth .............................................................................................................................................. 4
getBoundarySpatial ......................................................................................................................................... 4
getDataInfo .......................................................................................................................................................... 5
getMetadata .......................................................................................................................................................... 5
getMetadataInfo ................................................................................................................................................. 7
search ...................................................................................................................................................................... 7
Exemples d’appels à la méthode search ............................................................................................................. 8
interpolate .......................................................................................................................................................... 9
Références .................................................................................................................................................................... 10
Annexe A – Diagramme de classe de la norme WDS .................................................................................................... 11
ResultSet ............................................................................................................................................................. 11
Annexe B – Diagramme de classe de la méthode interpolate du service SPINE .......................................................... 12
ResultSpine ........................................................................................................................................................ 12
DataSpine ............................................................................................................................................................. 13
Annexe C – Les messages d’erreur................................................................................................................................ 14
Service hydrographique du Canada
Page 2 sur 14
Services web de niveaux d’eau
version 2.0.3
Introduction
Les trois services web décrits dans ce document permettent un accès direct aux données de niveaux d’eau
acquis et générés par le Service hydrographique du Canada de Pêches et Océans Canada (SHC).
Le service web de prévisions et d’interpolation des niveaux d’eau (communément appelé SPINE) est un
système permettant d’obtenir les niveaux d’eau à une date/heure et à un endroit précis dans le chenal de
navigation du fleuve St-Laurent entre Saint-Joseph-de-la-Rive et le port de Montréal. Ce système s’appuie
sur un modèle de prévisions maintenu par le Service hydrographique du Canada.
Le service web d’observations donne accès aux observations des niveaux d’eau recueillies par un réseau
de marégraphes et de limnimètres, installés le long du fleuve Saint-Laurent, de l’estuaire et du golfe.
Le service web de prédictions donne accès aux prédictions des niveaux d’eau côtiers d’un océan à l’autre
du Canada.
Accès et aide
Ces services web sont ouverts au grand public et ne nécessitent aucune autorisation d’accès spéciale. Si
vous avez des questions supplémentaires, vous pouvez communiquer directement avec le Service
hydrographique du Canada à l’adresse suivante : [email protected]
Veuillez noter que le Service hydrographique du Canada n’offrira aucune information supplémentaire sur
les données « informatives » de température de l’eau, salinité et pression atmosphérique. Les questions sur
les niveaux d’eau seront répondues dans les délais prescrits par les normes de service en vigueur au SHC.
Les conditions météorologiques peuvent engendrer des différences (temps et hauteur) entre les marées
prédites (prédictions) et les marées observées (observations). Ces différences résultent surtout des
variations de la pression atmosphérique, des vents forts soutenus ou des variations du débit d’eau douce.
Adresses
Les points d’entrées des services web sont :



Service web des prévisions : https://ws-shc.qc.dfo-mpo.gc.ca/spine
Service web des observations : https://ws-shc.qc.dfo-mpo.gc.ca/observations
Service web des prédictions : https://ws-shc.qc.dfo-mpo.gc.ca/predictions
Technologies
Les trois services web utilisent SOAP et XML comme protocole de communication et la langue anglaise pour
l’appel des méthodes et l’échange des données. Chacun des trois services possède une description en XML
accessible en langage WSDL (https://ws-shc.qc.dfo-mpo.gc.ca/predictions?wsdl). Cette description est très
utile pour générer automatiquement (par exemple, à l’aide d’outils comme WSDL2Java d’Apache Axis) du
code pour communiquer avec les services. De plus, les services respectent entièrement la norme Web Data
Service WDS établie par l’Observatoire Global du St-Laurent (OGSL). La documentation détaillée de la
norme WDS se trouve à : http://weds.sourceforge.net/cookbook/fr/index.html
Service hydrographique du Canada
Page 3 sur 14
Services web de niveaux d’eau
version 2.0.3
Méthodes disponibles
La norme WDS décrit dix méthodes donnant de l’information sur le service lui-même et une méthode pour la
recherche de données. La description détaillée des méthodes et des objets utilisés par celle-ci est disponible
sur le site web de la norme WDS.
Exceptionnellement, le service de prévisions SPINE ajoute la méthode de recherche interpolate décrite
plus bas.
getStatus
Donne le statut du service. Si le service est disponible et fonctionnel, le statut est à « ok », tandis que s’il y a
un problème, le statut est à « error ».
getName
Donne le nom du service.
getInfo
Donne la description du service.
getVersion
Donne la version de la norme WDS utilisée pour le service web.
getBoundaryDate
Donne les limites temporelles du service en UTC (toutes les dates sont en UTC).
Il est important de mentionner qu’une recherche de données effectuée avec des bornes temporelles
excédant les limites temporelles du service ne génèrera pas d’erreur, mais un résultat vide, car aucune
donnée ne respecte les critères temporaux de la recherche.
getBoundaryDepth
Donne la limite de profondeur du service. Tous les services donnent des niveaux d’eau et ceux-ci sont
considérés à la surface à une profondeur de zéro (0.0). Les valeurs sont en mètres.
Le service d’observations est le seul service pour lequel les limites et les valeurs de profondeurs sont
significatives. Les valeurs de température et de salinité de l’eau sont prises sous la surface, rendant les
limites de profondeurs requises lors de leur recherche. Cependant, les valeurs de pression atmosphérique
sont prises au-dessus de la surface et elles ont donc une profondeur de zéro (0.0).
Il est important de mentionner qu’une recherche de données effectuée avec des bornes de profondeur
excédant les limites de profondeurs du service ne génèrera pas d’erreur mais un résultat vide car aucune
donnée ne respecte les critères de profondeur de la recherche.
getBoundarySpatial
Donne les latitudes et longitudes à l’intérieur desquelles il est possible d’interroger le service. Les valeurs
des latitudes et des longitudes sont en degrés décimaux et suivent les règles de la norme ISO 6709 pour ce
qui est du signe (une latitude positive est au Nord et une longitude positive est à l’Est).
Service hydrographique du Canada
Page 4 sur 14
Services web de niveaux d’eau
version 2.0.3
Il est encore important de mentionner qu’une recherche de données effectuée avec des bornes spatiales
excédant les limites spatiales du service, ne génèrera pas d’erreur, mais un résultat vide, car aucune donnée
ne respecte les critères géographiques de la recherche.
getDataInfo
Donne la liste des types de données disponibles pour le service ainsi que leur description.
Le service SPINE donne une seule valeur :
spine : prévision de la hauteur du niveau d’eau en mètre
Le service d’observations donne quatre valeurs :
wl : niveau d’eau en mètre au zéro marégraphique (zéro des cartes)
sal : salinité en partie par millier (‰)
temp : température de l’eau en degrés Celcius
atm_pres : pression atmosphérique en millibars
Note : Les données de type environnementales (sal, temp et atm_pres) sont des données auxiliaires,
fournies à titre informatif seulement. Aucun contrôle de la qualité n’est effectué sur ces données et aucune
information supplémentaire ne sera fournie sur celles-ci.
Le service de prédictions donne deux valeurs (en mètre au zéro marégraphique) :
hilo : les niveaux d’eau des marées hautes et marées basses
wl15 : les niveaux d’eau aux quinze minutes ( :00, :15, :30 et :45)
Le service web de prédictions n’offre que les prédictions de niveaux d’eau. Les prédictions reliées aux
arrivées de mascarets (Moncton et Truro) et aux étales de courants (Reversing Falls) ne sont donc pas
disponibles à travers ce service.
Une de ces valeurs doit être fournie comme premier paramètre à la méthode search de son service
respectif.
getMetadata
Donne une liste de métadonnées (informations connexes) du service web accompagnée de leur valeur.
Le service SPINE a six (6) métadonnées :
Nom de la métadonnée
Contact
Language
Name
Abstract
reference_date
max_results
Service hydrographique du Canada
Valeur
Donne l’information sur les personnes à contacter en cas de problèmes
ou à des fins de validation de données.
Donne la langue des différents messages entre le service web et le client.
Donne le nom du service web.
Donne la description du service web.
Donne l’intervalle temporel ayant des données. Toutefois, les extrêmes
temporels définissant les limites du service doivent être accédés via la
méthode getBoundaryDate.
Donne le nombre maximum d’éléments retournés lors d’une requête aux
méthodes search ou interpolate.
Page 5 sur 14
Services web de niveaux d’eau
version 2.0.3
Le service d’observations a onze (11) métadonnées:
Nom de la métadonnée
Valeur
station_id_list
Donne la liste des identifiants des marégraphes disponibles, séparés par
des virgules : 03057,03071,03100,…
station_id_position
Donne la liste des identifiants des marégraphes disponibles ainsi que
leurs latitudes et leurs longitudes séparés par des virgules. Ces trois
valeurs sont englobées par des crochets : [15520,45.5035,73.5525][15540,45.5286667,73.5424444]….
contact
Donne l’information sur les personnes à contacter en cas de problèmes
ou à des fins de validation de données.
language
Donne la langue des différents messages entre le service web et le client.
name
Donne le nom du service web.
abstract
Donne la description du service web.
reference_date
Donne l’intervalle temporel ayant des données. Toutefois, les extrêmes
temporels définissant les limites du service doivent être accédés via la
méthode getBoundaryDate.
station_id_name_list
Donne la liste des identifiants et des noms des marégraphes disponibles
séparés par deux points-virgules et englobés par des crochets :
[15520;;Montréal, Jetée no 1][15540;;Montréal, rue Frontenac]…
metadata_selection_accepted
Donne la liste des champs acceptés dans la méthode search afin de
sélectionner les données correspondantes à une certaine valeur : le tout,
séparé par des virgules. Pour plus d’informations, consultez la
documentation des WDS et ciblez le paramètre metadataSelection de la
méthode search.
max_rows
Donne le nombre maximum d’éléments retournés lors d’une requête à la
méthode search.
total_nbr_obs
Donne le nombre total de valeurs dans la base de données.
Le service de prédictions a douze (12) métadonnées:
Nom de la métadonnée
Valeur
contact
Donne l’information sur les personnes à contacter en cas de problèmes
ou à des fins de validation de données.
date
Donne la date de mise en service du service web.
language
Donne la langue des différents messages entre le service web et le client.
topic
Donne le sujet du service web.
Service hydrographique du Canada
Page 6 sur 14
Services web de niveaux d’eau
version 2.0.3
name
Donne le nom du service web.
abstract
Donne la description du service web.
reference_date
Donne l’intervalle temporel ayant des données. Toutefois, les extrêmes
temporels définissant les limites du service doivent être accédés via la
méthode getBoundaryDate.
station_id_list
Donne la liste des identifiants des stations disponibles, séparés par des
virgules : 03057,03071,03100,…
station_id_position
Donne la liste des identifiants des stations disponibles ainsi que leur
latitude et leur longitude séparées par des virgules. Ces trois informations
sont englobées par des crochets
: [15520,45.5035,-73.5525][15540,45.5286667,-73.5424444]…
station_id_name_list
Donne la liste des identifiants et des noms des stations disponibles
séparés par des points-virgules et englobés par des crochets :
[15520;;Montréal, Jetée no 1][15540;;Montréal, rue Frontenac]…
metadata_selection_accepted
Donne la liste des champs acceptés dans la méthode search afin de
sélectionner les données correspondantes à une certaine valeur : le tout,
séparé par des virgules. Pour plus d’informations, consultez la
documentation des WDS et ciblez le paramètre metadataSelection de la
méthode search.
max_rows
Donne le nombre maximum d’éléments retournés lors d’une requête à la
méthode search.
getMetadataInfo
Donne une liste avec la description des différentes métadonnées du service.
Il est important de mentionner qu’il y a trois paliers de métadonnées :



Les métadonnées reliées directement au service, accessible par la méthode getMetadata et
décrites par cette méthode.
Les métadonnées qui sont liées au résultat d’une recherche.
Les métadonnées qui sont reliées à chacune des données du résultat d’une recherche.
search
Fais une recherche et retourne un objet ResultSet, les données elles-mêmes, ainsi que diverses
métadonnées reliées à ces résultats (l’objet ResultSet est décrit à l’annexe A).
Cette méthode nécessite une multitude d’informations : un type de donnée, un zone géographique (latitude
minimale et maximale, longitude minimale et maximale), un intervalle de profondeur, un intervalle temporel,
ainsi que l’indice de la première donnée du résultat et le nombre désiré de données, l’indicateur d’inclusion
des métadonnées, la sélection de données basée sur les métadonnées et l’ordre temporel (voir les
exemples plus loin).
Bien que cette méthode soit disponible pour les trois services web, elle est dépréciée (deprecated) pour le
service SPINE, qui utilise plutôt la méthode interpolate pour rechercher les données.
Service hydrographique du Canada
Page 7 sur 14
Services web de niveaux d’eau
version 2.0.3
Les données des services d’observations et de prédictions ont les métadonnées suivantes pour aider à
les identifier :

metadata : tableau d’informations connexes à la donnée qui contient :
 station_id : Numéro unique de la station (i.e. : 02985)
 station_name : Nom de la station (i.e. : Rimouski)
 vl : Niveau de validation de la donnée (pour observations seulement)
 0 = donnée invalide, la donnée acquise n’a subi aucun niveau de validation. C’est la
valeur brute donnée par les capteurs du marégraphe.
 1 = donnée vérifiée, la donnée est validée préliminairement selon certains
paramètres de validation comme des valeurs minimum et maximum et un écart
maximum entre les capteurs.
2 = donnée certifiée, les deux niveaux de validation précédents ont été effectués et un algorithme complexe
comparant l’observation avec les prévisions et prédictions permet de certifier cette donnée.Les métadonnées
décrites ci-haut peuvent être utilisées comme valeur au paramètre metadataSelection (c.-à-d.
station_id=02985 ou encore station_name=Rimouski). Des exemples de recherche sont donnés
plus loin.
Il aussi est possible d’utiliser le niveau de validation vl comme paramètre metadataSelection lors d’un appel
à la méthode search, avec en plus, les opérateurs + et - afin d’effectuer une sélection de données de
plusieurs niveaux (i.e vl=1+ ne donnera que les données de niveau 1 et 2).
Exemples d’appels à la méthode search
Service web des prédictions
EXEMPLE 1
search("hilo", 47.5, 47.7, -61.6, -61.4, 0.0, 0.0, "2012-02-01
00:00:00", "2012-02-01 23:59:59", 1, 100, true, "", "asc")
Recherche toutes les marées hautes et basses dans le nord-est des Îles-de-la-Madeleine le
er
1 février 2012 et demande les 100 premières données en commençant par la première
avec les métadonnées sans sélections de métadonnées le tout en ordre croissant de date.
EXEMPLE 2
search("wl15", 47.5, 47.7, -61.6, -61.4, 0.0, 0.0, "2012-02-03
23:43:54", "2012-02-04 00:17:27", 3, 5, true, "", "desc")
Recherche les niveaux d’eau prédits dans le nord-est des Îles-de-la-Madeleines dans la nuit
du 3 février 2012 au 4 février 2012 et demande, en ordre décroissant, les cinq premières
données en commençant par la troisième (données 3, 4, 5, 6 et 7) avec les métadonnées
sans sélections de métadonnées.
Service web des observations
EXEMPLE 1
search("sal", -90.0, 90.0, -180.0, 180.0, 5.0, 50.0, "2012-12-10
14:15:00", "2012-12-10 14:30:00", 1, 1000, true, "", "asc")
Recherche toutes les mesures de salinité prise entre 5 mètres et 50 mètres le 10 décembre
2012 entre 14h15 et 14h30 et donne les 1000 premières valeurs triées en ordre croissant.
Service hydrographique du Canada
Page 8 sur 14
Services web de niveaux d’eau
version 2.0.3
EXEMPLE 2
search("wl", -90.0, 90.0, -180.0, 180.0, 0.0, 0.0, "2012-12-10
13:16:00", "2012-12-10 14:16:00", 1, 1, true, "station_id=02985",
"desc")
En supposant être le 10 décembre 2012 à 14h16, donne le niveau d’eau le plus récent à
Rimouski (02985) si celui-ci a été mesuré dans la dernière heure.
EXEMPLE 3
search("wl", 48.4, 48.5, -68.6, -68.5, 0.0, 0.0, "2012-12-10
12:00:00", "2012-12-10 18:00:00", 1, 1000, true, "vl=1+","asc")
Recherche tous les niveaux d’eau à Rimouski durant l’après-midi du 10 décembre 2012 dont
le niveau de validation est 1 ou 2. En remplaçant « vl=1+ », par « vl=2 », l’utilisateur
obtiendrait seulement les données validées de niveau 2.
interpolate
Fait une recherche de prévisions de niveaux d’eau et donne un objet complexe ResultSpine contenant les
données ainsi que diverses métadonnées reliées au résultat (l’objet ResultSpine est décrit à l’annexe B).
Cette méthode exclusive au service SPINE est beaucoup plus simple que la méthode search, ne
nécessitant que trois tableaux en paramètre :



Un tableau de nombres réels pour indiquer la latitude
Un deuxième tableau de nombres réels pour indiquer la longitude
Un tableau de type chaine de caractères pour la date.
Il est important de mentionner que le même indice pour chaque tableau correspond à une même requête.
Service hydrographique du Canada
Page 9 sur 14
Services web de niveaux d’eau
version 2.0.3
Références
Pour en savoir plus sur les technologies utilisées dans nos services web, nous vous suggérons les
hyperliens suivants :
SOAP :


http://www.w3.org/TR/soap/
http://en.wikipedia.org/wiki/SOAP
Norme WDS :


http://weds.sourceforge.net/cookbook/fr/index.html
http://weds.sourceforge.net/cookbook/en/index.html
WSDL :


http://www.w3.org/TR/wsdl
http://en.wikipedia.org/wiki/Web_Services_Description_Language
Service hydrographique du Canada
Page 10 sur 14
Services web de niveaux d’eau
version 2.0.3
Annexe A – Diagramme de classe de la norme WDS
Extrait du document « WDS Cookbook » (http://weds.sourceforge.net/cookbook/fr/index.html)
ResultSet
Une instance de la classe ResultSet est retournée comme résultat d’une recherche. Cet objet, au centre
du diagramme ci-haut, contient un tableau de données dans sa propriété data de taille size. En plus des
données, un objet ResultSet contient plusieurs autres propriétés :






boundarySpatial : les limites spatiales des données comprises dans le résultat,
boundayDepth : les limites de profondeur des données comprises dans le résultat,
boundaryDate : les limites temporelles des données comprises dans le résultat,
boundaryValue : les limites des valeurs des données elles-mêmes,
status : le statut de la requête
metatada : d’autres métadonnées sur la requête
Pour ce qui des valeurs elles-mêmes, celles-ci sont des instances de la classe Data. Les propriétés
spatialCoordinates, boundaryDepth et boundaryDate indiquent l’emplacement du senseur qui l’a mesuré et
la propriété metadata donne de l’information supplémentaire (voir la section sur la recherche). La valeur de
la donnée est dans la propriété value.
Service hydrographique du Canada
Page 11 sur 14
Services web de niveaux d’eau
version 2.0.3
Annexe B – Diagramme de classe de la méthode interpolate du service SPINE
ResultSpine
Une instance de la classe ResultSpine est retournée comme résultat d’une interpolation. Cet objet, au
centre du diagramme ci-haut, contient un tableau de données dans sa propriété data de taille size. En plus
des données, un objet ResultSpine contient :


status : le statut de la requête
metatada : d’autres métadonnées sur la requête
Pour ce qui des valeurs elles-mêmes, celles-ci sont des instances de la classe DataSpine. Les propriétés
coordinates et date indiquent l’emplacement de la mesure et les propriétés metadata et type donnent de
l’information supplémentaire (voir la section sur interpolate). La valeur de la donnée est dans la propriété
value.
Service hydrographique du Canada
Page 12 sur 14
Services web de niveaux d’eau
version 2.0.3
DataSpine
Une instance de la classe DataSpine contient les valeurs d’une prévision d’un niveau d’eau et ses
métadonnées :





value : le niveau d’eau en mètre
coordinate : les coordonnées spatiales ramenées au centre du chenal, sur le fleuve Saint-Laurent
date : la date pour laquelle le niveau d’eau est prévu
type : le type de donnée; peut être forecast pour une prévision ou peut commencer par error pour
indiquer une erreur
metadata : les métadonnées sur la prévision, dont age_forecast qui indique l’âge en minute de la
prévision (c’est-à-dire l’écart entre la date de production de la prévision et la date de la demande de
prévision) et precision_index qui donne la marge d’erreur en mètre
Tout autre type ou métadonnée disponible à ce moment n’a pas de valeur significative et sont des espaces
réservés pour des changements futurs.
Service hydrographique du Canada
Page 13 sur 14
Services web de niveaux d’eau
version 2.0.3
Annexe C – Les messages d’erreur
S’il y a des erreurs dans une requête à la méthode search ou encore si le service lui-même est en erreur, la
propriété status de l’objet ResultSet pourrait contenir les messages suivants :
Valeur :
Ce que cela signifie :
The web service is currently unavailable.
Please, try later.
Le service web n’est pas disponible dû à des problèmes
de communication avec sa source de données ou pour un
entretien, veuillez réessayer plus tard.
Invalid date format
La date entrée est invalide. Le format requis est le yyyyMM-dd HH:mm:ss en UTC.
Invalid order
Les valeurs acceptées pour
retournées sont asc ou desc.
Invalid datatype
Le type de donnée spécifié dans le paramètre dataname
n’est pas valide. Voir getDataInfo pour la liste des
valeurs.
l’ordre
des
données
S’il y a des erreurs dans une requête à la méthode interpolate du service SPINE ou encore si le service
lui-même est en erreur, la propriété status de l’objet ResultSpine pourrait contenir les messages suivants :
Valeur
The forecast web service
unavailable. Please, try later.
Ce que cela signifie :
is
currently
Le service web n’est pas disponible dû à des problèmes
de communication avec sa source de données ou pour un
entretien, veuillez réessayer plus tard.
error, Out of Date Boundary
Les dates sont en dehors des limites temporelles.
error, Out of Spatial Boundary
Les coordonnées géographiques sont en dehors des
limites spatiales.
error, Wrong date format
La date entrée est invalide. Le format requis est le yyyyMM-dd HH:mm:ss en UTC.
Finalement, les données DataSpine du service SPINE pourraient avoir comme valeur le message suivant :
error, The geographic coordinate must be
closer to the center of the St. Lawrence river.
Service hydrographique du Canada
Les coordonnées géographiques sont dans les bornes
spatiales mais trop loin du chenal du fleuve Saint-Laurent.
Page 14 sur 14