Skip to content

Commit

Permalink
Merge pull request #219 from Geoplateforme/dev_exec
Browse files Browse the repository at this point in the history
Dev exec
  • Loading branch information
vsasyan-ignf authored Feb 11, 2025
2 parents 621444f + 1e19e66 commit 0c3a8c0
Show file tree
Hide file tree
Showing 59 changed files with 1,972 additions and 1,099 deletions.
4 changes: 3 additions & 1 deletion .github/workflows/code-quality.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@ jobs:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
pip install --upgrade pip setuptools flit
pip install --upgrade pip
pip install --upgrade setuptools
pip install --upgrade flit
flit install --extras test
- name: "Analyse code with black"
run: black --diff --check sdk_entrepot_gpf tests
Expand Down
1 change: 1 addition & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
"dépubliée",
"dépubliées",
"dépublier",
"egpf",
"EPSG",
"fontawesome",
"Géoplateforme",
Expand Down
16 changes: 16 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,24 @@

### [Added]

* Ajout d'un jeu de données raster d'exemple (`3_dataset_raster`).

### [Changed]

* Modification du nom du traitement raster dans le workflow exemple.
* Possibilité d'appeler le programme via des executables : `egpf` (ou `entrepot_gpf`)
* Possibilité d'observer les différentes vérifications sur une livraison (action `--check`)
* Possibilités de supprimer des fichiers d'une la livraison (action `--deletes-files FILE [FILE]`)
* Possibilités de supprimer automatiquement les fichiers ayant produit une erreur lors de la livraison (action `--delete-failed-files`)
* StoreEntity : nomenclatures des entités au pluriel (`entity_titles`)
* StoreEntity : liste des champs à récupérer en mode liste pour chaque entités (`_entity_fields`)

### [Changed]

* UploadAction : correction message fichier distant non trouvé en local
* Couverture des tests : on masque les fichiers couverts à 100%
* Réorganisation des appels du cli.

### [Fixed]


Expand Down
2 changes: 1 addition & 1 deletion check.sh
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ echo
# Lancement des tests et vérification de la couverture
coverage run -m unittest discover -b -p *TestCase.py
code+=$?
coverage report -m --fail-under=75
coverage report -m --skip-covered --fail-under=75
code+=$?
coverage html

Expand Down
46 changes: 21 additions & 25 deletions docs/tutoriel_3_flux_raster.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,33 +12,29 @@ Suivez la page [configuration](configuration.md) pour définir le fichier de con

## Récupération du jeu de données

Le jeu de données « 1_dataset_raster » contient des données raster à téléverser.
Le jeu de données « 3_dataset_raster » contient des données raster à téléverser.

Récupérez les données en lançant la commande :

```sh
python -m sdk_entrepot_gpf dataset -n 4_dataset_raster_gpf
python -m sdk_entrepot_gpf dataset -n 3_dataset_raster
```

Observez la structure du fichier :

```text
4_dataset_raster_gpf/
├── test
│ ├── 977-2018-0510-1979-U20N-0M50-E100.jp2
│ ├── 977-2018-0510-1979-U20N-0M50-E100.tab
│ ├── 977-2018-0510-1980-U20N-0M50-E100.jp2
│ ├── 977-2018-0510-1980-U20N-0M50-E100.tab
│ ├── 977-2018-0510-1981-U20N-0M50-E100.jp2
│ ├── 977-2018-0510-1981-U20N-0M50-E100.tab
│ ├── 977-2018-0510-1982-U20N-0M50-E100.jp2
│ └── 977-2018-0510-1982-U20N-0M50-E100.tab
├── test.md5
3_dataset_raster/
├── ain
│ ├── 01-2021-0920-6564-LA93-0M50-E100.tiff
│ ├── 01-2021-0920-6565-LA93-0M50-E100.tiff
│ ├── 01-2021-0921-6564-LA93-0M50-E100.tiff
│ └── 01-2021-0921-6565-LA93-0M50-E100.tiff
└── ain.md5
└── upload_descriptor.jsonc
```

Les données que la Géoplateforme va traiter sont situées dans le dossier `test`.
Le fichier `test.md5` permettra de valider les données téléversées côté Géoplateforme.
Les données que la Géoplateforme va traiter sont situées dans le dossier `ain`.
Le fichier `ain.md5` permettra de valider les données téléversées côté Géoplateforme.

Enfin, le fichier `upload_descriptor.json` permet de décrire la livraison à effectuer.

