Skip to content

Commit

Permalink
Mise en fonction de la compilation de l'image rok4/pytools
Browse files Browse the repository at this point in the history
  • Loading branch information
Dolite committed Apr 30, 2024
1 parent f748bdb commit e89d076
Show file tree
Hide file tree
Showing 6 changed files with 156 additions and 10 deletions.
50 changes: 50 additions & 0 deletions .github/workflows/pytools-docker.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: Build and publish python tools Docker image

on:
workflow_dispatch:
inputs:
pytools_tag:
description: 'Python tools tagged version'
required: true
tilematrixsets_tag:
description: 'Tile matrix sets tagged version'
required: true
default: '4.3'

jobs:
push_to_registry:
name: Push Docker image to Docker Hub
runs-on: ubuntu-latest
steps:
- name: Check out the repo
uses: actions/checkout@v3

- name: Log in to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2

- name: Build and push Docker image
uses: docker/build-push-action@v3
with:
context: build/pytools/
push: true
file: build/pytools/debian11.Dockerfile
tags: |
rok4/pytools:${{ github.event.inputs.pytools_tag }}
build-args: |
ROK4TILEMATRIXSETS_VERSION=${{ github.event.inputs.tilematrixsets_tag }}
ROK4PYTOOLS_VERSION=${{ github.event.inputs.pytools_tag }}
- name: Docker Hub Description
uses: peter-evans/dockerhub-description@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}
repository: rok4/pytools
short-description: 'Outils python de gestion du projet ROK4 : conversions, calcul de statistiques...'
readme-filepath: build/pytools/README.md
2 changes: 1 addition & 1 deletion build/fullgeneration/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
Cette image contient tous les outils de traitement et de gestion des pyramides de données, c'est à dire :

