La partie 'analyse' du programme est fonctionnelle Ajout de fichiers intentionellement erronés dans le repertoire de test
261 lines
9.5 KiB
Plaintext
261 lines
9.5 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 */
|