Skip to main content

Importation GPKG → SIRS (désordres, observations, photos)

Project description

sirs_import

Outil Python pour importer des désordres dans SIRS à partir d'un fichier GeoPackage (GPKG)


Description

sirs_import permet de valider, transformer et importer des données de désordres, observations et photographies dans SIRS, à partir de fichiers GeoPackage (GPKG) et d’un dossier photos.

Le système effectue :

  • détection automatique des colonnes
  • application des valeurs de repli (fallback)
  • validation des UUID
  • vérification temporelle
  • normalisation des références
  • génération finale du JSON pour l’import SIRS

Installation

Installation via PyPI

pip install sirs_import

Développement local

git clone https://github.com/jln-codes/sirs_import.git
cd sirs_import
pip install -e .

Utilisation

Mode par défaut

cd path/to/data
sirs_import

Extraction linearId et contactId uniquement

cd chemin/vers/données
sirs_import --extract

Crée les fichiers <layer_name>_linearId.txt et <layer_name>_contactId.txt

Import complet vers CouchDB

cd path/to/data
sirs_import --upload

Fichier de configuration

Un fichier config_sirs.toml doit être présent dans le répertoire projet.
On peut aussi utiliser :

sirs_import --config chemin/vers/config.toml

Exemple fourni : config_sirs.example.toml


Données attendues

Désordres

Les colonnes liées aux désordres peuvent avoir n’importe quel nom et doivent être définies dans le fichier de configuration.

Observations

Exemple (avec préfixe obs1) :

obs1_date                # obligatoire
obs1_evolution
obs1_suite
obs1_designation
obs1_observateurId
obs1_suiteApporterId
obs1_nombreDesordres
obs1_urgenceId

L’existence du champ obligatoire (suffixe date) détermine l’existence de l’élément.

Photos

Exemple (prefix obs1_pho1) :

obs1_pho1_chemin              # obligatoire
obs1_pho1_photographeId
obs1_pho1_date
obs1_pho1_designation
obs1_pho1_libelle
obs1_pho1_orientationPhoto
obs1_pho1_coteId

Répertoire des photos

Le package peut restructurer le dossier photo pour coller à l'architecture typique utilisée par SIRS. Les photos seront renommées si nécessaire et leur chemin dans le fichier GPKG mis à jour.

Arborescence proposée:

racine_dossier = digue/
├─ TRONCON_A/
│  ├─ photo001.jpg
│  ├─ photo002.jpg
│  └─ …
├─ TRONCON_B/
│  ├─ photo003.jpg
│  └─ …
└─ TRONCON_C/
   ├─ photo004.jpg
   └─ …

Nomenclature SIRS

Un certain nombre de champs acceptent des entiers > 0 avec ou sans préfixes. Cela vaut pour les colonnes GPKG et pour les statiques qui seraient définis dans le fichier de configuration.

Champs concernés :

Nom fonctionnel (JSON SIRS) Variable de config (TOML) Valeurs entières autorisées Forme préfixée autorisée (chaîne)
positionId COL_POSITION_ID 3 à 15, ou 99 RefPosition:X
coteId (désordre) COL_COTE_ID 1 à 8, ou 99 RefCote:X
sourceId COL_SOURCE_ID 0 à 4, ou 99 RefSource:X
categorieDesordreId COL_CATEGORIE_DESORDRE_ID 1 à 7 RefCategorieDesordre:X
typeDesordreId COL_TYPE_DESORDRE_ID 1 à 73, ou 99 RefTypeDesordre:X
urgenceId OBS_FALLBACK_URGENCE 1, 2, 3, 4, 99 RefUrgence:X
suiteApporterId OBS_FALLBACK_SUITE 1 à 8 RefSuiteApporter:X
orientationPhoto PHO_FALLBACK_ORIENTATION 1 à 9, ou 99 RefOrientationPhoto:X
coteId (photo) PHO_FALLBACK_COTE 1 à 8, ou 99 RefCote:X
nombreDesordres OBS_FALLBACK_NB_DESORDRES entier natif ≥ 0 (0,1,2,…) pas de forme préfixée (entier uniquement)

Ces champs sont vérifiés et normalisés automatiquement.


Valeurs statiques et fallbacks

Certaines variables du fichier de configuration peuvent être définies soit comme noms de colonnes GPKG, soit comme valeurs uniques appliquées automatiquement en l’absence de colonne dans les données (statiques). Les champs d’observations et de photos peuvent également utiliser des valeurs par défaut si leurs champs ne sont pas présents dans le GPKG (fallbacks)

Priorité interne de lecture

  1. valeur présente dans le GPKG
  2. valeur issue du fichier de configuration (si définie)

COL_POSITION_ID = "pos" → lecture depuis colonne pos

COL_POSITION_ID = 7 → positionId = 7 pour toutes les lignes

obs2_observateurId absent → observateur par défaut utilisé

obs3_pho1_orientationId manquant → orientation par défaut appliquée (ex: 99)


Export JSON

Le fichier nom_couche.json généré peut ensuite être importé dans SIRS via :

sirs_import --upload

Le processus de validation garanti que les données seront valide du point de vue de CouchDB et de SIRS. A vous cependant de vous assurer qu'elles contiennent assez d'information pour être pertinente du point de vue du gestionnaire de digues.


Licence

Utilisation strictement NON COMMERCIALE.
Voir : https://github.com/jln-codes/sirs_import/blob/main/LICENSE


Dépendances

  • Python 3.10 ou 3.11 uniquement
  • pandas
  • geopandas
  • fiona
  • shapely
  • requests
  • wcwidth
  • tomli (pour Python < 3.11)
  • numpy < 2
  • numexpr >= 2.8.4
  • bottleneck >= 1.3.6

Avertissements

Ce programme manipule des données sensibles et modifie les fichiers sources.
Sauvegardez les données originales.

Certaines relations entre champs ne sont pas vérifiées.
La responsabilité de la cohérence métier vous incombe.


Statut du projet

Développement actif — l’API reste susceptible d’évoluer.


Support / Contact

Contribution et signalement d’anomalies via :
https://github.com/jln-codes/sirs_import/issues


English version

Full English documentation available at:
https://github.com/jln-codes/sirs_import/blob/main/README.en.md

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sirs_import-0.5.1.tar.gz (46.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sirs_import-0.5.1-py3-none-any.whl (50.8 kB view details)

Uploaded Python 3

File details

Details for the file sirs_import-0.5.1.tar.gz.

File metadata

  • Download URL: sirs_import-0.5.1.tar.gz
  • Upload date:
  • Size: 46.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.6

File hashes

Hashes for sirs_import-0.5.1.tar.gz
Algorithm Hash digest
SHA256 63c343b37c61d6bb6a472581c0373d2a657bcd777f2a4864a67a71f578a84186
MD5 7a5644a1294df270929df7db88e8b50a
BLAKE2b-256 229d3291f40e12aaade62e50d3b5cea5e81d2f1da6772943f3d2336f524a2b28

See more details on using hashes here.

File details

Details for the file sirs_import-0.5.1-py3-none-any.whl.

File metadata

  • Download URL: sirs_import-0.5.1-py3-none-any.whl
  • Upload date:
  • Size: 50.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.6

File hashes

Hashes for sirs_import-0.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 099ae08be3e2835fc2c3a91b49dbfcfe32457ceea0ad74cd9cf00bd33a5e3e1e
MD5 163c529866644d6219b320da56a4c4d3
BLAKE2b-256 6c36ba1fc4ff7dd3c65192174dc0f0eb9eb74ea1ec5e8b2fe184f3cba65d11c3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page