* les outil permettant d'écrire les scripts de génération ou de modification de pyramide ROK4 raster et vecteur. Ces outils font partie du projet, la documentation complète est disponible [ici](https://github.com/rok4/pregeneration), avec le code source.
* les outils permettant la manipulation des données images (reprojection, réechantillonnage, superposition...) ainsi que la mise au format final des données (écriture des dalles des pyramides ROK4). Ces outils font partie du projet, la documentation complète est disponible [ici](https://github.com/rok4/generation), avec le code source.
* les outils permettant la manipulation des données images (reprojection, réechantillonnage, superposition...) ainsi que la mise au format final des données (écriture des dalles des pyramides ROK4). Ces outils font partie du projet, la documentation complète est disponible [ici](https://rok4.github.io/generation).
* les outils facilitant la gestion des pyramides (suppression, statistiques), la création de descripteur de couche par défaut, ainsi qu'un outil de conversion basé sur les TMS. Ces outils font partie du projet, la documentation complète est disponible [ici](https://github.com/rok4/tools), avec le code source.
* l'outil [tippecanoe](https://github.com/mapbox/tippecanoe), permettant le calcul des tuiles vectorielles
* la suite d'outil GDAL, permettant l'extraction des données vecteur
Expand Down
2 changes: 1 addition & 1 deletion build/generation/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Cette image contient tous les binaires permettant d'exécuter les scripts générés par les outils de pré-génération, c'est à dire :

* les outils permettant la manipulation des données images (reprojection, réechantillonnage, superposition...) ainsi que la mise au format final des données (écriture des dalles des pyramides ROK4). Ces outils font partie du projet, la documentation complète est disponible [ici](https://github.com/rok4/generation), avec le code source.
* les outils permettant la manipulation des données images (reprojection, réechantillonnage, superposition...) ainsi que la mise au format final des données (écriture des dalles des pyramides ROK4). Ces outils font partie du projet, la documentation complète est disponible [ici](https://rok4.github.io/generation).
* l'outil [tippecanoe](https://github.com/mapbox/tippecanoe), permettant le calcul des tuiles vectorielles
* la suite d'outil GDAL, permettant l'extraction des données vecteur

Expand Down
98 changes: 98 additions & 0 deletions build/pytools/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
# Outils python de gestion du projet ROK4 conteneurisés

Cette suite d'outil facilite la gestion des pyramides (conversions, statistiques), la création de descripteur de couche par défaut, ainsi qu'un outil de conversion basé sur les TMS.

La documentation complète est disponible [ici](https://rok4.github.io/pytools).

## PYR2PYR

PYR2PYR est un outil de copie d'une pyramide d'un stockage à un autre. Il est possible de filtrer les dalles transférée en précisant une taille limite sous laquelle les données ne sont pas recopiées. La copie des dalles est parallélisable. Si des signatures MD5 sont présente dans le fichier liste, elles sont contrôlées après recopie.

Un exemple de configuration est affichable avec la commande `pyr2pyr --role example` et l'appel `pyr2pyr --role check --conf conf.json` permet de valider un fichier de configuration. Le fichier de configuration peut être un objet, auquel cas le chemin doit être préfixé par le type de stockage (exemple : `s3://bucket/configuration.json`)

Exemple d'appel :

```bash
docker run --rm \
-e ROK4_S3_SECRETKEY=rok4S3storage \
-e ROK4_S3_KEY=rok4 \
-e ROK4_S3_URL=http://storage:9000 \
-v ./input:/input
rok4/tools \
rok4/pytools \
pyr2pyr --role master --conf s3://configurations/pyr2pyr.json
```

Documentation complète de l'outil [ici](https://rok4.github.io/pytools/latest/#pyr2pyr).

### JOINCACHE

L'outil JOINCACHE génèrent une pyramide raster à partir d'autres pyramide raster compatibles (même TMS, dalles de même dimensions, canaux au même format). La composition se fait verticalement (choix des pyramides sources par niveau) et horizontalement (choix des pyramides source par zone au sein d'un niveau).

Un exemple de configuration est affichable avec la commande `joincache --role example` et l'appel `joincache --role check --conf conf.json` permet de valider un fichier de configuration. Le fichier de configuration peut être un objet, auquel cas le chemin doit être préfixé par le type de stockage (exemple : `s3://bucket/configuration.json`)

Exemple d'appel :

```bash
docker run --rm \
-e ROK4_S3_SECRETKEY=rok4S3storage \
-e ROK4_S3_KEY=rok4 \
-e ROK4_S3_URL=http://storage:9000 \
rok4/pytools \
joincache --role agent --split 1 --conf s3://configurations/joincache.json
```

Documentation complète de l'outil [ici](https://rok4.github.io/pytools/latest/#joincache).

### MAKE-LAYER

MAKE-LAYER est un outil générant un descripteur de couche compatible avec le serveur à partir des pyramides de données à utiliser

Exemple d'appel :

```bash
docker run --rm \
-e ROK4_S3_SECRETKEY=rok4S3storage \
-e ROK4_S3_KEY=rok4 \
-e ROK4_S3_URL=http://storage:9000 \
rok4/pytools \
make-layer --pyramids s3://pyramids/data.json --name my_data --title "Titre de ma couche" --directory s3://layers/
```

Documentation complète de l'outil [ici](https://rok4.github.io/pytools/latest/#make-layer).

### PYROLYSE

PYROLYSE est un outil d'analyse d'une pyramide, permettant d'avoir le nombre et la taille des dalles et tuiles, au global et par niveau. Les tailles des dalles et des tuiles ne sont pas toutes récupérées : un ratio permet de définir le nombre de mesures (un ratio de 100 entraînera la récupération de la taille d'une dalle sur 100 et d'une de ses tuile). Ce ratio s'applique par niveau (pour ne pas avoir que des données sur le meilleur niveau, celui qui contient le plus de dalles). Lorsque les statistiques sur les tuiles sont activées, on mesure le temps de lecture du header.

Concernant les tailles et les temps d'accès, il est possible de demander le calcul des déciles plutôt que de garder toutes les valeurs.

Exemple d'appel :

```bash
docker run --rm \
-e ROK4_S3_SECRETKEY=rok4S3storage \
-e ROK4_S3_KEY=rok4 \
-e ROK4_S3_URL=http://storage:9000 \
-v $PWD/output:/output \
rok4/pytools \
pyrolyse --pyramid s3://pyramids/data.json --tiles --progress --ratio 10 --json /output/stats.json
```

Documentation complète de l'outil [ici](https://rok4.github.io/pytools/latest/#pyrolyse).

### TMSIZER

TMSIZER est un outil permettant de convertir des informations selon différents formats en accord avec un Tile Matrix Set en particulier. Les données en entrée peuvent être lues depuis un fichier, un objet ou l'entrée standard. Les données en sortie peuvent être écrites dans un fichier, un objet ou la sortie standard.

Exemple d'appel :

```bash
docker run --rm \
-v $PWD/input:/input:ro \
-v $PWD/output:/output \
rok4/pytools \
tmsizer -i /input/logs.txt --tms PM -io level=15 -if GETTILE_PARAMS -of HEATMAP -oo bbox=65000,6100000,665000,6500000 -oo dimensions=600x400 -o /output/heatmap.tif
```

Documentation complète de l'outil [ici](https://rok4.github.io/pytools/latest/#tmsizer).
7 changes: 3 additions & 4 deletions build/pytools/debian11.Dockerfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM python:3.10-slim-bullseye

RUN apt update && apt -y install python3-gdal python3-rados curl
RUN apt update && apt -y install gdal-bin libgdal-dev curl g++

ARG ROK4TILEMATRIXSETS_VERSION=4.3
ENV ROK4TILEMATRIXSETS_VERSION=$ROK4TILEMATRIXSETS_VERSION
Expand All @@ -11,8 +11,7 @@ ARG ROK4PYTOOLS_VERSION
ENV ROK4PYTOOLS_VERSION=$ROK4PYTOOLS_VERSION

WORKDIR /home
RUN python3 -m venv .venv && . .venv/bin/activate && pip install rok4-tools==$ROK4PYTOOLS_VERSION
# RUN pip install rok4-tools==$ROK4PYTOOLS_VERSION
RUN echo "/usr/lib/python3/dist-packages/" >>.venv/lib/python3.10/site-packages/system.pth
RUN pip install rok4-tools==$ROK4PYTOOLS_VERSION
RUN pip install GDAL=="$(gdal-config --version).*" && pip install gdal[numpy]=="$(gdal-config --version).*"

CMD echo "ROK4:\n\t- pytools: $ROK4PYTOOLS_VERSION\n\t- tile matrix sets: $ROK4TILEMATRIXSETS_VERSION"
7 changes: 3 additions & 4 deletions run/server/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,10 @@

Le serveur permet la diffusion des données conditionnées sous forme de pyramide raster ou vecteur selon les protocoles Web Map Service, Web Map Tiled Service et Tile Map Service

La documentation complète est disponible [ici](https://github.com/rok4/server), avec le code source.
La documentation complète est disponible [ici](https://rok4.github.io/server).

## Lancement rapide


### Version 4+

```
Expand All @@ -16,7 +15,7 @@ docker run --publish 9000:9000 rok4/server:4.1.0
### Version 5+

```
docker run --publish 9000:9000 -e SERVER_LOGOUTPUT=standard_output rok4/server:5.0.1
docker run --publish 9000:9000 -e SERVER_LOGOUTPUT=standard_output rok4/server:5.5.0
```

## Configuration personnalisée
Expand Down Expand Up @@ -207,7 +206,7 @@ services:
- ./nginx.conf:/etc/nginx/conf.d/default.conf

middle:
image: rok4/server:5.0.4
image: rok4/server:5.5.0
depends_on:
- storage
environment:
Expand Down

0 comments on commit e89d076

Please sign in to comment.