Les ressources¶
Pour pouvoir utiliser l’API REST Altimétrie, au moins une ressource doit être disponible.
Les ressources sont ajoutées et stockées dans l’entrepôt de l’IGN.
La documentation de l’API Entrepôt est accessible à l’adresse suivante : https://geoplateforme.pages.gpf-tech.ign.fr/gpf-warehouse-initial-swagger/
JSON Schéma de la ressource dans l’API¶
La configuration d’une ressource au format JSON Schéma est actuellement la suivante dans l’entrepôt :
{
title* string
abstract* string
keywords [string]
bbox {
east* number($double)
north* number($double)
west* number($double)
south* number($double)
}
used_data* [{
stored_data* string($uuid)
title* string
bbox {
east* number($double)
north* number($double)
west* number($double)
south* number($double)
}
source* {
oneOf ->
{
value* string
}
{
stored_data* string($uuid)
mapping* {string : string}
}
}
accuracy* {
oneOf ->
{
value* string
}
{
stored_data* string($uuid)
mapping* {string : string}
}
}
}]
}
Chaque ressource est associée à une ou plusieurs pyramides (propriété used_data
).
Chaque pyramide est associée à une source de données Rok4, une source
et à une accuracy
.
Un agent de publication est à l’écoute de l’entrepôt grâce à la technologie RabbitMQ. Lorsqu’une ressource est ajoutée, mise à jour, supprimée de l’entrepôt, un message est envoyé à l’agent de publication qui à son tour va faire des appels à l’API pour faire suivre les changements et mettre à jour les ressources disponibles. Ces routes permettant la mise à jour des ressources ne sont pas consultables depuis la documentation Swagger.
Les ressources chargées dans l’API sont stockées dans une base SQLite
locale. Ce mode de fonctionnement nous permet de supporter le multithreading via l’option --workers
de uvicorn
: toutes les instances de l’API créées localement par uvicorn
partagent ainsi la même soure de donnée.
Vous avez également la possibilité de publier une ressource.
Publier une ressource dans l’entrepôt pour qu’elle soit utilisable par l’API¶
Pour pouvoir ajouter une ressource, veuillez suivre la procédure suivante qui suit. Nous allons utiliser plusieurs endpoints de l’entrepôt.
Dans les urls ci-dessous, les éléments entre {}
sont des noms de variable à adapter.
Livraisons et vérifications¶
Déclarer une nouvelle livraison¶
(POST) /datastores/{datastore}/uploads
Exemple de valeur de variables :
datastore
: d68295f1-75f6-422c-9226-7fa03f36ab99
Exemple de body
{
"description": "rgealti test 14",
"name": "rgealti 14 test",
"type": "RASTER",
"srs": "EPSG:2154",
"type_infos": {}
}
Téléverser un fichier de données¶
(POST) /datastores/{datastore}/uploads/{upload}/data
Exemple de valeur de variables :
datastore
: d68295f1-75f6-422c-9226-7fa03f36ab99upload
: celui retourné par l’étape précédentepath
: telechargement-qlf
Demander la fermeture d’une livraison¶
(POST) /datastores/{datastore}/uploads/{upload}/close
Vérifier le statut de la livraison¶
(GET) /datastores/{datastore}/uploads/{upload}/checks
Traitements et gestion des traitements de l’entrepôt¶
Créer une nouvelle exécution d’un traitement¶
(POST) /datastores/{datastore}/processings/executions
Exemple de body :
{
"processing": "af022611-13eb-4a18-8d04-9b7604a031cc",
"inputs": {
"upload": [
"f918ffea-5c7f-486f-9bc2-a240a5c6e1e7"
]
},
"output": {
"stored_data": {
"name": "rgealti_14_sbe"
}
},
"parameters": {
"compression": "zip",
"tms": "PM",
"top": "0",
"bottom": "<AUTO>"
}
}
Note: le numero du processing correspond aux pyramides rok4
Retourne un ID d’éxécution (tout en bas du json retourné)
Lancement de l’exécution d’un traitement¶
(POST) /datastores/{datastore}/processings/executions/{execution}/launch,
Récupération de l’id de la pyramide (stored_data) si besoin¶
(GET) /datastores/{datastore}/processings/executions/{execution}
Configurations et publications - Gestion des configurations sur la plateforme¶
Créer une nouvelle configuration¶
(POST) /datastores/{datastore}/configurations
{
"type": "ALTIMETRY",
"name": "RGE Alti - Calvados - 8 bits",
"layer_name": "rge_alti_14_test_sbe",
"type_infos": {
"title": "RGE Alti - Calvados échantillon - 8 bits",
"abstract": "RGE Alti - Calvados échantillon - 8 bits",
"keywords": [
"NL",
"ALTI"
],
"bbox": {
"west": -1.1923,
"south": 48.7882,
"east": -1.1262,
"north": 48.8464
},
"used_data": [
{
"title": "RGE Alti 1 m : CAPA",
"stored_data": "fc3b31ad-bfe3-40f3-a073-4b6b20491d32",
"bbox": {
"west": -1.1923,
"south": 48.7882,
"east": -1.1262,
"north": 48.8464
},
"source": {
"stored_data": "fc3b31ad-bfe3-40f3-a073-4b6b20491d32",
"mapping": {
"0": "Autre - Pas de données",
"2": "Autre - Raccord aux dépens du LiDAR",
"3": "Autre - Raccord aux dépens de la Corrélation",
"4": "Autre - Raccord aux dépens du RADAR",
"28": "LiDAR mixte Bathy SHOM",
"29": "LiDAR mixte BAthy SHOM interpolation > 10 m",
"30": "LiDAR Bathy SHOM",
"39": "LiDAR Bathy SHOM interpolation > 10m",
"40": "SMF SHOM",
"49": "SMF SHOM interpolation > 10 m"
}
},
"accuracy": {
"stored_data": "fc3b31ad-bfe3-40f3-a073-4b6b20491d32",
"mapping": {
"1": "1"
}
}
}
]
}
}
Cette opération retourne un json avec un id qui sert pour l’étape suivante.
Demande la publication¶
(POST) /datastores/{datastore}/configurations/{configuration}/offerings
configuration: id donné à l’étape précédente
Exemple de body :
{
"visibility": "PUBLIC",
"endpoint": "6aec0a87-933e-4728-86ae-bf9a22efdb97",
"permissions": [],
"open": true
}
Note: le endpoint est un id fixé (attribué par WorldLine au moment de nos essais).
Pour vérifier la publication et la mise à disposition de la ressource, des routes dédiées ont été créées.