~~ 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 */