Expand All @@ -59,7 +55,7 @@ Chaque dataset contient :
Livrez les données en indiquant le chemin du fichier descripteur au programme :

```sh
python -m sdk_entrepot_gpf upload -f 4_dataset_raster_gpf/upload_descriptor.jsonc
python -m sdk_entrepot_gpf upload -f 3_dataset_raster/upload_descriptor.jsonc
```

Le programme doit vous indiquer que le transfert est en cours, puis qu'il attend la fin des vérification côté API avant de conclure que tout est bon. (Memo : cette partie est assez longue du à des problèmes de performance côté back. Le problème a déjà été remonté.)
Expand All @@ -80,13 +76,13 @@ Ouvrez le fichier. Vous trouverez plus de détails dans la [documentation sur le

```mermaid
---
title: Workflow de publication de données Raster en WMS et WMST
title: Workflow de publication de données Raster en WMS et WMTS
---
%% doc mermaid ici https://mermaid-js.github.io/mermaid/#/flowchart?id=flowcharts-basic-syntax
flowchart TD
A("upload") -->|pyramide| B("pyramide raster")
B -->|configuration-WMST| C("configuration WMST")
C -->|publication-WMST| D("offre WMST")
B -->|configuration-WMTS| C("configuration WMTS")
C -->|publication-WMTS| D("offre WMTS")
B -->|configuration-WMS| E("configuration WMS")
E -->|publication-WMS| F("offre WMS")
```
Expand All @@ -96,21 +92,21 @@ flowchart TD
Le workflow « generic_raster » permet de passer de la livraison à un flux WMS servant la donnée. Il comporte les étapes suivantes:

* `pyramide` : création d'une pyramide avec les données téléversées
* `configuration-WMST` : configuration d'un service de flux WMST à partir de la pyramide ;
* `publication-WMST` : publication du service de flux WMST sur le bon endpoint.
* `configuration-WMTS` : configuration d'un service de flux WMTS à partir de la pyramide ;
* `publication-WMTS` : publication du service de flux WMTS sur le bon endpoint.
* `configuration-WMS` : configuration d'un service de flux WMS à partir de la pyramide ;
* `publication-WMS` : publication du service de flux WMS sur le bon endpoint.

La partie WMST et WMS sont indépendantes : elles peuvent être traitées en parallèle ou dans n'importe quel sens.
La partie WMTS et WMS sont indépendantes : elles peuvent être traitées en parallèle ou dans n'importe quel sens.

Les commandes à lancer sont les suivantes :

```sh
# partie création de la pyramide
python -m sdk_entrepot_gpf workflow -f generic_raster.jsonc -s pyramide
# partie publication WMST
python -m sdk_entrepot_gpf workflow -f generic_raster.jsonc -s configuration-WMST
python -m sdk_entrepot_gpf workflow -f generic_raster.jsonc -s publication-WMST
# partie publication WMTS
python -m sdk_entrepot_gpf workflow -f generic_raster.jsonc -s configuration-WMTS
python -m sdk_entrepot_gpf workflow -f generic_raster.jsonc -s publication-WMTS
# partie publication WMS
python -m sdk_entrepot_gpf workflow -f generic_raster.jsonc -s configuration-WMS
python -m sdk_entrepot_gpf workflow -f generic_raster.jsonc -s publication-WMS
Expand Down
14 changes: 7 additions & 7 deletions docs/tutoriel_pcrs.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ Pour cela, vous devez téléverser des dalles « PCRS » qui permettront de cré
Voici les prérequis pour suivre ce tutoriel :

* vous devez disposer d'un compte Géoplateforme (création en suivant ce [tuto](https://geoplateforme.github.io/tutoriels/production/controle-des-acces/entrepot/creation_compte/) ou sur [cartes.gouv](https://cartes.gouv.fr/))
* vous devez disposer d'un datastore (pour sa création, vous pouvez contacter [email protected] ou faire une demande [ici](https://cartes.gouv.fr/entrepot/demande-de-creation) en précisant votre établissement, qu'il s'agit d'une diffusion partenaire PCRS et votre idenditifiant utilisateur que vous trouver sur votre [espace](https://cartes.gouv.fr/mon-compte))
* vous devez disposer d'un datastore (pour sa création, vous pouvez contacter [email protected] ou faire une demande [ici](https://cartes.gouv.fr/entrepot/demande-de-creation) en précisant votre établissement, qu'il s'agit d'une diffusion partenaire PCRS et votre identifiant utilisateur que vous trouver sur votre [espace](https://cartes.gouv.fr/mon-compte))
* vous devez avoir installé python et le module [SDK](index.md)

Vous allez avoir besoin de 3 fichiers pour réaliser le tutoriel dont le contenu va être détaillé :
Expand Down Expand Up @@ -66,7 +66,7 @@ Il peut être nécessaire de rajouter certains paramètres pour que cela fonctio

## Fichier descripteur de livraison

Vous allez devoir créer un fichier `PCRS_descriptor.json` à la racine de votre projet avec les inforamtions suivantes :
Vous allez devoir créer un fichier `PCRS_descriptor.json` à la racine de votre projet avec les informations suivantes :

```text
{
Expand Down Expand Up @@ -107,7 +107,7 @@ $votre_chantier_PCRS/
Vous pouvez maintenant effectuer la livraison en lançant la commande depuis la racine de votre projet ou en indiquant le chemin du fichier descripteur au programme :

```sh
python3 -m sdk_entrepot_gpf upload -f ./PCRS_descriptor.jsonc
python3 -m sdk_entrepot_gpf delivery PCRS_descriptor.jsonc
```

Le programme doit vous indiquer que le transfert est en cours, puis qu'il attend la fin des vérification côté API avant de conclure que tout est bon `INFO - BILAN : les 1 livraisons se sont bien passées` (cela peut être long selon la taille de la livraison et la qualité de votre connexion, ne fermez pas votre terminal pendant ce temps).
Expand All @@ -121,7 +121,7 @@ Ces étapes sont décrites grâces à un workflow.
Vous pouvez récupérer le template du workflow grâce à la commande suivante :

```sh
python3 -m sdk_entrepot_gpf workflow -n PCRS.jsonc
python3 -m sdk_entrepot_gpf example workflow PCRS.jsonc
```

Pour plus de détails, consultez la [documentation sur les workflows](workflow.md).
Expand All @@ -132,9 +132,9 @@ Les commandes à lancer sont les suivantes :

```sh
# partie génération de la pyramide
python3 -m sdk_entrepot_gpf workflow -f generic_raster.jsonc -s pyramide --param producteur=$votre_chantier_PCRS
python3 -m sdk_entrepot_gpf workflow -f generic_raster.jsonc -s pyramide --param producteur $votre_chantier_PCRS
# partie publication
python3 -m sdk_entrepot_gpf workflow -f generic_raster.jsonc -s publication --param producteur=$votre_chantier_PCRS
python3 -m sdk_entrepot_gpf workflow -f generic_raster.jsonc -s publication --param producteur $votre_chantier_PCRS
```

La première commande peut être longue selon le nombre de dalles livrées. Des logs doivent vous être remontés et se terminer par :
Expand All @@ -149,4 +149,4 @@ Avec la deuxième commande, deux offres (une WMTS et une WMSRaster) devraient ê
INFO - Offre créée : Offering(id=********, layer_name=$votre_chantier_PCRS)
```

Vous pouvez maintenant retrouver vos données dans cartes.gouv (https://cartes.gouv.fr/entrepot/$id_datastore/donnees/$votre_chantier_PCRS) ou les visionner dans un SIG comme QGIS en renseignant les urls des GetCapabilities des services ([WMTS](https://data.geopf.fr/wmts?service=WMTS&request=GetCapabilities) et [WMSRaster](https://data.geopf.fr/wms-r?)).
Vous pouvez maintenant retrouver vos données dans cartes.gouv (https://cartes.gouv.fr/entrepot/$id_datastore/donnees/$votre_chantier_PCRS) ou les visionner dans un SIG comme QGIS en renseignant les urls des GetCapabilities des services ([WMTS](https://data.geopf.fr/wmts?service=WMTS&request=GetCapabilities) et [WMSRaster](https://data.geopf.fr/wms-r?)).
5 changes: 4 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ dependencies = [
"types-python-dateutil",
"pyotp",
"requests_toolbelt",
"tabulate",
"types-tabulate",
]

[project.optional-dependencies]
Expand All @@ -50,7 +52,8 @@ Source = "https://github.com/Geoplateforme/sdk_entrepot"
Documentation = "https://geoplateforme.github.io/sdk-entrepot/"

[project.scripts]
realpython = "sdk_entrepot_gpf.__main__:main"
entrepot_gpf = "sdk_entrepot_gpf.scripts.main:main"
egpf = "sdk_entrepot_gpf.scripts.main:main"

[tool.black]
line-length = 200
Expand Down
Loading

0 comments on commit 0c3a8c0

Please sign in to comment.