pretraitement_dory/algorithme.txt
David Castex dfd0c8850c Ajout environnement de travail
- ajout de l'algorithme, terminé
- ajout du script, en construction
- ajout d'un dossier de test
2025-02-28 10:41:34 +01:00

261 lines
9.3 KiB
Plaintext

~~ ALGORITHME Script DORY Digitanie ~~
Traitement de documents d'un dossier de PLU pour mise a disposition d'un
opérateur.
Dans ce programme, la notion de "projet" fait référence à un fichier de
couche SHP avec ses fichiers supplémentaires pour une bonne importation
dans QGIS.
Pour le moment et comme spécifié, le programme ne traite pas les
formats composés GPKG ou SQLITE.
Après l'exécution de ce programme, l'opérateur devra traiter chaque projet
en s'appuyant du rapport VISA généré.
CONTRAINTES
- Il n'y a pas d'arborescence prédéfinie à l'intérieur du dossier source.
- Les fichiers du cadastres ne sont pas nécessairement isolés des autres
fichiers. Mais normalement, leurs noms devraient respecter une
nomenclature : "commune", "parcelles" et "batiment".
CONSTANTES
- une liste des extensions nécessaires list string
- une liste des extentions auxiliaires list string
- la configuration de la feuille Excel
enregistrement { nom = "A3", type = "B3", ...
rouge = "0x444", ...
formule_OK = "slkfjslfkjs",
formule_FAIL = "rjekrjldkj" }
/*une enumération des projections valides
enum {"LAMBERT93", "RGFG95", "RGR92", "RGSPM06"}
N'est pas nécessaire tant que l'on traite des dossiers en France
métropolitaine */
VARIABLES
- une liste des fichiers list _Fichier
- un dictionnaire des projets avec pour clé le nom de chaque projet
dico de paire string : Entité Projet
- un chemin absolue vers le repertoire racine à traiter string
REPRESENTATION DES DONNEES
_Fichier
Enregistrement de :
- son nom original - string
- son chemin - string
- son extension - string
- son nom formaté - string
- son implication - enum {"Nécessaire",
"Auxiliaire",
"Non-conforme",
"A-ignorer"} /* pas sur pour le dernier,
a voir si je dois ignorer
des PDFs ou DOCs, etc */
/* implique qu'un fichier à l'état "Nécessaire" ou "Auxiliaire"
est considéré comme "Conforme" */
_Catalogue
Enregistrement de :
- son dictionnaire de fichiers nécessaires avec pour clé l'extention
de chaque fichier - dico de paire string : _Fichier
- son dictionnaire de fichiers auxiliaires avec pour clé l'extention
de chaque fichier - dico de paire string : _Fichier
- son dictionnaire de fichiers non-conformes avec pour clé l'extention
de chaque fichier - dico de paire string : _Fichier
_Projet
Enregistrement de :
- son nom - string
- son catalogue - _Catalogue
- son nombre de fichiers - entier
- sa conformité - bool
- sa projection géodésique - string // ou énumération --> voir Constantes
- son type d'encodage prévu dans QGIS string
/* pour ce script, ce devrait être forcement "UTF8" */
1er NIVEAU D'AFFINAGE
DEBUT DU PROGRAMME
recupérer le chemin du dossier à traiter
analyser le dossier
produire le dossier de mise à disposition
produire le rapport
ARRET DU PROGRAMME
2ième NIVEAU D'AFFINAGE
DEBUT DU PROGRAMME
--recupérer le chemin du dossier à traiter
Si il y a un dossier de traitement dans le working directory Alors
lire le chemin absolue du dossier "racine" de traitement
Sinon
/* il n'y a pas de dossier de traitement, l'opérateur a peut-être
lancé le programme sans fournir de dossier */
signaler l'erreur
fin du programme
Fin Si
--analyser le dossier
initialiser une liste de _Fichiers
Pour Chaque dossier et sous dossier à explorer Faire
lire, analyser chaque fichier et peupler la liste
Fin Pour
/* Ici la liste des _Fichiers doit être correctement remplie */
initialiser un dictionnaire de _Projets avec comme clé leurs noms respectifs
Pour Chaque fichier de la liste Faire
associer le fichier courant à un projet du dictionnaire
Fin Pour
Pour Chaque projet du dictionnaire Faire
analyser et completer les infos du projet courant
/* conformité, projection, encodage etc */
Fin Pour
/* Ici le dictionnaire des _Projets doit être correctement remplie */
--produire le rapport
créer un classeur Excel
mettre en page la première feuille du classeur
Pour chaque projet du dictionnaire Faire
completer la feuille avec les infos du projet courant
Fin Pour
/* Ici le rapport doit être correctement produit et remplie */
--produire le dossier de mise à disposition
créer un dossier "Travail" et un dossier "Livraison"
créer l'arborescence du dossier "Travail"
peupler le dossier "Travail"
/* Ici les dossiers doivent être correctement produit et remplie */
ARRET DU PROGRAMME
3ième NIVEAU D'AFFINAGE
DEBUT DU PROGRAMME
--recupérer le chemin du dossier à traiter
Si il y a un dossier de traitement dans le working directory Alors
lire le chemin absolue du dossier "racine" de traitement
Sinon
/* il n'y a pas de dossier de traitement, l'opérateur a peut-être
lancé le programme sans fournir de dossier */
signaler l'erreur
fin du programme
Fin Si
--analyser le dossier
initialiser une liste de _Fichiers
Pour Chaque fichier des dossiers et sous dossiers à explorer Faire
--lire, analyser chaque fichier et peupler la liste
initialiser un _Fichier
lire son chemin
déterminer son nom original et son extension
lire le nom original
lire son extension
formatter et écrire le nom
déterminer son implication
ajouter le _Fichier à la liste
Fin Pour
/* Ici la liste des _Fichiers doit être correctement remplie */
initialiser un dictionnaire de _Projets avec comme clé leurs noms respectifs
Pour Chaque fichier de la liste Faire
--associer le fichier courant à un projet du dictionnaire
/* Vérifier que le projet existe déjà dans le dico */
Si le nom du fichier courant n'est pas dans le dico Alors
initialiser un _Projet
ajouter le nom comme clé dans le dictionnaire
associer le projet à cette clé
Fin Si
cataloguer le fichier dans le projet concerné
il y a un fichier de plus au projet
Fin Pour
Pour Chaque projet du dictionnaire Faire
--analyser et completer les infos du projet courant
/* conformité, projection, encodage etc */
lire la projection du projet courant
lire l'encodage du projet courant
Si tous les fichiers nécessaires sont présents ET
la projection est correcte ET
l'encodage est correct Alors
passer le projet à conforme
Fin Si
Fin Pour
/* Ici le dictionnaire des _Projets doit être correctement remplie */
--produire le rapport
créer un classeur Excel
/* Note : peut être utiliser un modèle pré-config */
--mettre en page la première feuille du classeur
inserer une image
écrire les nom des colonnes
écrire les formules de colorations auto des colonnes
Pour chaque projet du dictionnaire Faire
--completer la feuille avec les infos du projet courant
/* Note : Chaque ligne de la feuille correspond à un projet */
/* Utiliser la config fournie en Constante */
écrire le nom du projet
écrire le type d'extention
/* Note : ce sera "SHP" pour les projets conformes et le type
natif pour les non-conformes */
écrire le nombre de fichiers du projet
écrire l'encodage
écrire la projection
écrire la validité (conformité)
encadrer le "tout" pour délimiter le tableau de la feuille
Fin Pour
/* Ici le rapport doit être correctement produit et remplie */
--produire le dossier de mise à disposition
créer un dossier "Travail" et un dossier "Livraison"
--créer l'arborescence du dossier "Travail"
le dossier Travail devient le working directory
créer un dossier "00-Cadastre"
créer un dossier "01-Donnees_Valides"
créer un dossier "02-Donnees_Invalides
créer un dossier "03-Production"
créer un dossier "04-Verif_Geometrie"
--peupler le dossier "Travail"
Pour Chaque projet du dictionnaire Faire
copier les fichiers des projets conforme dans le dossier "01"
copier les fichiers des projets non-conformes dans le dossier "02"
Fin Pour
/* Ici les dossiers doivent être correctement produit et remplie */
ARRET DU PROGRAMME
/* TODO Controler qu'il y a bien les 5 necessaires par projet sinon FAIL
--> a faire dans le controle de conformité de chaque projet */
/* TODO S'assurer que les GPKG et autres non conformes peuplent correctement
les infos dans les projets --> géré si l'initialisation des
projets est correctement fait */