mirror of
https://github.com/Alex38Lyon/Synthese-PSM_LARRA.git
synced 2026-09-30 15:31:55 +00:00
Updated comments and error messages in the GDAL installation script to improve clarity and consistency. Adjusted the structure of the script for better readability.
623 lines
14 KiB
YAML
623 lines
14 KiB
YAML
name: pyThtoQgis
|
|
|
|
on:
|
|
|
|
push:
|
|
branches:
|
|
- main
|
|
|
|
paths:
|
|
- 'Outputs/SHP/*.shp'
|
|
|
|
workflow_dispatch:
|
|
|
|
|
|
permissions:
|
|
contents: write
|
|
|
|
|
|
concurrency:
|
|
group: pyThtoQgis
|
|
cancel-in-progress: false
|
|
|
|
|
|
jobs:
|
|
|
|
pyThtoQgis:
|
|
|
|
runs-on: ubuntu-24.04
|
|
|
|
steps:
|
|
|
|
|
|
# ============================================================
|
|
# 1. Checkout
|
|
# ============================================================
|
|
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v6
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
|
|
# ============================================================
|
|
# 2. Vérification SHP
|
|
# ============================================================
|
|
|
|
- name: Check SHP changes
|
|
id: changed
|
|
shell: bash
|
|
run: |
|
|
|
|
SHP_FILES=$(git diff-tree \
|
|
--no-commit-id \
|
|
--name-only \
|
|
--diff-filter=AM \
|
|
-r \
|
|
"$GITHUB_SHA" \
|
|
-- 'Outputs/SHP/*.shp')
|
|
|
|
|
|
echo "SHP ajoutés/modifiés :"
|
|
|
|
echo "$SHP_FILES"
|
|
|
|
|
|
if [ -n "$SHP_FILES" ]; then
|
|
|
|
echo "shp=true" >> "$GITHUB_OUTPUT"
|
|
|
|
else
|
|
|
|
echo "shp=false" >> "$GITHUB_OUTPUT"
|
|
|
|
fi
|
|
|
|
|
|
# ============================================================
|
|
# 3. Arrêt si suppression uniquement
|
|
# ============================================================
|
|
|
|
- name: Stop if no SHP added or modified
|
|
if: steps.changed.outputs.shp != 'true'
|
|
shell: bash
|
|
run: |
|
|
|
|
echo "Aucun SHP ajouté ou modifié."
|
|
echo "Arrêt du workflow."
|
|
|
|
|
|
# ============================================================
|
|
# 4. Micromamba
|
|
#
|
|
# IMPORTANT :
|
|
# PAS de GDAL ici.
|
|
#
|
|
# GDAL sera fourni par notre package précompilé.
|
|
# ============================================================
|
|
|
|
- name: Setup Micromamba
|
|
if: steps.changed.outputs.shp == 'true'
|
|
uses: mamba-org/setup-micromamba@v3.2.1
|
|
with:
|
|
|
|
environment-name: pyThtoQgis
|
|
|
|
create-args: >-
|
|
python=3.12
|
|
numpy
|
|
sfcgal=2.2
|
|
geos
|
|
proj
|
|
sqlite
|
|
libtiff
|
|
libjpeg-turbo
|
|
libpng
|
|
zlib
|
|
curl
|
|
openssl
|
|
|
|
init-shell: bash
|
|
|
|
cache-environment: true
|
|
cache-downloads: true
|
|
|
|
|
|
# ============================================================
|
|
# 5. Informations environnement
|
|
# ============================================================
|
|
|
|
- name: Environment information
|
|
if: steps.changed.outputs.shp == 'true'
|
|
shell: bash -el {0}
|
|
run: |
|
|
|
|
echo "========================================"
|
|
echo "ENVIRONMENT"
|
|
echo "========================================"
|
|
|
|
echo "CONDA_PREFIX=$CONDA_PREFIX"
|
|
|
|
python --version
|
|
|
|
echo ""
|
|
|
|
conda list | grep -E \
|
|
"python|numpy|sfcgal|geos|proj|sqlite"
|
|
|
|
|
|
# ============================================================
|
|
# 6. Téléchargement package GDAL
|
|
# ============================================================
|
|
|
|
- name: Download GDAL + SFCGAL package
|
|
if: steps.changed.outputs.shp == 'true'
|
|
shell: bash -el {0}
|
|
env:
|
|
GH_TOKEN: ${{ github.token }}
|
|
run: |
|
|
|
|
set -e
|
|
|
|
GDAL_VERSION=3.13.3
|
|
|
|
PACKAGE_NAME="gdal-${GDAL_VERSION}-sfcgal-2.2-geos-3.14.1-ubuntu-24.04"
|
|
|
|
TAG="gdal-sfcgal-${GDAL_VERSION}"
|
|
|
|
|
|
echo "========================================"
|
|
echo "GDAL PACKAGE"
|
|
echo "========================================"
|
|
|
|
echo "Release : $TAG"
|
|
|
|
echo "Package : $PACKAGE_NAME"
|
|
|
|
|
|
gh release download "$TAG" \
|
|
--repo "$GITHUB_REPOSITORY" \
|
|
--pattern "${PACKAGE_NAME}.tar.gz" \
|
|
--dir "$RUNNER_TEMP"
|
|
|
|
|
|
echo ""
|
|
echo "Package téléchargé :"
|
|
|
|
ls -lh \
|
|
"$RUNNER_TEMP/${PACKAGE_NAME}.tar.gz"
|
|
|
|
# ============================================================
|
|
# 7. Installation package GDAL
|
|
# ============================================================
|
|
|
|
- name: Installation GDAL package
|
|
if: steps.changed.outputs.shp == 'true'
|
|
shell: bash -el {0}
|
|
run: |
|
|
|
|
set -e
|
|
|
|
GDAL_VERSION=3.13.3
|
|
|
|
PACKAGE_NAME="gdal-${GDAL_VERSION}-sfcgal-2.2-geos-3.14.1-ubuntu-24.04"
|
|
|
|
PACKAGE="$RUNNER_TEMP/${PACKAGE_NAME}.tar.gz"
|
|
|
|
EXTRACT_DIR="$RUNNER_TEMP/gdal-extract"
|
|
|
|
|
|
echo "========================================"
|
|
echo "INSTALLATION GDAL"
|
|
echo "========================================"
|
|
|
|
|
|
# ========================================================
|
|
# Vérification du package
|
|
# ========================================================
|
|
|
|
if [ ! -f "$PACKAGE" ]; then
|
|
|
|
echo "ERREUR : package introuvable :"
|
|
echo "$PACKAGE"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
# ========================================================
|
|
# Extraction
|
|
# ========================================================
|
|
|
|
rm -rf "$EXTRACT_DIR"
|
|
|
|
mkdir -p "$EXTRACT_DIR"
|
|
|
|
tar \
|
|
-xzf \
|
|
"$PACKAGE" \
|
|
-C "$EXTRACT_DIR"
|
|
|
|
|
|
# ========================================================
|
|
# Affichage STRUCTURE REELLE
|
|
# ========================================================
|
|
|
|
echo ""
|
|
echo "========================================"
|
|
echo "STRUCTURE DU PACKAGE"
|
|
echo "========================================"
|
|
|
|
find "$EXTRACT_DIR" \
|
|
-maxdepth 6 \
|
|
-print \
|
|
| sort
|
|
|
|
|
|
# ========================================================
|
|
# Répertoire racine
|
|
# ========================================================
|
|
|
|
GDAL_DIR="$EXTRACT_DIR/$PACKAGE_NAME"
|
|
|
|
|
|
if [ ! -d "$GDAL_DIR" ]; then
|
|
|
|
echo ""
|
|
echo "ERREUR : répertoire package absent :"
|
|
echo "$GDAL_DIR"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
echo ""
|
|
echo "GDAL_DIR :"
|
|
echo "$GDAL_DIR"
|
|
|
|
|
|
# ========================================================
|
|
# Vérification structure attendue
|
|
# ========================================================
|
|
|
|
echo ""
|
|
echo "========================================"
|
|
echo "VERIFICATION"
|
|
echo "========================================"
|
|
|
|
|
|
if [ ! -d "$GDAL_DIR/bin" ]; then
|
|
|
|
echo "ERREUR : bin/ absent"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
if [ ! -d "$GDAL_DIR/lib" ]; then
|
|
|
|
echo "ERREUR : lib/ absent"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
# ========================================================
|
|
# Installation BIN
|
|
# ========================================================
|
|
|
|
echo ""
|
|
echo "Installation bin/..."
|
|
|
|
cp -av \
|
|
"$GDAL_DIR/bin/." \
|
|
"$CONDA_PREFIX/bin/"
|
|
|
|
|
|
# ========================================================
|
|
# Installation LIB
|
|
# ========================================================
|
|
|
|
echo ""
|
|
echo "Installation lib/..."
|
|
|
|
cp -av \
|
|
"$GDAL_DIR/lib/." \
|
|
"$CONDA_PREFIX/lib/"
|
|
|
|
|
|
# ========================================================
|
|
# Installation SHARE
|
|
# ========================================================
|
|
|
|
if [ -d "$GDAL_DIR/share" ]; then
|
|
|
|
echo ""
|
|
echo "Installation share/..."
|
|
|
|
cp -av \
|
|
"$GDAL_DIR/share/." \
|
|
"$CONDA_PREFIX/share/"
|
|
|
|
fi
|
|
|
|
|
|
# ========================================================
|
|
# Vérification GDAL
|
|
# ========================================================
|
|
|
|
echo ""
|
|
echo "========================================"
|
|
echo "VERIFICATION GDAL"
|
|
echo "========================================"
|
|
|
|
|
|
echo ""
|
|
echo "gdalinfo :"
|
|
|
|
which gdalinfo
|
|
|
|
gdalinfo --version
|
|
|
|
|
|
echo ""
|
|
echo "GDAL Python :"
|
|
|
|
python - <<'PY'
|
|
|
|
from osgeo import gdal
|
|
from osgeo import ogr
|
|
|
|
print("GDAL :", gdal.VersionInfo("--version"))
|
|
|
|
print("OGR drivers :", ogr.GetDriverCount())
|
|
|
|
PY
|
|
|
|
|
|
echo ""
|
|
echo "========================================"
|
|
echo "GDAL INSTALLE"
|
|
echo "========================================"
|
|
|
|
# ============================================================
|
|
# 8. Vérification GDAL
|
|
# ============================================================
|
|
|
|
- name: Check GDAL
|
|
if: steps.changed.outputs.shp == 'true'
|
|
shell: bash -el {0}
|
|
run: |
|
|
|
|
set -e
|
|
|
|
echo "========================================"
|
|
echo "GDAL"
|
|
echo "========================================"
|
|
|
|
|
|
which gdalinfo
|
|
|
|
gdalinfo --version
|
|
|
|
|
|
echo ""
|
|
echo "Python GDAL :"
|
|
|
|
|
|
python - <<'PY'
|
|
|
|
from osgeo import gdal
|
|
|
|
print(
|
|
gdal.VersionInfo("--version")
|
|
)
|
|
|
|
print()
|
|
|
|
print(
|
|
gdal.VersionInfo("--build-info")
|
|
)
|
|
|
|
PY
|
|
|
|
|
|
# ============================================================
|
|
# 9. Vérification SFCGAL
|
|
# ============================================================
|
|
|
|
- name: Check SFCGAL linkage
|
|
if: steps.changed.outputs.shp == 'true'
|
|
shell: bash -el {0}
|
|
run: |
|
|
|
|
set -e
|
|
|
|
echo "========================================"
|
|
echo "GDAL / SFCGAL"
|
|
echo "========================================"
|
|
|
|
|
|
ldd "$CONDA_PREFIX/lib/libgdal.so" \
|
|
| grep -Ei "sfcgal|geos"
|
|
|
|
|
|
# ============================================================
|
|
# 10. Test SFCGAL
|
|
# ============================================================
|
|
|
|
- name: Test SFCGAL via OGR
|
|
if: steps.changed.outputs.shp == 'true'
|
|
shell: bash -el {0}
|
|
run: |
|
|
|
|
python - <<'PY'
|
|
|
|
from osgeo import ogr
|
|
from osgeo import gdal
|
|
|
|
print("========================================")
|
|
print("TEST SFCGAL")
|
|
print("========================================")
|
|
|
|
print(
|
|
gdal.VersionInfo("--version")
|
|
)
|
|
|
|
|
|
wkt = """
|
|
POLYHEDRALSURFACE Z (
|
|
(
|
|
(0 0 0,
|
|
10 0 0,
|
|
10 10 0,
|
|
0 10 0,
|
|
0 0 0)
|
|
)
|
|
)
|
|
"""
|
|
|
|
|
|
geom = ogr.CreateGeometryFromWkt(wkt)
|
|
|
|
|
|
if geom is None:
|
|
|
|
raise RuntimeError(
|
|
"Impossible de créer la géométrie 3D"
|
|
)
|
|
|
|
|
|
print(
|
|
"Type :",
|
|
geom.GetGeometryName()
|
|
)
|
|
|
|
|
|
print(
|
|
"Geometry type :",
|
|
geom.GetGeometryType()
|
|
)
|
|
|
|
|
|
print(
|
|
"Has Z :",
|
|
ogr.GT_HasZ(
|
|
geom.GetGeometryType()
|
|
)
|
|
)
|
|
|
|
|
|
valid = geom.IsValid()
|
|
|
|
|
|
print(
|
|
"IsValid() :",
|
|
valid
|
|
)
|
|
|
|
|
|
print()
|
|
print(
|
|
"SFCGAL accessible par OGR : OK"
|
|
)
|
|
|
|
PY
|
|
|
|
|
|
# ============================================================
|
|
# 11. Dépendances Python
|
|
# ============================================================
|
|
|
|
- name: Install Python dependencies
|
|
if: steps.changed.outputs.shp == 'true'
|
|
shell: bash -el {0}
|
|
run: |
|
|
|
|
python -m pip install --upgrade pip
|
|
|
|
pip install \
|
|
alive-progress
|
|
|
|
|
|
# ============================================================
|
|
# 12. Affichage des SHP
|
|
# ============================================================
|
|
|
|
- name: List SHP input files
|
|
if: steps.changed.outputs.shp == 'true'
|
|
shell: bash -el {0}
|
|
run: |
|
|
|
|
echo "========================================"
|
|
echo "SHP INPUT"
|
|
echo "========================================"
|
|
|
|
find Outputs/SHP \
|
|
-maxdepth 1 \
|
|
-type f \
|
|
-name "*.shp" \
|
|
-print
|
|
|
|
|
|
# ============================================================
|
|
# 13. Exécution pyThtoQgis
|
|
# ============================================================
|
|
|
|
- name: Run pyThtoQgis
|
|
if: steps.changed.outputs.shp == 'true'
|
|
shell: bash -el {0}
|
|
run: |
|
|
|
|
echo "========================================"
|
|
echo "pyThtoQgis"
|
|
echo "========================================"
|
|
|
|
cd Scripts/pyThtoQgis
|
|
|
|
python pyThtoQgis.py \
|
|
--folder "../../Outputs/SHP/"
|
|
|
|
|
|
# ============================================================
|
|
# 14. Fichiers produits
|
|
# ============================================================
|
|
|
|
- name: Show generated files
|
|
if: steps.changed.outputs.shp == 'true'
|
|
shell: bash
|
|
run: |
|
|
|
|
echo "========================================"
|
|
echo "GENERATED FILES"
|
|
echo "========================================"
|
|
|
|
git status --short
|
|
|
|
echo ""
|
|
|
|
git diff --stat
|
|
|
|
|
|
# ============================================================
|
|
# 15. Commit
|
|
# ============================================================
|
|
|
|
- name: Commit generated files
|
|
if: steps.changed.outputs.shp == 'true'
|
|
uses: stefanzweifel/git-auto-commit-action@v7
|
|
with:
|
|
|
|
commit_message: "Auto-generate outputs from SHP"
|
|
|
|
commit_user_name: "github-actions[bot]"
|
|
|
|
commit_user_email: "41898282+github-actions[bot]@users.noreply.github.com"
|
|
|
|
commit_author: "github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>"
|
|
|