Compare commits
1 Commits
main
...
pretraitem
| Author | SHA1 | Date | |
|---|---|---|---|
| d6887e181d |
443
algorithme.txt
Normal file
443
algorithme.txt
Normal file
@ -0,0 +1,443 @@
|
||||
~~ 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 SHP.
|
||||
Après l'exécution de ce programme, l'opérateur devra traiter chaque projet.
|
||||
|
||||
|
||||
CONTRAINTES
|
||||
Il n'y a pas d'arborescence prédéfinie à l'intérieur du dossier source.
|
||||
Les fichiers du cadastres ne sont nécessairement isolés des autres fichiers. // Mais normalement, leurs noms devraient respecter une nomenclature : "commune", "parcelles" et "batiment"
|
||||
|
||||
|
||||
|
||||
CONSTANTES
|
||||
//liste des extensions autorisés list string (ou type Extension natif ?) devellopé en extentions nécessaires et auxiliaires
|
||||
liste des extensions nécessaires list string // TODO a regrouper en dico avec pour clés ( nécessaire , auxiliaires ) ??
|
||||
liste des extentions auxiliaires list string
|
||||
//liste des noms des sous dossiers du dossier Travail list string // pas necessaire car pas d'arborescence prédéfinie
|
||||
//liste des projections géodésiques autorisés list string
|
||||
//liste des encodages autorisés list string
|
||||
//dictionnaire des couleurs à utiliser pour la colorisation du fichier Excel dico de paire string : Entier ( ou Hexa ou type Couleur natif ? )
|
||||
|
||||
|
||||
|
||||
VARIABLES
|
||||
tableau ou liste des fichiers list Entité Fichier
|
||||
dictionnaire des projets avec pour clé le nom de chaque projet dico de paire string : Entité Projet
|
||||
variable de rapport de traitement Entité Rapport
|
||||
//variable ou tableau contenant des chemins (relatifs et/ou absolus) des dossiers à traiter ( TODO ou simplement une variable pour le chemin du dossier SIG ?? pour le moment on va partir sur une simple variable pour le chemin racine de référence)
|
||||
variable contenant le chemin absolue du repertoire racine du dossier a traiter string ( ou type Chemin natif ?)
|
||||
// enumération des projections valides enum { "LAMBERT93" , "RGFG95" , "RGR92" , "RGSPM06" } pas nécessaire tant que juste dossier en France métropolitaine
|
||||
|
||||
Structure Entité Fichier
|
||||
- son nom original string
|
||||
- son chemin string (ou type Chemin natif ?)
|
||||
- son extension string (ou enumération ?)
|
||||
- sa conformité bool
|
||||
- son nom nomenclaturé string
|
||||
|
||||
Structure Entité Projet
|
||||
- son nom string
|
||||
//- sa liste de fichiers list Entité Fichier
|
||||
- son dictionnaire de fichiers nécessaires avec pour clé l'extention de chaque fichier dico de paire string : Entité Fichier
|
||||
- son dictionnaire de fichiers auxiliaires avec pour clé l'extention de chaque fichier dico de paire string : Entité Fichier
|
||||
- son nombre de fichiers entier
|
||||
- sa conformité bool
|
||||
- sa projection géodésique string (ou énumération ? on va faire avec une énum pour s'entrainer, cela permettra d'ajouter des projections valides plus facilement) FINALEMENT PAS BESOIN LAMBERT93 est la projection administrative officielle unique pour la france entière, peut être revoir cette variable en V2 si on a besoin de prjection pour les DOMTOMs
|
||||
- son type d'encodage de données prévu pour QGIS string (ou enum ?? je pense pas qu'autre chose que UTF8 soit pertinent d'ou peut etre jsute faire un booleen ?)
|
||||
|
||||
Structure Entité Rapport
|
||||
- son nom string (pour ce script ce sera forcément "Rapport de Pré-traitement Manuel")
|
||||
- son nombre de projets conforme entier
|
||||
- son nombre de projets non-conforme entier
|
||||
- sa liste de projets conforme list Entité Projet
|
||||
- sa liste de projets non-conforme list Entité Projet
|
||||
//- sa conformité ( a définir )
|
||||
- son verdict enum ( A-traiter-manuellement , A-traiter-auto , Ne-pas-traiter , Erreur )
|
||||
|
||||
|
||||
|
||||
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
|
||||
le dossier IN est le dossier fourni en entrée
|
||||
se positionner dans le dossier IN et chercher le dossier SIG
|
||||
enregistrer le chemin du dossier SIG
|
||||
se positionner dans le dossier SIG
|
||||
|
||||
--analyser le dossier
|
||||
initialiser la liste des Fichiers
|
||||
initialiser le dictionnaire des Projets
|
||||
Pour Chaque dossier et sous dossier à explorer Faire
|
||||
analyser chaque fichier et peupler la liste des Fichiers ainsi que les clés du dictionnaire des Projets
|
||||
Fin Pour
|
||||
Pour Chaque entité de la liste des Fichiers Faire
|
||||
associer l'entité courante à un projet du dictionnaire des Projets (créer aussi des projets non conformes)
|
||||
Fin Pour
|
||||
Pour Chaque entité du dictionnaire des Projets Faire
|
||||
compter le nombre de fichiers associés à ce projet
|
||||
controler la projection géodésique
|
||||
controler l'encodage des caractères
|
||||
définir la conformité du projet
|
||||
Fin Pour
|
||||
|
||||
--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"
|
||||
|
||||
--produire le rapport
|
||||
créer et initialiser l' Entité Rapport
|
||||
créer un feuille de calcul Excel et la formatter
|
||||
Pour Chaque projet conforme dans le Rapport Faire
|
||||
incrementer le compteur de projets conformes
|
||||
rapporter le projet conforme courant
|
||||
Fin Pour
|
||||
Pour Chaque projet non-conforme Faire
|
||||
incrementer le compteur de projets non-conformes
|
||||
rapporter le projet non-conforme courant
|
||||
Fin Pour
|
||||
définir le verdict du rapport
|
||||
|
||||
|
||||
|
||||
ARRET DU PROGRAMME
|
||||
|
||||
|
||||
|
||||
3ième NIVEAU D'AFFINAGE
|
||||
|
||||
DEBUT DU PROGRAMME
|
||||
|
||||
--recupérer le chemin du dossier à traiter
|
||||
--le dossier IN est le dossier fourni en entrée
|
||||
enregistrer le chemin du dossier IN
|
||||
|
||||
--se positionner dans le dossier IN et chercher le dossier SIG
|
||||
le dosssier IN devient le working directory
|
||||
chercher le dossier SIG
|
||||
Si le dossier SIG n'est pas trouvé Alors
|
||||
rapporter la non présence du dossier SIG
|
||||
finir le programme
|
||||
Fin Si
|
||||
enregistrer le chemin du dossier SIG
|
||||
|
||||
--se positionner dans le dossier SIG
|
||||
le dossier SIG devient le working directory
|
||||
|
||||
--analyser le dossier
|
||||
|
||||
--initialiser la liste des Entités Fichier
|
||||
la liste des Fichiers est vide
|
||||
|
||||
--initialiser le dictionnaire des Entités Projet
|
||||
le dictionnaire des Projets est vide
|
||||
|
||||
Pour Chaque dossier et sous dossier à explorer Faire
|
||||
--analyser chaque fichier et peupler la liste des Entités Fichier ainsi que les clés du dictionnaire des Entités Projet
|
||||
Pour Chaque fichier du dossier courant Faire
|
||||
initialiser son Entité Fichier A AFFINER
|
||||
écrire le nom de son chemin
|
||||
rechercher et définir sa partie nom et sa partie extension A AFFINER
|
||||
écrire son nom original
|
||||
écrire le nom de son extension
|
||||
formatter le nom suivant la nomenclature autorisé et écrire son nom nomenclaturé A AFFINER
|
||||
Si son extension est conforme Alors
|
||||
écrire sa conformité comme conforme
|
||||
Sinon
|
||||
écrire sa conformité comme non-conforme (pas obligé si l'initialisation à été correctement faite à non-conforme)
|
||||
Fin Si
|
||||
ajouter son Entité à la liste des Fichiers
|
||||
Fin Pour
|
||||
Fin Pour
|
||||
// * Ici, la liste des Fichiers doit être correctement peuplés *
|
||||
|
||||
Pour Chaque entité de la liste des Fichiers Faire
|
||||
--associer l'entité courante à un projet du dictionnaire (créer aussi des projets non conformes)
|
||||
la clé courante du dictionnaire des Projets est le nom nomenclaturé de l'entité courante
|
||||
Si la clé courante n'est PAS une clé du dictionnaire des Projets Alors
|
||||
ajouter la clé courante comme nouvelle clé du dictionnaire des projets
|
||||
créer et initialiser une Entité Projet A AFFINER
|
||||
ce projet prend comme nom le nom de la clé nouvellement ajouté // ( attribut .nom = le nom de la clé )
|
||||
associer le Projet crée avec la clé courante dans le dictionnaire
|
||||
Fin Si
|
||||
le projet courant est celui associé à la clé courante
|
||||
ajouter l'entité courante au dictionnaire pertinent du projet courant TODO A AFFINER
|
||||
Fin Pour
|
||||
// * Ici le dictionaire de Projets doit être correctement peuplé *
|
||||
|
||||
Pour Chaque entité du dictionnaire des Projets Faire
|
||||
|
||||
compter le nombre de fichiers associés à ce projet
|
||||
--controler la projection géodésique
|
||||
rechercher la présence de la chaine "RGF_1993_Lambert_93" dans le fichier *.prj du projet courant //on peut aussi lire dès le début de la ligne à la recherche de la chaine PROJCS["RGF_1993_Lambert_93", penser à échapper les guillemets ?
|
||||
Si la chaine est présente Alors
|
||||
la projection géodésique devient "LAMBERT93"
|
||||
Fin Si
|
||||
|
||||
--controler l'encodage des caractères
|
||||
rechercher la présence de la chaine "UTF-8" dans le fichier *.cpg // normalement dès le début du fichier
|
||||
Si la chaine "UTF-8" est présente Alors
|
||||
le type d'encodage devient "UTF-8"
|
||||
Fin Si
|
||||
|
||||
--définir la conformité du projet
|
||||
la conformité du projet est défini à non-conforme // Normalement cette instruction n'est pas nécessaire car deja mis a non-conforme à l'initialisation de l'Entité Projet
|
||||
Si le projet contient les fichiers nécessaires dans son dictionnaire de fichiers nécessaires A AFFINER
|
||||
ET
|
||||
la projection géodésique est défini à "LAMBERT93"
|
||||
ET
|
||||
le type d'encodage est défini à "UTF-8" Alors
|
||||
la conformité devient conforme
|
||||
Fin Si
|
||||
Fin Pour
|
||||
|
||||
--produire le dossier de mise à disposition
|
||||
|
||||
--créer un dossier Travail et un dossier Livraison
|
||||
|
||||
positionner le working directory sur le dossier racine
|
||||
créer un dossier "Travail"
|
||||
créer un dossier "Livraison"
|
||||
|
||||
--créer l'arborescence du dossier Travail
|
||||
|
||||
positionnner le working directory sur le dossier Travail
|
||||
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
|
||||
|
||||
// copier le dossier Cadastres dans "00-Cadastres" A VOIR en V2 pas nécessaire pour le moment, les fichiers de cadastres sont traités comme des projets et seront visibles dans le VISA pour l'opérateur
|
||||
Pour chaque entité du dictionnaire des Projets Faire
|
||||
Si le projet est conforme Alors
|
||||
//créer un dossier pour le projet courant dans le dossier "01-Donnees_Valides" PAS NECESSAIRE DE FAIRE UN DOSSIER PAR PROJET
|
||||
ajouter ces fichiers dans le dossier "01-Donnees_Valides" A AFFINER
|
||||
Sinon
|
||||
//créer un dossier pour le projet courant dans le dossier "02-Donnes_Invalides"
|
||||
ajouter ces fichiers dans le dossier "02-Donnees_Invalides" A AFFINER
|
||||
Fin Si
|
||||
//peupler le dossier nouvellement créé avec les fichiers du projet courant
|
||||
Fin Pour
|
||||
|
||||
--produire le rapport
|
||||
|
||||
créer et initialiser l' Entité Rapport
|
||||
--créer un feuille de calcul Excel et la formatter
|
||||
créer le fichier workbook (classeur) Excel nommé VISA
|
||||
se positionner sur la "worksheet 01" (Feuille 01)
|
||||
mettre en page la feuille (Entête Digitanie, etc)
|
||||
|
||||
Pour Chaque projet conforme dans le Rapport Faire
|
||||
incrementer le compteur de projets conformes
|
||||
--rapporter le projet conforme courant (voir schéma cahier)
|
||||
écrire le nom du projet et coloriser
|
||||
écrire la confirmation de la présence des 5 fichiers nécessaires (SHP ou pas) et coloriser
|
||||
écrire le type d'encodage et coloriser
|
||||
ecrire la projection et coloriser
|
||||
écrire la validation et coloriser
|
||||
// écrire la liste des fichiers du projet
|
||||
Fin Pour
|
||||
|
||||
Pour Chaque projet non-conforme Faire
|
||||
incrementer le compteur de projets non-conformes
|
||||
--rapporter le projet non-conforme courant
|
||||
écrire le nom du projet et coloriser
|
||||
écrire la confirmation de la présence des 5 fichiers nécessaires (SHP ou pas) et coloriser
|
||||
écrire le type d'encodage et coloriser
|
||||
ecrire la projection et coloriser
|
||||
écrire la validation et coloriser
|
||||
Fin Pour
|
||||
|
||||
--définir le verdict du rapport
|
||||
Si il y au moins un projet conforme Alors
|
||||
le verdict passe à "A-traiter-manuellement"
|
||||
Sinon
|
||||
le verdict passe à "Ne-pas-traiter"
|
||||
Fin Si
|
||||
|
||||
|
||||
Voulez vous en savoir plus ??
|
||||
ARRET DU PROGRAMME
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
4ième NIVEAU D'AFFINAGE
|
||||
|
||||
DEBUT DU PROGRAMME
|
||||
|
||||
--recupérer le chemin du dossier à traiter
|
||||
--le dossier IN est le dossier fourni en entrée
|
||||
--enregistrer le chemin du dossier IN
|
||||
le chemin de racine de traitement est le chemin du dossier IN
|
||||
|
||||
--se positionner dans le dossier IN et chercher le dossier SIG
|
||||
le dosssier IN devient le working directory
|
||||
chercher le dossier SIG
|
||||
Si le dossier SIG n'est pas trouvé Alors
|
||||
rapporter la non présence du dossier SIG
|
||||
finir le programme
|
||||
Fin Si
|
||||
enregistrer le chemin du dossier SIG
|
||||
|
||||
--se positionner dans le dossier SIG
|
||||
le dossier SIG devient le working directory
|
||||
|
||||
--analyser le dossier
|
||||
|
||||
--initialiser la liste des Entités Fichier
|
||||
la liste des Fichiers est vide
|
||||
|
||||
--initialiser le dictionnaire des Entités Projet
|
||||
le dictionnaire des Projets est vide
|
||||
|
||||
Pour Chaque dossier et sous dossier à explorer Faire
|
||||
--analyser chaque fichier et peupler la liste des Entités Fichier ainsi que les clés du dictionnaire des Entités Projet
|
||||
Pour Chaque fichier du dossier courant Faire
|
||||
initialiser son Entité Fichier A AFFINER
|
||||
écrire le nom de son chemin
|
||||
rechercher et définir sa partie nom et sa partie extension A AFFINER
|
||||
écrire son nom original
|
||||
écrire le nom de son extension
|
||||
formatter le nom suivant la nomenclature autorisé et écrire son nom nomenclaturé A AFFINER
|
||||
Si son extension est conforme Alors
|
||||
écrire sa conformité comme conforme
|
||||
Sinon
|
||||
écrire sa conformité comme non-conforme (pas obligé si l'initialisation à été correctement faite à non-conforme)
|
||||
Fin Si
|
||||
ajouter son Entité à la liste des Fichiers
|
||||
Fin Pour
|
||||
Fin Pour
|
||||
// * Ici, la liste des Fichiers doit être correctement peuplés *
|
||||
|
||||
Pour Chaque entité de la liste des Fichiers Faire
|
||||
--associer l'entité courante à un projet du dictionnaire (créer aussi des projets non conformes)
|
||||
la clé courante du dictionnaire des Projets est le nom nomenclaturé de l'entité courante
|
||||
Si la clé courante n'est PAS une clé du dictionnaire des Projets Alors
|
||||
ajouter la clé courante comme nouvelle clé du dictionnaire des projets
|
||||
créer et initialiser une Entité Projet A AFFINER
|
||||
ce projet prend comme nom le nom de la clé nouvellement ajouté // ( attribut .nom = le nom de la clé )
|
||||
associer le Projet crée avec la clé courante dans le dictionnaire
|
||||
Fin Si
|
||||
le projet courant est celui associé à la clé courante
|
||||
ajouter l'entité courante au dictionnaire pertinent du projet courant TODO A AFFINER
|
||||
Fin Pour
|
||||
// * Ici le dictionaire de Projets doit être correctement peuplé *
|
||||
|
||||
Pour Chaque entité du dictionnaire des Projets Faire
|
||||
|
||||
compter le nombre de fichiers associés à ce projet
|
||||
--controler la projection géodésique
|
||||
rechercher la présence de la chaine "RGF_1993_Lambert_93" dans le fichier *.prj du projet courant //on peut aussi lire dès le début de la ligne à la recherche de la chaine PROJCS["RGF_1993_Lambert_93", penser à échapper les guillemets ?
|
||||
Si la chaine est présente Alors
|
||||
la projection géodésique devient "LAMBERT93"
|
||||
Fin Si
|
||||
|
||||
--controler l'encodage des caractères
|
||||
rechercher la présence de la chaine "UTF-8" dans le fichier *.cpg // normalement dès le début du fichier
|
||||
Si la chaine "UTF-8" est présente Alors
|
||||
le type d'encodage devient "UTF-8"
|
||||
Fin Si
|
||||
|
||||
--définir la conformité du projet
|
||||
la conformité du projet est défini à non-conforme // Normalement cette instruction n'est pas nécessaire car deja mis a non-conforme à l'initialisation de l'Entité Projet
|
||||
Si le projet contient les fichiers nécessaires dans son dictionnaire de fichiers nécessaires A AFFINER
|
||||
ET
|
||||
la projection géodésique est défini à "LAMBERT93"
|
||||
ET
|
||||
le type d'encodage est défini à "UTF-8" Alors
|
||||
la conformité devient conforme
|
||||
Fin Si
|
||||
Fin Pour
|
||||
|
||||
--produire le dossier de mise à disposition
|
||||
|
||||
--créer un dossier Travail et un dossier Livraison
|
||||
|
||||
positionner le working directory sur le dossier racine
|
||||
créer un dossier "Travail"
|
||||
créer un dossier "Livraison"
|
||||
|
||||
--créer l'arborescence du dossier Travail
|
||||
|
||||
positionnner le working directory sur le dossier Travail
|
||||
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
|
||||
|
||||
// copier le dossier Cadastres dans "00-Cadastres" A VOIR en V2 pas nécessaire pour le moment, les fichiers de cadastres sont traités comme des projets et seront visibles dans le VISA pour l'opérateur
|
||||
Pour chaque entité du dictionnaire des Projets Faire
|
||||
Si le projet est conforme Alors
|
||||
//créer un dossier pour le projet courant dans le dossier "01-Donnees_Valides" PAS NECESSAIRE DE FAIRE UN DOSSIER PAR PROJET
|
||||
ajouter ces fichiers dans le dossier "01-Donnees_Valides" A AFFINER
|
||||
Sinon
|
||||
//créer un dossier pour le projet courant dans le dossier "02-Donnes_Invalides"
|
||||
ajouter ces fichiers dans le dossier "02-Donnees_Invalides" A AFFINER
|
||||
Fin Si
|
||||
//peupler le dossier nouvellement créé avec les fichiers du projet courant
|
||||
Fin Pour
|
||||
|
||||
--produire le rapport
|
||||
|
||||
créer et initialiser l' Entité Rapport
|
||||
--créer un feuille de calcul Excel et la formatter
|
||||
créer le fichier workbook (classeur) Excel nommé VISA
|
||||
se positionner sur la "worksheet 01" (Feuille 01)
|
||||
mettre en page la feuille (Entête Digitanie, etc)
|
||||
|
||||
Pour Chaque projet conforme dans le Rapport Faire
|
||||
incrementer le compteur de projets conformes
|
||||
--rapporter le projet conforme courant (voir schéma cahier)
|
||||
écrire le nom du projet et coloriser
|
||||
écrire la confirmation de la présence des 5 fichiers nécessaires (SHP ou pas) et coloriser
|
||||
écrire le type d'encodage et coloriser
|
||||
ecrire la projection et coloriser
|
||||
écrire la validation et coloriser
|
||||
// écrire la liste des fichiers du projet
|
||||
Fin Pour
|
||||
|
||||
Pour Chaque projet non-conforme Faire
|
||||
incrementer le compteur de projets non-conformes
|
||||
--rapporter le projet non-conforme courant
|
||||
écrire le nom du projet et coloriser
|
||||
écrire la confirmation de la présence des 5 fichiers nécessaires (SHP ou pas) et coloriser
|
||||
écrire le type d'encodage et coloriser
|
||||
ecrire la projection et coloriser
|
||||
écrire la validation et coloriser
|
||||
Fin Pour
|
||||
|
||||
--définir le verdict du rapport
|
||||
Si il y au moins un projet conforme Alors
|
||||
le verdict passe à "A-traiter-manuellement"
|
||||
Sinon
|
||||
le verdict passe à "Ne-pas-traiter"
|
||||
Fin Si
|
||||
|
||||
|
||||
Voulez vous en savoir plus ??
|
||||
ARRET DU PROGRAMME
|
||||
Loading…
Reference in New Issue
Block a user