diff --git a/.github/workflows/ScriptPython.yml b/.github/workflows/ScriptPython.yml index f354698..41caed0 100644 --- a/.github/workflows/ScriptPython.yml +++ b/.github/workflows/ScriptPython.yml @@ -1,54 +1,35 @@ name: ScriptPython - on: - push: branches: - main - paths: - 'Outputs/SHP/*.shp' - workflow_dispatch: - - permissions: contents: write - - concurrency: group: pyThtoQgis cancel-in-progress: false - - jobs: - - pyThtoQgis: - + ScriptPython: 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 \ @@ -57,47 +38,36 @@ jobs: "$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 @@ -111,380 +81,242 @@ jobs: 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") - ) - - + print(gdal.VersionInfo("--version")) wkt = """ POLYHEDRALSURFACE Z ( ( @@ -496,165 +328,95 @@ jobs: ) ) """ - - 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() - ) - ) - - + print("Type :", geom.GetGeometryName()) + print("Geometry type :", geom.GetGeometryType()) + print("Has Z :", ogr.GT_HasZ(geom.GetGeometryType())) valid = geom.IsValid() - - - print( - "IsValid() :", - valid - ) - - + print("IsValid() :", valid) print() - - print( - "SFCGAL accessible par OGR : OK" - ) - - + 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: | - set -e - echo "========================================" echo "pyThtoQgis" echo "========================================" - - cd Scripts/pyThtoQgis - - python pyThtoQgis.py \ --folder "../../Outputs/SHP/" - # ============================================================ # 14. Vérification base SQL # ============================================================ - - name: Check SQL database if: steps.changed.outputs.shp == 'true' shell: bash -el {0} run: | - set -e - echo "========================================" echo "CHECK DATABASE" echo "========================================" - - SQL_FILE="Outputs/DB_Synthese-PSM_LARRA.sql" - - if [ ! -f "$SQL_FILE" ]; then - echo "ERREUR : fichier SQL introuvable :" echo "$SQL_FILE" - exit 1 - fi - - echo "Base SQL trouvée :" ls -lh "$SQL_FILE" - # ============================================================ # 15. Exécution pyThStat # ============================================================ # ============================================================ # Recherche pyThStat.py # ============================================================ - - name: Find pyThStat.py if: steps.changed.outputs.shp == 'true' shell: bash run: | - echo "========================================" echo "RECHERCHE pyThStat.py" echo "========================================" - find . \ -type f \ -name "pyThStat.py" \ @@ -664,21 +426,15 @@ jobs: if: steps.changed.outputs.shp == 'true' shell: bash -el {0} run: | - set -e - echo "========================================" echo "pyThStat" echo "========================================" - - + cd .. cd Scripts/pyThStat - - python pyThStat.py \ --file "../../Outputs/DB_Synthese-PSM_LARRA.sql" - # ============================================================ # 16. Fichiers produits # ============================================================