diff --git a/README.md b/README.md
index 7ae992b..f5428f5 100644
--- a/README.md
+++ b/README.md
@@ -1,14 +1,17 @@
-Script de prétraitement d'un dossier du projet DORY
-
-J'ai créer ce dépot et séparer du projet de script de post traitement
-pour pouvoir avoir mes dossiers de tests isolés des autres scripts du projet
-
-NOTES :
- - Git modifie la fin de ligne de certains fichiers. LF devient CRLF, en
- particuler les QMD et QML. Pour le moment dans mes tests, ça ne pose
- pas de problème, car je n'exécute pas QGIS. Je n'ai pas encore trouvé
- comment désactiver cette option dans Git.
-
-
-
-David.
+Script de prétraitement d'un dossier du projet DORY
+
+J'ai créer ce dépot et séparer du projet de script de post traitement
+pour pouvoir avoir mes dossiers de tests isolés des autres scripts du projet
+
+NOTES :
+ - Git modifie la fin de ligne de certains fichiers. LF devient CRLF, en
+ particuler les QMD et QML. Pour le moment dans mes tests, ça ne pose
+ pas de problème, car je n'exécute pas QGIS. Je n'ai pas encore trouvé
+ comment désactiver cette option dans Git.
+
+ VOIR : mettre core.autocrlf à false pour avoir un comportement normal
+ (checkout-as-is, commit-as-is).
+
+
+
+David.
diff --git a/TEST/sig/DPU.prj b/TEST/sig/DPU.prj
index ae0206b..abb11e3 100644
--- a/TEST/sig/DPU.prj
+++ b/TEST/sig/DPU.prj
@@ -1 +1 @@
-PROJCS["RGF_1993_Lambert_93",GEOGCS["GCS_RGF_1993",DATUM["D_RGF_1993",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",700000.0],PARAMETER["False_Northing",6600000.0],PARAMETER["Central_Meridian",3.0],PARAMETER["Standard_Parallel_1",49.0],PARAMETER["Standard_Parallel_2",44.0],PARAMETER["Latitude_Of_Origin",46.5],UNIT["Meter",1.0]]
\ No newline at end of file
+DADADADAPROJCS["RGF_1991_Lambert_93",GEOGCS["GCS_RGF_1993",DATUM["D_RGF_1993",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",700000.0],PARAMETER["False_Northing",6600000.0],PARAMETER["Central_Meridian",3.0],PARAMETER["Standard_Parallel_1",49.0],PARAMETER["Standard_Parallel_2",44.0],PARAMETER["Latitude_Of_Origin",46.5],UNIT["Meter",1.0]]
\ No newline at end of file
diff --git a/TEST/sig/DPU.qmd b/TEST/sig/DPU.qmd
index a585e4a..d65ea3c 100644
--- a/TEST/sig/DPU.qmd
+++ b/TEST/sig/DPU.qmd
@@ -1,27 +1,27 @@
-
-
-
-
-
- dataset
-
-
-
-
-
-
-
-
- PROJCRS["RGF93 v1 / Lambert-93",BASEGEOGCRS["RGF93 v1",DATUM["Reseau Geodesique Francais 1993 v1",ELLIPSOID["GRS 1980",6378137,298.257222101,LENGTHUNIT["metre",1]]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4171]],CONVERSION["Lambert-93",METHOD["Lambert Conic Conformal (2SP)",ID["EPSG",9802]],PARAMETER["Latitude of false origin",46.5,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8821]],PARAMETER["Longitude of false origin",3,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8822]],PARAMETER["Latitude of 1st standard parallel",49,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8823]],PARAMETER["Latitude of 2nd standard parallel",44,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8824]],PARAMETER["Easting at false origin",700000,LENGTHUNIT["metre",1],ID["EPSG",8826]],PARAMETER["Northing at false origin",6600000,LENGTHUNIT["metre",1],ID["EPSG",8827]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Engineering survey, topographic mapping."],AREA["France - onshore and offshore, mainland and Corsica (France métropolitaine including Corsica)."],BBOX[41.15,-9.86,51.56,10.38]],ID["EPSG",2154]]
- +proj=lcc +lat_0=46.5 +lon_0=3 +lat_1=49 +lat_2=44 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs
- 145
- 2154
- EPSG:2154
- RGF93 v1 / Lambert-93
- lcc
- EPSG:7019
- false
-
-
-
-
+
+
+
+
+
+ dataset
+
+
+
+
+
+
+
+
+ PROJCRS["RGF93 v1 / Lambert-93",BASEGEOGCRS["RGF93 v1",DATUM["Reseau Geodesique Francais 1993 v1",ELLIPSOID["GRS 1980",6378137,298.257222101,LENGTHUNIT["metre",1]]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4171]],CONVERSION["Lambert-93",METHOD["Lambert Conic Conformal (2SP)",ID["EPSG",9802]],PARAMETER["Latitude of false origin",46.5,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8821]],PARAMETER["Longitude of false origin",3,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8822]],PARAMETER["Latitude of 1st standard parallel",49,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8823]],PARAMETER["Latitude of 2nd standard parallel",44,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8824]],PARAMETER["Easting at false origin",700000,LENGTHUNIT["metre",1],ID["EPSG",8826]],PARAMETER["Northing at false origin",6600000,LENGTHUNIT["metre",1],ID["EPSG",8827]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Engineering survey, topographic mapping."],AREA["France - onshore and offshore, mainland and Corsica (France métropolitaine including Corsica)."],BBOX[41.15,-9.86,51.56,10.38]],ID["EPSG",2154]]
+ +proj=lcc +lat_0=46.5 +lon_0=3 +lat_1=49 +lat_2=44 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs
+ 145
+ 2154
+ EPSG:2154
+ RGF93 v1 / Lambert-93
+ lcc
+ EPSG:7019
+ false
+
+
+
+
diff --git a/TEST/sig/ER.qmd b/TEST/sig/ER.qmd
index a585e4a..d65ea3c 100644
--- a/TEST/sig/ER.qmd
+++ b/TEST/sig/ER.qmd
@@ -1,27 +1,27 @@
-
-
-
-
-
- dataset
-
-
-
-
-
-
-
-
- PROJCRS["RGF93 v1 / Lambert-93",BASEGEOGCRS["RGF93 v1",DATUM["Reseau Geodesique Francais 1993 v1",ELLIPSOID["GRS 1980",6378137,298.257222101,LENGTHUNIT["metre",1]]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4171]],CONVERSION["Lambert-93",METHOD["Lambert Conic Conformal (2SP)",ID["EPSG",9802]],PARAMETER["Latitude of false origin",46.5,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8821]],PARAMETER["Longitude of false origin",3,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8822]],PARAMETER["Latitude of 1st standard parallel",49,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8823]],PARAMETER["Latitude of 2nd standard parallel",44,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8824]],PARAMETER["Easting at false origin",700000,LENGTHUNIT["metre",1],ID["EPSG",8826]],PARAMETER["Northing at false origin",6600000,LENGTHUNIT["metre",1],ID["EPSG",8827]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Engineering survey, topographic mapping."],AREA["France - onshore and offshore, mainland and Corsica (France métropolitaine including Corsica)."],BBOX[41.15,-9.86,51.56,10.38]],ID["EPSG",2154]]
- +proj=lcc +lat_0=46.5 +lon_0=3 +lat_1=49 +lat_2=44 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs
- 145
- 2154
- EPSG:2154
- RGF93 v1 / Lambert-93
- lcc
- EPSG:7019
- false
-
-
-
-
+
+
+
+
+
+ dataset
+
+
+
+
+
+
+
+
+ PROJCRS["RGF93 v1 / Lambert-93",BASEGEOGCRS["RGF93 v1",DATUM["Reseau Geodesique Francais 1993 v1",ELLIPSOID["GRS 1980",6378137,298.257222101,LENGTHUNIT["metre",1]]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4171]],CONVERSION["Lambert-93",METHOD["Lambert Conic Conformal (2SP)",ID["EPSG",9802]],PARAMETER["Latitude of false origin",46.5,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8821]],PARAMETER["Longitude of false origin",3,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8822]],PARAMETER["Latitude of 1st standard parallel",49,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8823]],PARAMETER["Latitude of 2nd standard parallel",44,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8824]],PARAMETER["Easting at false origin",700000,LENGTHUNIT["metre",1],ID["EPSG",8826]],PARAMETER["Northing at false origin",6600000,LENGTHUNIT["metre",1],ID["EPSG",8827]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Engineering survey, topographic mapping."],AREA["France - onshore and offshore, mainland and Corsica (France métropolitaine including Corsica)."],BBOX[41.15,-9.86,51.56,10.38]],ID["EPSG",2154]]
+ +proj=lcc +lat_0=46.5 +lon_0=3 +lat_1=49 +lat_2=44 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs
+ 145
+ 2154
+ EPSG:2154
+ RGF93 v1 / Lambert-93
+ lcc
+ EPSG:7019
+ false
+
+
+
+
diff --git a/TEST/sig/PENAP.qmd b/TEST/sig/PENAP.qmd
index a585e4a..d65ea3c 100644
--- a/TEST/sig/PENAP.qmd
+++ b/TEST/sig/PENAP.qmd
@@ -1,27 +1,27 @@
-
-
-
-
-
- dataset
-
-
-
-
-
-
-
-
- PROJCRS["RGF93 v1 / Lambert-93",BASEGEOGCRS["RGF93 v1",DATUM["Reseau Geodesique Francais 1993 v1",ELLIPSOID["GRS 1980",6378137,298.257222101,LENGTHUNIT["metre",1]]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4171]],CONVERSION["Lambert-93",METHOD["Lambert Conic Conformal (2SP)",ID["EPSG",9802]],PARAMETER["Latitude of false origin",46.5,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8821]],PARAMETER["Longitude of false origin",3,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8822]],PARAMETER["Latitude of 1st standard parallel",49,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8823]],PARAMETER["Latitude of 2nd standard parallel",44,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8824]],PARAMETER["Easting at false origin",700000,LENGTHUNIT["metre",1],ID["EPSG",8826]],PARAMETER["Northing at false origin",6600000,LENGTHUNIT["metre",1],ID["EPSG",8827]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Engineering survey, topographic mapping."],AREA["France - onshore and offshore, mainland and Corsica (France métropolitaine including Corsica)."],BBOX[41.15,-9.86,51.56,10.38]],ID["EPSG",2154]]
- +proj=lcc +lat_0=46.5 +lon_0=3 +lat_1=49 +lat_2=44 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs
- 145
- 2154
- EPSG:2154
- RGF93 v1 / Lambert-93
- lcc
- EPSG:7019
- false
-
-
-
-
+
+
+
+
+
+ dataset
+
+
+
+
+
+
+
+
+ PROJCRS["RGF93 v1 / Lambert-93",BASEGEOGCRS["RGF93 v1",DATUM["Reseau Geodesique Francais 1993 v1",ELLIPSOID["GRS 1980",6378137,298.257222101,LENGTHUNIT["metre",1]]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4171]],CONVERSION["Lambert-93",METHOD["Lambert Conic Conformal (2SP)",ID["EPSG",9802]],PARAMETER["Latitude of false origin",46.5,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8821]],PARAMETER["Longitude of false origin",3,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8822]],PARAMETER["Latitude of 1st standard parallel",49,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8823]],PARAMETER["Latitude of 2nd standard parallel",44,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8824]],PARAMETER["Easting at false origin",700000,LENGTHUNIT["metre",1],ID["EPSG",8826]],PARAMETER["Northing at false origin",6600000,LENGTHUNIT["metre",1],ID["EPSG",8827]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Engineering survey, topographic mapping."],AREA["France - onshore and offshore, mainland and Corsica (France métropolitaine including Corsica)."],BBOX[41.15,-9.86,51.56,10.38]],ID["EPSG",2154]]
+ +proj=lcc +lat_0=46.5 +lon_0=3 +lat_1=49 +lat_2=44 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs
+ 145
+ 2154
+ EPSG:2154
+ RGF93 v1 / Lambert-93
+ lcc
+ EPSG:7019
+ false
+
+
+
+
diff --git a/TEST/sig/PPRI.qmd b/TEST/sig/PPRI.qmd
index a585e4a..d65ea3c 100644
--- a/TEST/sig/PPRI.qmd
+++ b/TEST/sig/PPRI.qmd
@@ -1,27 +1,27 @@
-
-
-
-
-
- dataset
-
-
-
-
-
-
-
-
- PROJCRS["RGF93 v1 / Lambert-93",BASEGEOGCRS["RGF93 v1",DATUM["Reseau Geodesique Francais 1993 v1",ELLIPSOID["GRS 1980",6378137,298.257222101,LENGTHUNIT["metre",1]]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4171]],CONVERSION["Lambert-93",METHOD["Lambert Conic Conformal (2SP)",ID["EPSG",9802]],PARAMETER["Latitude of false origin",46.5,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8821]],PARAMETER["Longitude of false origin",3,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8822]],PARAMETER["Latitude of 1st standard parallel",49,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8823]],PARAMETER["Latitude of 2nd standard parallel",44,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8824]],PARAMETER["Easting at false origin",700000,LENGTHUNIT["metre",1],ID["EPSG",8826]],PARAMETER["Northing at false origin",6600000,LENGTHUNIT["metre",1],ID["EPSG",8827]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Engineering survey, topographic mapping."],AREA["France - onshore and offshore, mainland and Corsica (France métropolitaine including Corsica)."],BBOX[41.15,-9.86,51.56,10.38]],ID["EPSG",2154]]
- +proj=lcc +lat_0=46.5 +lon_0=3 +lat_1=49 +lat_2=44 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs
- 145
- 2154
- EPSG:2154
- RGF93 v1 / Lambert-93
- lcc
- EPSG:7019
- false
-
-
-
-
+
+
+
+
+
+ dataset
+
+
+
+
+
+
+
+
+ PROJCRS["RGF93 v1 / Lambert-93",BASEGEOGCRS["RGF93 v1",DATUM["Reseau Geodesique Francais 1993 v1",ELLIPSOID["GRS 1980",6378137,298.257222101,LENGTHUNIT["metre",1]]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4171]],CONVERSION["Lambert-93",METHOD["Lambert Conic Conformal (2SP)",ID["EPSG",9802]],PARAMETER["Latitude of false origin",46.5,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8821]],PARAMETER["Longitude of false origin",3,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8822]],PARAMETER["Latitude of 1st standard parallel",49,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8823]],PARAMETER["Latitude of 2nd standard parallel",44,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8824]],PARAMETER["Easting at false origin",700000,LENGTHUNIT["metre",1],ID["EPSG",8826]],PARAMETER["Northing at false origin",6600000,LENGTHUNIT["metre",1],ID["EPSG",8827]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Engineering survey, topographic mapping."],AREA["France - onshore and offshore, mainland and Corsica (France métropolitaine including Corsica)."],BBOX[41.15,-9.86,51.56,10.38]],ID["EPSG",2154]]
+ +proj=lcc +lat_0=46.5 +lon_0=3 +lat_1=49 +lat_2=44 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs
+ 145
+ 2154
+ EPSG:2154
+ RGF93 v1 / Lambert-93
+ lcc
+ EPSG:7019
+ false
+
+
+
+
diff --git a/TEST/sig/ZONE U.qml b/TEST/sig/ZONE U.qml
index 326ebaa..3b832c3 100644
--- a/TEST/sig/ZONE U.qml
+++ b/TEST/sig/ZONE U.qml
@@ -1,605 +1,605 @@
-
-
-
- 1
- 1
- 1
- 0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0
- 0
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0
-
-
- 0
- generatedlayout
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "LIBELLE"
-
- 2
-
+
+
+
+ 1
+ 1
+ 1
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 0
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ generatedlayout
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ "LIBELLE"
+
+ 2
+
diff --git a/TEST/sig/Zone N.qml b/TEST/sig/Zone N.qml
index 0e2b748..bf2bc74 100644
--- a/TEST/sig/Zone N.qml
+++ b/TEST/sig/Zone N.qml
@@ -1,704 +1,704 @@
-
-
-
- 1
- 1
- 1
- 0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0
- 0
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0
-
-
- 0
- generatedlayout
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "LIBELLE"
-
- 2
-
+
+
+
+ 1
+ 1
+ 1
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 0
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ generatedlayout
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ "LIBELLE"
+
+ 2
+
diff --git a/TEST/sig/cadastre/69166_batiment.qmd b/TEST/sig/cadastre/69166_batiment.qmd
index e21147c..68fb8a0 100644
--- a/TEST/sig/cadastre/69166_batiment.qmd
+++ b/TEST/sig/cadastre/69166_batiment.qmd
@@ -1,27 +1,27 @@
-
-
-
-
-
- dataset
-
-
-
-
-
-
-
-
- PROJCRS["RGF93 v1 / Lambert-93",BASEGEOGCRS["RGF93 v1",DATUM["Reseau Geodesique Francais 1993 v1",ELLIPSOID["GRS 1980",6378137,298.257222101,LENGTHUNIT["metre",1]]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4171]],CONVERSION["Lambert-93",METHOD["Lambert Conic Conformal (2SP)",ID["EPSG",9802]],PARAMETER["Latitude of false origin",46.5,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8821]],PARAMETER["Longitude of false origin",3,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8822]],PARAMETER["Latitude of 1st standard parallel",49,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8823]],PARAMETER["Latitude of 2nd standard parallel",44,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8824]],PARAMETER["Easting at false origin",700000,LENGTHUNIT["metre",1],ID["EPSG",8826]],PARAMETER["Northing at false origin",6600000,LENGTHUNIT["metre",1],ID["EPSG",8827]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Engineering survey, topographic mapping."],AREA["France - onshore and offshore, mainland and Corsica (France métropolitaine including Corsica)."],BBOX[41.15,-9.86,51.56,10.38]],ID["EPSG",2154]]
- +proj=lcc +lat_0=46.5 +lon_0=3 +lat_1=49 +lat_2=44 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs
- 145
- 2154
- EPSG:2154
- RGF93 v1 / Lambert-93
- lcc
- EPSG:7019
- false
-
-
-
-
+
+
+
+
+
+ dataset
+
+
+
+
+
+
+
+
+ PROJCRS["RGF93 v1 / Lambert-93",BASEGEOGCRS["RGF93 v1",DATUM["Reseau Geodesique Francais 1993 v1",ELLIPSOID["GRS 1980",6378137,298.257222101,LENGTHUNIT["metre",1]]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4171]],CONVERSION["Lambert-93",METHOD["Lambert Conic Conformal (2SP)",ID["EPSG",9802]],PARAMETER["Latitude of false origin",46.5,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8821]],PARAMETER["Longitude of false origin",3,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8822]],PARAMETER["Latitude of 1st standard parallel",49,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8823]],PARAMETER["Latitude of 2nd standard parallel",44,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8824]],PARAMETER["Easting at false origin",700000,LENGTHUNIT["metre",1],ID["EPSG",8826]],PARAMETER["Northing at false origin",6600000,LENGTHUNIT["metre",1],ID["EPSG",8827]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Engineering survey, topographic mapping."],AREA["France - onshore and offshore, mainland and Corsica (France métropolitaine including Corsica)."],BBOX[41.15,-9.86,51.56,10.38]],ID["EPSG",2154]]
+ +proj=lcc +lat_0=46.5 +lon_0=3 +lat_1=49 +lat_2=44 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs
+ 145
+ 2154
+ EPSG:2154
+ RGF93 v1 / Lambert-93
+ lcc
+ EPSG:7019
+ false
+
+
+
+
diff --git a/TEST/sig/cadastre/69166_commune.qmd b/TEST/sig/cadastre/69166_commune.qmd
index e21147c..68fb8a0 100644
--- a/TEST/sig/cadastre/69166_commune.qmd
+++ b/TEST/sig/cadastre/69166_commune.qmd
@@ -1,27 +1,27 @@
-
-
-
-
-
- dataset
-
-
-
-
-
-
-
-
- PROJCRS["RGF93 v1 / Lambert-93",BASEGEOGCRS["RGF93 v1",DATUM["Reseau Geodesique Francais 1993 v1",ELLIPSOID["GRS 1980",6378137,298.257222101,LENGTHUNIT["metre",1]]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4171]],CONVERSION["Lambert-93",METHOD["Lambert Conic Conformal (2SP)",ID["EPSG",9802]],PARAMETER["Latitude of false origin",46.5,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8821]],PARAMETER["Longitude of false origin",3,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8822]],PARAMETER["Latitude of 1st standard parallel",49,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8823]],PARAMETER["Latitude of 2nd standard parallel",44,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8824]],PARAMETER["Easting at false origin",700000,LENGTHUNIT["metre",1],ID["EPSG",8826]],PARAMETER["Northing at false origin",6600000,LENGTHUNIT["metre",1],ID["EPSG",8827]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Engineering survey, topographic mapping."],AREA["France - onshore and offshore, mainland and Corsica (France métropolitaine including Corsica)."],BBOX[41.15,-9.86,51.56,10.38]],ID["EPSG",2154]]
- +proj=lcc +lat_0=46.5 +lon_0=3 +lat_1=49 +lat_2=44 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs
- 145
- 2154
- EPSG:2154
- RGF93 v1 / Lambert-93
- lcc
- EPSG:7019
- false
-
-
-
-
+
+
+
+
+
+ dataset
+
+
+
+
+
+
+
+
+ PROJCRS["RGF93 v1 / Lambert-93",BASEGEOGCRS["RGF93 v1",DATUM["Reseau Geodesique Francais 1993 v1",ELLIPSOID["GRS 1980",6378137,298.257222101,LENGTHUNIT["metre",1]]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4171]],CONVERSION["Lambert-93",METHOD["Lambert Conic Conformal (2SP)",ID["EPSG",9802]],PARAMETER["Latitude of false origin",46.5,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8821]],PARAMETER["Longitude of false origin",3,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8822]],PARAMETER["Latitude of 1st standard parallel",49,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8823]],PARAMETER["Latitude of 2nd standard parallel",44,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8824]],PARAMETER["Easting at false origin",700000,LENGTHUNIT["metre",1],ID["EPSG",8826]],PARAMETER["Northing at false origin",6600000,LENGTHUNIT["metre",1],ID["EPSG",8827]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Engineering survey, topographic mapping."],AREA["France - onshore and offshore, mainland and Corsica (France métropolitaine including Corsica)."],BBOX[41.15,-9.86,51.56,10.38]],ID["EPSG",2154]]
+ +proj=lcc +lat_0=46.5 +lon_0=3 +lat_1=49 +lat_2=44 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs
+ 145
+ 2154
+ EPSG:2154
+ RGF93 v1 / Lambert-93
+ lcc
+ EPSG:7019
+ false
+
+
+
+
diff --git a/TEST/sig/cadastre/69166_parcelles.qmd b/TEST/sig/cadastre/69166_parcelles.qmd
index e21147c..68fb8a0 100644
--- a/TEST/sig/cadastre/69166_parcelles.qmd
+++ b/TEST/sig/cadastre/69166_parcelles.qmd
@@ -1,27 +1,27 @@
-
-
-
-
-
- dataset
-
-
-
-
-
-
-
-
- PROJCRS["RGF93 v1 / Lambert-93",BASEGEOGCRS["RGF93 v1",DATUM["Reseau Geodesique Francais 1993 v1",ELLIPSOID["GRS 1980",6378137,298.257222101,LENGTHUNIT["metre",1]]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4171]],CONVERSION["Lambert-93",METHOD["Lambert Conic Conformal (2SP)",ID["EPSG",9802]],PARAMETER["Latitude of false origin",46.5,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8821]],PARAMETER["Longitude of false origin",3,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8822]],PARAMETER["Latitude of 1st standard parallel",49,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8823]],PARAMETER["Latitude of 2nd standard parallel",44,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8824]],PARAMETER["Easting at false origin",700000,LENGTHUNIT["metre",1],ID["EPSG",8826]],PARAMETER["Northing at false origin",6600000,LENGTHUNIT["metre",1],ID["EPSG",8827]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Engineering survey, topographic mapping."],AREA["France - onshore and offshore, mainland and Corsica (France métropolitaine including Corsica)."],BBOX[41.15,-9.86,51.56,10.38]],ID["EPSG",2154]]
- +proj=lcc +lat_0=46.5 +lon_0=3 +lat_1=49 +lat_2=44 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs
- 145
- 2154
- EPSG:2154
- RGF93 v1 / Lambert-93
- lcc
- EPSG:7019
- false
-
-
-
-
+
+
+
+
+
+ dataset
+
+
+
+
+
+
+
+
+ PROJCRS["RGF93 v1 / Lambert-93",BASEGEOGCRS["RGF93 v1",DATUM["Reseau Geodesique Francais 1993 v1",ELLIPSOID["GRS 1980",6378137,298.257222101,LENGTHUNIT["metre",1]]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4171]],CONVERSION["Lambert-93",METHOD["Lambert Conic Conformal (2SP)",ID["EPSG",9802]],PARAMETER["Latitude of false origin",46.5,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8821]],PARAMETER["Longitude of false origin",3,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8822]],PARAMETER["Latitude of 1st standard parallel",49,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8823]],PARAMETER["Latitude of 2nd standard parallel",44,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8824]],PARAMETER["Easting at false origin",700000,LENGTHUNIT["metre",1],ID["EPSG",8826]],PARAMETER["Northing at false origin",6600000,LENGTHUNIT["metre",1],ID["EPSG",8827]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Engineering survey, topographic mapping."],AREA["France - onshore and offshore, mainland and Corsica (France métropolitaine including Corsica)."],BBOX[41.15,-9.86,51.56,10.38]],ID["EPSG",2154]]
+ +proj=lcc +lat_0=46.5 +lon_0=3 +lat_1=49 +lat_2=44 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs
+ 145
+ 2154
+ EPSG:2154
+ RGF93 v1 / Lambert-93
+ lcc
+ EPSG:7019
+ false
+
+
+
+
diff --git a/TEST/sig/emplacements réservés.qmd b/TEST/sig/emplacements réservés.qmd
index bb41605..0ea6e89 100644
--- a/TEST/sig/emplacements réservés.qmd
+++ b/TEST/sig/emplacements réservés.qmd
@@ -1,27 +1,27 @@
-
-
-
-
-
- dataset
-
-
-
-
-
-
-
-
- PROJCRS["RGF93 Lambert 93",BASEGEOGCRS["RGF93 geographiques (dms)",DATUM["Reseau Geodesique Francais 1993 v1",ELLIPSOID["GRS 1980",6378137,298.257222101,LENGTHUNIT["metre",1]]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["IGNF","RGF93G"]],CONVERSION["LAMBERT-93",METHOD["Lambert Conic Conformal (2SP)",ID["EPSG",9802]],PARAMETER["Latitude of false origin",46.5,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8821]],PARAMETER["Longitude of false origin",3,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8822]],PARAMETER["Latitude of 1st standard parallel",44,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8823]],PARAMETER["Latitude of 2nd standard parallel",49,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8824]],PARAMETER["Easting at false origin",700000,LENGTHUNIT["metre",1],ID["EPSG",8826]],PARAMETER["Northing at false origin",6600000,LENGTHUNIT["metre",1],ID["EPSG",8827]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["NATIONALE A CARACTERE LEGAL"],AREA["FRANCE METROPOLITAINE (CORSE COMPRISE)"],BBOX[41,-5.5,52,10]],ID["IGNF","LAMB93"]]
- +proj=lcc +lat_0=46.5 +lon_0=3 +lat_1=44 +lat_2=49 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs
- 10089
- 310024140
- IGNF:LAMB93
- RGF93 Lambert 93
- lcc
- EPSG:7019
- false
-
-
-
-
+
+
+
+
+
+ dataset
+
+
+
+
+
+
+
+
+ PROJCRS["RGF93 Lambert 93",BASEGEOGCRS["RGF93 geographiques (dms)",DATUM["Reseau Geodesique Francais 1993 v1",ELLIPSOID["GRS 1980",6378137,298.257222101,LENGTHUNIT["metre",1]]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["IGNF","RGF93G"]],CONVERSION["LAMBERT-93",METHOD["Lambert Conic Conformal (2SP)",ID["EPSG",9802]],PARAMETER["Latitude of false origin",46.5,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8821]],PARAMETER["Longitude of false origin",3,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8822]],PARAMETER["Latitude of 1st standard parallel",44,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8823]],PARAMETER["Latitude of 2nd standard parallel",49,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8824]],PARAMETER["Easting at false origin",700000,LENGTHUNIT["metre",1],ID["EPSG",8826]],PARAMETER["Northing at false origin",6600000,LENGTHUNIT["metre",1],ID["EPSG",8827]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["NATIONALE A CARACTERE LEGAL"],AREA["FRANCE METROPOLITAINE (CORSE COMPRISE)"],BBOX[41,-5.5,52,10]],ID["IGNF","LAMB93"]]
+ +proj=lcc +lat_0=46.5 +lon_0=3 +lat_1=44 +lat_2=49 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs
+ 10089
+ 310024140
+ IGNF:LAMB93
+ RGF93 Lambert 93
+ lcc
+ EPSG:7019
+ false
+
+
+
+
diff --git a/TEST/sig/glissement.qmd b/TEST/sig/glissement.qmd
index a585e4a..d65ea3c 100644
--- a/TEST/sig/glissement.qmd
+++ b/TEST/sig/glissement.qmd
@@ -1,27 +1,27 @@
-
-
-
-
-
- dataset
-
-
-
-
-
-
-
-
- PROJCRS["RGF93 v1 / Lambert-93",BASEGEOGCRS["RGF93 v1",DATUM["Reseau Geodesique Francais 1993 v1",ELLIPSOID["GRS 1980",6378137,298.257222101,LENGTHUNIT["metre",1]]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4171]],CONVERSION["Lambert-93",METHOD["Lambert Conic Conformal (2SP)",ID["EPSG",9802]],PARAMETER["Latitude of false origin",46.5,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8821]],PARAMETER["Longitude of false origin",3,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8822]],PARAMETER["Latitude of 1st standard parallel",49,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8823]],PARAMETER["Latitude of 2nd standard parallel",44,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8824]],PARAMETER["Easting at false origin",700000,LENGTHUNIT["metre",1],ID["EPSG",8826]],PARAMETER["Northing at false origin",6600000,LENGTHUNIT["metre",1],ID["EPSG",8827]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Engineering survey, topographic mapping."],AREA["France - onshore and offshore, mainland and Corsica (France métropolitaine including Corsica)."],BBOX[41.15,-9.86,51.56,10.38]],ID["EPSG",2154]]
- +proj=lcc +lat_0=46.5 +lon_0=3 +lat_1=49 +lat_2=44 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs
- 145
- 2154
- EPSG:2154
- RGF93 v1 / Lambert-93
- lcc
- EPSG:7019
- false
-
-
-
-
+
+
+
+
+
+ dataset
+
+
+
+
+
+
+
+
+ PROJCRS["RGF93 v1 / Lambert-93",BASEGEOGCRS["RGF93 v1",DATUM["Reseau Geodesique Francais 1993 v1",ELLIPSOID["GRS 1980",6378137,298.257222101,LENGTHUNIT["metre",1]]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4171]],CONVERSION["Lambert-93",METHOD["Lambert Conic Conformal (2SP)",ID["EPSG",9802]],PARAMETER["Latitude of false origin",46.5,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8821]],PARAMETER["Longitude of false origin",3,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8822]],PARAMETER["Latitude of 1st standard parallel",49,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8823]],PARAMETER["Latitude of 2nd standard parallel",44,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8824]],PARAMETER["Easting at false origin",700000,LENGTHUNIT["metre",1],ID["EPSG",8826]],PARAMETER["Northing at false origin",6600000,LENGTHUNIT["metre",1],ID["EPSG",8827]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Engineering survey, topographic mapping."],AREA["France - onshore and offshore, mainland and Corsica (France métropolitaine including Corsica)."],BBOX[41.15,-9.86,51.56,10.38]],ID["EPSG",2154]]
+ +proj=lcc +lat_0=46.5 +lon_0=3 +lat_1=49 +lat_2=44 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs
+ 145
+ 2154
+ EPSG:2154
+ RGF93 v1 / Lambert-93
+ lcc
+ EPSG:7019
+ false
+
+
+
+
diff --git a/TEST/sig/lignes.qmd b/TEST/sig/lignes.qmd
index a585e4a..d65ea3c 100644
--- a/TEST/sig/lignes.qmd
+++ b/TEST/sig/lignes.qmd
@@ -1,27 +1,27 @@
-
-
-
-
-
- dataset
-
-
-
-
-
-
-
-
- PROJCRS["RGF93 v1 / Lambert-93",BASEGEOGCRS["RGF93 v1",DATUM["Reseau Geodesique Francais 1993 v1",ELLIPSOID["GRS 1980",6378137,298.257222101,LENGTHUNIT["metre",1]]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4171]],CONVERSION["Lambert-93",METHOD["Lambert Conic Conformal (2SP)",ID["EPSG",9802]],PARAMETER["Latitude of false origin",46.5,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8821]],PARAMETER["Longitude of false origin",3,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8822]],PARAMETER["Latitude of 1st standard parallel",49,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8823]],PARAMETER["Latitude of 2nd standard parallel",44,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8824]],PARAMETER["Easting at false origin",700000,LENGTHUNIT["metre",1],ID["EPSG",8826]],PARAMETER["Northing at false origin",6600000,LENGTHUNIT["metre",1],ID["EPSG",8827]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Engineering survey, topographic mapping."],AREA["France - onshore and offshore, mainland and Corsica (France métropolitaine including Corsica)."],BBOX[41.15,-9.86,51.56,10.38]],ID["EPSG",2154]]
- +proj=lcc +lat_0=46.5 +lon_0=3 +lat_1=49 +lat_2=44 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs
- 145
- 2154
- EPSG:2154
- RGF93 v1 / Lambert-93
- lcc
- EPSG:7019
- false
-
-
-
-
+
+
+
+
+
+ dataset
+
+
+
+
+
+
+
+
+ PROJCRS["RGF93 v1 / Lambert-93",BASEGEOGCRS["RGF93 v1",DATUM["Reseau Geodesique Francais 1993 v1",ELLIPSOID["GRS 1980",6378137,298.257222101,LENGTHUNIT["metre",1]]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4171]],CONVERSION["Lambert-93",METHOD["Lambert Conic Conformal (2SP)",ID["EPSG",9802]],PARAMETER["Latitude of false origin",46.5,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8821]],PARAMETER["Longitude of false origin",3,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8822]],PARAMETER["Latitude of 1st standard parallel",49,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8823]],PARAMETER["Latitude of 2nd standard parallel",44,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8824]],PARAMETER["Easting at false origin",700000,LENGTHUNIT["metre",1],ID["EPSG",8826]],PARAMETER["Northing at false origin",6600000,LENGTHUNIT["metre",1],ID["EPSG",8827]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Engineering survey, topographic mapping."],AREA["France - onshore and offshore, mainland and Corsica (France métropolitaine including Corsica)."],BBOX[41.15,-9.86,51.56,10.38]],ID["EPSG",2154]]
+ +proj=lcc +lat_0=46.5 +lon_0=3 +lat_1=49 +lat_2=44 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs
+ 145
+ 2154
+ EPSG:2154
+ RGF93 v1 / Lambert-93
+ lcc
+ EPSG:7019
+ false
+
+
+
+
diff --git a/TEST/sig/muret_l93.qmd b/TEST/sig/muret_l93.qmd
index 857e160..b6df493 100644
--- a/TEST/sig/muret_l93.qmd
+++ b/TEST/sig/muret_l93.qmd
@@ -1,44 +1,44 @@
-
-
-
-
-
- dataset
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PROJCRS["RGF93 v1 / Lambert-93",BASEGEOGCRS["RGF93 v1",DATUM["Reseau Geodesique Francais 1993 v1",ELLIPSOID["GRS 1980",6378137,298.257222101,LENGTHUNIT["metre",1]]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4171]],CONVERSION["Lambert-93",METHOD["Lambert Conic Conformal (2SP)",ID["EPSG",9802]],PARAMETER["Latitude of false origin",46.5,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8821]],PARAMETER["Longitude of false origin",3,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8822]],PARAMETER["Latitude of 1st standard parallel",49,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8823]],PARAMETER["Latitude of 2nd standard parallel",44,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8824]],PARAMETER["Easting at false origin",700000,LENGTHUNIT["metre",1],ID["EPSG",8826]],PARAMETER["Northing at false origin",6600000,LENGTHUNIT["metre",1],ID["EPSG",8827]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Engineering survey, topographic mapping."],AREA["France - onshore and offshore, mainland and Corsica (France métropolitaine including Corsica)."],BBOX[41.15,-9.86,51.56,10.38]],ID["EPSG",2154]]
- +proj=lcc +lat_0=46.5 +lon_0=3 +lat_1=49 +lat_2=44 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs
- 145
- 2154
- EPSG:2154
- RGF93 v1 / Lambert-93
- lcc
- EPSG:7019
- false
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+ dataset
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PROJCRS["RGF93 v1 / Lambert-93",BASEGEOGCRS["RGF93 v1",DATUM["Reseau Geodesique Francais 1993 v1",ELLIPSOID["GRS 1980",6378137,298.257222101,LENGTHUNIT["metre",1]]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4171]],CONVERSION["Lambert-93",METHOD["Lambert Conic Conformal (2SP)",ID["EPSG",9802]],PARAMETER["Latitude of false origin",46.5,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8821]],PARAMETER["Longitude of false origin",3,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8822]],PARAMETER["Latitude of 1st standard parallel",49,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8823]],PARAMETER["Latitude of 2nd standard parallel",44,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8824]],PARAMETER["Easting at false origin",700000,LENGTHUNIT["metre",1],ID["EPSG",8826]],PARAMETER["Northing at false origin",6600000,LENGTHUNIT["metre",1],ID["EPSG",8827]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Engineering survey, topographic mapping."],AREA["France - onshore and offshore, mainland and Corsica (France métropolitaine including Corsica)."],BBOX[41.15,-9.86,51.56,10.38]],ID["EPSG",2154]]
+ +proj=lcc +lat_0=46.5 +lon_0=3 +lat_1=49 +lat_2=44 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs
+ 145
+ 2154
+ EPSG:2154
+ RGF93 v1 / Lambert-93
+ lcc
+ EPSG:7019
+ false
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/TEST/sig/prescriptions.qmd b/TEST/sig/prescriptions.qmd
index a585e4a..d65ea3c 100644
--- a/TEST/sig/prescriptions.qmd
+++ b/TEST/sig/prescriptions.qmd
@@ -1,27 +1,27 @@
-
-
-
-
-
- dataset
-
-
-
-
-
-
-
-
- PROJCRS["RGF93 v1 / Lambert-93",BASEGEOGCRS["RGF93 v1",DATUM["Reseau Geodesique Francais 1993 v1",ELLIPSOID["GRS 1980",6378137,298.257222101,LENGTHUNIT["metre",1]]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4171]],CONVERSION["Lambert-93",METHOD["Lambert Conic Conformal (2SP)",ID["EPSG",9802]],PARAMETER["Latitude of false origin",46.5,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8821]],PARAMETER["Longitude of false origin",3,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8822]],PARAMETER["Latitude of 1st standard parallel",49,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8823]],PARAMETER["Latitude of 2nd standard parallel",44,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8824]],PARAMETER["Easting at false origin",700000,LENGTHUNIT["metre",1],ID["EPSG",8826]],PARAMETER["Northing at false origin",6600000,LENGTHUNIT["metre",1],ID["EPSG",8827]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Engineering survey, topographic mapping."],AREA["France - onshore and offshore, mainland and Corsica (France métropolitaine including Corsica)."],BBOX[41.15,-9.86,51.56,10.38]],ID["EPSG",2154]]
- +proj=lcc +lat_0=46.5 +lon_0=3 +lat_1=49 +lat_2=44 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs
- 145
- 2154
- EPSG:2154
- RGF93 v1 / Lambert-93
- lcc
- EPSG:7019
- false
-
-
-
-
+
+
+
+
+
+ dataset
+
+
+
+
+
+
+
+
+ PROJCRS["RGF93 v1 / Lambert-93",BASEGEOGCRS["RGF93 v1",DATUM["Reseau Geodesique Francais 1993 v1",ELLIPSOID["GRS 1980",6378137,298.257222101,LENGTHUNIT["metre",1]]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4171]],CONVERSION["Lambert-93",METHOD["Lambert Conic Conformal (2SP)",ID["EPSG",9802]],PARAMETER["Latitude of false origin",46.5,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8821]],PARAMETER["Longitude of false origin",3,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8822]],PARAMETER["Latitude of 1st standard parallel",49,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8823]],PARAMETER["Latitude of 2nd standard parallel",44,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8824]],PARAMETER["Easting at false origin",700000,LENGTHUNIT["metre",1],ID["EPSG",8826]],PARAMETER["Northing at false origin",6600000,LENGTHUNIT["metre",1],ID["EPSG",8827]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Engineering survey, topographic mapping."],AREA["France - onshore and offshore, mainland and Corsica (France métropolitaine including Corsica)."],BBOX[41.15,-9.86,51.56,10.38]],ID["EPSG",2154]]
+ +proj=lcc +lat_0=46.5 +lon_0=3 +lat_1=49 +lat_2=44 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs
+ 145
+ 2154
+ EPSG:2154
+ RGF93 v1 / Lambert-93
+ lcc
+ EPSG:7019
+ false
+
+
+
+
diff --git a/TEST/sig/zone A.qml b/TEST/sig/zone A.qml
index 4fab670..2383490 100644
--- a/TEST/sig/zone A.qml
+++ b/TEST/sig/zone A.qml
@@ -1,669 +1,669 @@
-
-
-
- 1
- 1
- 1
- 0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0
- 0
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0
-
-
- 0
- generatedlayout
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "LIBELLE"
-
- 2
-
+
+
+
+ 1
+ 1
+ 1
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 0
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ generatedlayout
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ "LIBELLE"
+
+ 2
+
diff --git a/TEST/sig/zone AU.qmd b/TEST/sig/zone AU.qmd
index 1eb6504..71ab0d2 100644
--- a/TEST/sig/zone AU.qmd
+++ b/TEST/sig/zone AU.qmd
@@ -1,44 +1,44 @@
-
-
-
-
-
- dataset
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PROJCRS["RGF93 v1 / Lambert-93",BASEGEOGCRS["RGF93 v1",DATUM["Reseau Geodesique Francais 1993 v1",ELLIPSOID["GRS 1980",6378137,298.257222101,LENGTHUNIT["metre",1]]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4171]],CONVERSION["Lambert-93",METHOD["Lambert Conic Conformal (2SP)",ID["EPSG",9802]],PARAMETER["Latitude of false origin",46.5,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8821]],PARAMETER["Longitude of false origin",3,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8822]],PARAMETER["Latitude of 1st standard parallel",49,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8823]],PARAMETER["Latitude of 2nd standard parallel",44,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8824]],PARAMETER["Easting at false origin",700000,LENGTHUNIT["metre",1],ID["EPSG",8826]],PARAMETER["Northing at false origin",6600000,LENGTHUNIT["metre",1],ID["EPSG",8827]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Engineering survey, topographic mapping."],AREA["France - onshore and offshore, mainland and Corsica (France métropolitaine including Corsica)."],BBOX[41.15,-9.86,51.56,10.38]],ID["EPSG",2154]]
- +proj=lcc +lat_0=46.5 +lon_0=3 +lat_1=49 +lat_2=44 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs
- 145
- 2154
- EPSG:2154
- RGF93 v1 / Lambert-93
- lcc
- EPSG:7019
- false
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+ dataset
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PROJCRS["RGF93 v1 / Lambert-93",BASEGEOGCRS["RGF93 v1",DATUM["Reseau Geodesique Francais 1993 v1",ELLIPSOID["GRS 1980",6378137,298.257222101,LENGTHUNIT["metre",1]]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4171]],CONVERSION["Lambert-93",METHOD["Lambert Conic Conformal (2SP)",ID["EPSG",9802]],PARAMETER["Latitude of false origin",46.5,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8821]],PARAMETER["Longitude of false origin",3,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8822]],PARAMETER["Latitude of 1st standard parallel",49,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8823]],PARAMETER["Latitude of 2nd standard parallel",44,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8824]],PARAMETER["Easting at false origin",700000,LENGTHUNIT["metre",1],ID["EPSG",8826]],PARAMETER["Northing at false origin",6600000,LENGTHUNIT["metre",1],ID["EPSG",8827]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Engineering survey, topographic mapping."],AREA["France - onshore and offshore, mainland and Corsica (France métropolitaine including Corsica)."],BBOX[41.15,-9.86,51.56,10.38]],ID["EPSG",2154]]
+ +proj=lcc +lat_0=46.5 +lon_0=3 +lat_1=49 +lat_2=44 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs
+ 145
+ 2154
+ EPSG:2154
+ RGF93 v1 / Lambert-93
+ lcc
+ EPSG:7019
+ false
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/TEST/sig/zone AU.qml b/TEST/sig/zone AU.qml
index 848d67d..dfaefba 100644
--- a/TEST/sig/zone AU.qml
+++ b/TEST/sig/zone AU.qml
@@ -1,537 +1,537 @@
-
-
-
- 1
- 1
- 1
- 0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0
- 0
- 1
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0
-
-
- 0
- generatedlayout
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- "LIBELLE"
-
- 2
-
+
+
+
+ 1
+ 1
+ 1
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+ 0
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0
+
+
+ 0
+ generatedlayout
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ "LIBELLE"
+
+ 2
+
diff --git a/TEST/sig/zones humides.qmd b/TEST/sig/zones humides.qmd
index a585e4a..d65ea3c 100644
--- a/TEST/sig/zones humides.qmd
+++ b/TEST/sig/zones humides.qmd
@@ -1,27 +1,27 @@
-
-
-
-
-
- dataset
-
-
-
-
-
-
-
-
- PROJCRS["RGF93 v1 / Lambert-93",BASEGEOGCRS["RGF93 v1",DATUM["Reseau Geodesique Francais 1993 v1",ELLIPSOID["GRS 1980",6378137,298.257222101,LENGTHUNIT["metre",1]]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4171]],CONVERSION["Lambert-93",METHOD["Lambert Conic Conformal (2SP)",ID["EPSG",9802]],PARAMETER["Latitude of false origin",46.5,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8821]],PARAMETER["Longitude of false origin",3,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8822]],PARAMETER["Latitude of 1st standard parallel",49,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8823]],PARAMETER["Latitude of 2nd standard parallel",44,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8824]],PARAMETER["Easting at false origin",700000,LENGTHUNIT["metre",1],ID["EPSG",8826]],PARAMETER["Northing at false origin",6600000,LENGTHUNIT["metre",1],ID["EPSG",8827]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Engineering survey, topographic mapping."],AREA["France - onshore and offshore, mainland and Corsica (France métropolitaine including Corsica)."],BBOX[41.15,-9.86,51.56,10.38]],ID["EPSG",2154]]
- +proj=lcc +lat_0=46.5 +lon_0=3 +lat_1=49 +lat_2=44 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs
- 145
- 2154
- EPSG:2154
- RGF93 v1 / Lambert-93
- lcc
- EPSG:7019
- false
-
-
-
-
+
+
+
+
+
+ dataset
+
+
+
+
+
+
+
+
+ PROJCRS["RGF93 v1 / Lambert-93",BASEGEOGCRS["RGF93 v1",DATUM["Reseau Geodesique Francais 1993 v1",ELLIPSOID["GRS 1980",6378137,298.257222101,LENGTHUNIT["metre",1]]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4171]],CONVERSION["Lambert-93",METHOD["Lambert Conic Conformal (2SP)",ID["EPSG",9802]],PARAMETER["Latitude of false origin",46.5,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8821]],PARAMETER["Longitude of false origin",3,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8822]],PARAMETER["Latitude of 1st standard parallel",49,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8823]],PARAMETER["Latitude of 2nd standard parallel",44,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8824]],PARAMETER["Easting at false origin",700000,LENGTHUNIT["metre",1],ID["EPSG",8826]],PARAMETER["Northing at false origin",6600000,LENGTHUNIT["metre",1],ID["EPSG",8827]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Engineering survey, topographic mapping."],AREA["France - onshore and offshore, mainland and Corsica (France métropolitaine including Corsica)."],BBOX[41.15,-9.86,51.56,10.38]],ID["EPSG",2154]]
+ +proj=lcc +lat_0=46.5 +lon_0=3 +lat_1=49 +lat_2=44 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs
+ 145
+ 2154
+ EPSG:2154
+ RGF93 v1 / Lambert-93
+ lcc
+ EPSG:7019
+ false
+
+
+
+
diff --git a/algorithme.txt b/algorithme.txt
index 327e2aa..c6e8c36 100644
--- a/algorithme.txt
+++ b/algorithme.txt
@@ -1,260 +1,260 @@
-~~ 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 */
+~~ 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 */
diff --git a/script_pre_traitement_dory.py b/script_pre_traitement_dory.py
index beeb8c1..f314f43 100644
--- a/script_pre_traitement_dory.py
+++ b/script_pre_traitement_dory.py
@@ -1,287 +1,441 @@
-# ~~ Script DORY Digitanie ~~
-
-# Voir algorithme.txt pour plus de détails et commentaires
-
-import os # getcwd(),
-
-
-
-
-
-# - une liste des extensions nécessaires
-NECESSAIRES = ["cpg", "dbf", "prj", "shp", "shx"]
-
-# - une liste des extentions auxiliaires
-AUXILIAIRES = ["qix", "qmd", "qml"]
-
-# - la configuration de la feuille Excel
-CONFIG = {"NOM" : "A5",
- "TYPE" : "B5",
- "NB_FICHIERS" : "C5",
- "ENCODAGE" : "D5",
- "PROJECTION" : "E5",
- "VALIDITE" : "F5"}
-
-
-
-# REPRESENTATION DES DONNEES
-
-class _Fichier:
- def __init__(self,
- nom_original="Pas de nom original",
- chemin="Pas de chemin",
- extension="Pas d'extension",
- nom= "Pas de nom",
- implication="Non-conforme"):
- self.nom_original = nom_original # - son nom original - string
- self.chemin = chemin # - son chemin - string
- self.extension = extension # - son extension - string
- self.nom = nom # - son nom formaté - string
- self.implication = implication # - son implication - enum
- # {"Nécessaire",
- # "Auxiliaire",
- # "Non-conforme",
- # "A-ignorer"}
- def afficher(self):
- print("nom : ".center(16), self.nom)
- print("nom orig : ".center(16), self.nom_original)
- print("ext : ".center(16), self.extension)
- print("chemin : ".center(16), self.chemin)
- print("implication :".center(16), self.implication)
-
-
-class _Catalogue:
- def __init__(self,
- necessaires="Pas de dico",
- auxiliaires="Pas de dico",
- non_conformes="Pas de dico"):
- self.necessaires = necessaires # - son dictionnaire de fichiers nécessaires avec pour clé l'extention
- # de chaque fichier - dico de paire string : _Fichier
- self.auxiliaires = auxiliaires # - son dictionnaire de fichiers auxiliaires avec pour clé l'extention
- # de chaque fichier - dico de paire string : _Fichier
- self.non_conformes = non_conformes # - son dictionnaire de fichiers non-conformes avec pour clé l'extention
- # de chaque fichier - dico de paire string : _Fichier
-
-
-class _Projet:
- def __init__(self,
- nom="Pas de nom",
- catalogue="Pas de catalogue",
- nb_fichiers=0,
- conformite=False,
- projection="Pas de projection",
- encodage="Pas d'encodage"):
- self.nom = nom # - son nom - string
- self.catalogue = catalogue # - son catalogue - _Catalogue
- self.nb_fichiers = nb_fichiers # - son nombre de fichiers - entier
- self.conformite = conformite # - sa conformité - bool
- self.projection = projection # - sa projection géodésique - string // ou énumération --> voir Constantes
- self.encodage = encodage # - son type d'encodage prévu dans QGIS string
- # /* pour ce script, ce devrait être forcement "UTF8" */
-
-
-# DEFINITIONS DE FONCTIONS
-
-def formatter(chaine):
- """Formate selon nomenclature.
-
- Formate la chaine de caractères passée en paramètre :
- Enlève tous les accents français. Enlève la cédille du C.
- Remplace les espaces ' ' et les traits d'union '-' par
- des tirets bas '_'.
- Ne traite pas pour le moment le AE et OE ligaturé.
- """
- #TODO : gérer les accents sur majuscules
- #TODO : amélioration ou exercice, utiliser la méthode str.translate() et maketrans
- resultat = ""
- for c in chaine:
- match c:
- case "à" | "â" | "ä":
- resultat+= "a"
- case "é" | "è" | "ê" | "ë":
- resultat+= "e"
- case "î" | "ï":
- resultat+= "i"
- case "ô" | "ö":
- resultat+= "o"
- case "ù" | "û" | "ü":
- resultat+= "u"
- case "ÿ":
- resultat+= "y"
- case "ç":
- resultat+= "c"
- case " " | "-":
- resultat+= "_"
- case _:
- resultat+= c
- return resultat
-
-
-
-def impliquer(fichier):
- """Définir l'implication d'un fichier
-
- Les fichiers nécessaires sont indispensables sinon l'importation
- de la couche échoue.
- Les fichiers optionels (ou auxiliaires) contiennent des données
- supplémentaires lors de l'importation.
- Les fichiers non conformes pourraient être importer dans QGIS. Mais,
- ne sont pas conformes au cahier des charges.
- Les fichiers ignorés ne fonctionnent pas dans QGIS.
- L'implication est définie en fonction de l'extension du fichier.
- """
- resultat = fichier
- match fichier.extension:
- case "dbf" | "cpg" | "prj" | "shx" | "shp":
- resultat.implication = "Necessaire"
- case "qix" | "qmd" | "qml":
- resultat.implication = "Auxiliaire"
- case "qpkg" | "sqlite":
- resultat.implication = "Non-conforme"
- case _:
- resultat.implication = "A-ignorer"
- return resultat
-
-
-
-
-# DEBUT DU PROGRAMME
-
-liste = [] # - une liste des fichiers list _Fichier
-dico = {} # - un dictionnaire des projets avec pour clé le nom de chaque projet
- # dico de paire string : Entité Projet
-racine = os.getcwd() # - un chemin absolue vers le repertoire racine à traiter string
-print(racine)
-
-
-
-# --recupérer le chemin du dossier à traiter
- # Si il y a PAS un dossier de traitement dans le working directory Alors
-pas_de_dossier = True
-
-for a in os.scandir("./"):
- if a.is_dir():
- #il y a un dossier
- pas_de_dossier = False
-if pas_de_dossier:
- print("Pas de dossier trouvé...\nFin de programme\n")
- os.system("pause")
- # fin du programme
- exit()
-else:
- print(f"Dossier à Traiter trouvé : {a.name}")
- racine = a
-
-
-# --analyser le dossier
- # initialiser une liste de _Fichiers
- liste = []
- # Pour Chaque fichier des dossiers et sous dossiers à explorer Faire
- for dossier_courant, list_dossiers, list_fichiers in os.walk(racine):
- for fichier_courant in list_fichiers:
- # --lire, analyser chaque fichier et peupler la liste
- # initialiser un _Fichier
- ce_Fichier = _Fichier()
- # lire son chemin
- ce_Fichier.chemin = fichier_courant
- # déterminer son nom original et son extension
- # lire le nom original
- # lire son extension
- ce_Fichier.nom_original, ce_Fichier.extension = ce_Fichier.chemin.split(".")
- # formatter et écrire le nom
- ce_Fichier.nom = formatter(ce_Fichier.nom_original)
- # déterminer son implication
- ce_Fichier = impliquer(ce_Fichier) # TODO impliquer(), A VOIR si je peux passer juste l'implicatin et non l'ojbet en entier
- # ajouter le _Fichier à la liste
- liste.append(ce_Fichier)
- # Fin Pour
-
- # /* Ici la liste des _Fichiers doit être correctement remplie */
- #TEST affichage de la liste de fichier
- for a in liste:
- a.afficher()
- print("\n\n")
-
-
-
- os.system("pause")
-
- # 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 */
+# ~~ Script DORY Digitanie ~~
+
+# Voir algorithme.txt pour plus de détails et commentaires
+
+
+
+import os # getcwd(),
+
+
+## TODO : voir le pb des dicos qui auraient plusieurs fois les memes clés (se qui n'est pas possible) à cause de plusieurs fichiers qui auraient la meme extension
+
+
+
+# - une liste des extensions nécessaires
+NECESSAIRES = ["cpg", "dbf", "prj", "shp", "shx"]
+
+# - une liste des extentions auxiliaires
+AUXILIAIRES = ["qix", "qmd", "qml"]
+
+# - la configuration de la feuille Excel
+CONFIG = {"NOM" : "A5",
+ "TYPE" : "B5",
+ "NB_FICHIERS" : "C5",
+ "ENCODAGE" : "D5",
+ "PROJECTION" : "E5",
+ "VALIDITE" : "F5"}
+
+
+
+# REPRESENTATION DES DONNEES
+
+class _Fichier:
+ def __init__(self,
+ nom_original="Pas de nom original",
+ chemin="Pas de chemin",
+ extension="Pas d'extension",
+ nom= "Pas de nom",
+ implication="Non-conforme"):
+ self.nom_original = nom_original # - son nom original - string
+ self.chemin = chemin # - son chemin - string
+ self.extension = extension # - son extension - string
+ self.nom = nom # - son nom formaté - string
+ self.implication = implication # - son implication - enum
+ # {"Nécessaire",
+ # "Auxiliaire",
+ # "Non-conforme",
+ # "A-ignorer"}
+ def afficher(self):
+ """Affiche dans la sortie standard les éléments du fichier
+ """
+ print("nom : ".center(16), self.nom)
+ print("nom orig : ".center(16), self.nom_original)
+ print("ext : ".center(16), self.extension)
+ print("chemin : ".center(16), self.chemin)
+ print("implication :".center(16), self.implication)
+
+ def impliquer(self):
+ """Définir l'implication d'un fichier
+
+ Les fichiers nécessaires sont indispensables sinon l'importation
+ de la couche échoue.
+ Les fichiers optionels (ou auxiliaires) contiennent des données
+ supplémentaires lors de l'importation.
+ Les fichiers non conformes pourraient être importer dans QGIS. Mais,
+ ne sont pas conformes au cahier des charges.
+ Les fichiers ignorés ne fonctionnent pas dans QGIS.
+ L'implication est définie en fonction de l'extension du fichier.
+ """
+ match self.extension:
+ case "dbf" | "cpg" | "prj" | "shx" | "shp":
+ self.implication = "Necessaire"
+ case "qix" | "qmd" | "qml":
+ self.implication = "Auxiliaire"
+ case "gpkg" | "sqlite":
+ self.implication = "Non-conforme"
+ case _:
+ self.implication = "A-ignorer"
+ # TODO : gerer la casse des extensions pour que le controle se fasse
+
+
+
+## TODO Mettre les init de dico à vide {} plutot ??
+class _Catalogue:
+ def __init__(self,
+ necessaires,
+ auxiliaires,
+ non_conformes
+ ):
+ self.necessaires = necessaires # - son dictionnaire de fichiers nécessaires avec pour clé l'extention
+ # de chaque fichier - dico de paire string : _Fichier
+ self.auxiliaires = auxiliaires # - son dictionnaire de fichiers auxiliaires avec pour clé l'extention
+ # de chaque fichier - dico de paire string : _Fichier
+ self.non_conformes = non_conformes # - son dictionnaire de fichiers non-conformes avec pour clé l'extention
+ # de chaque fichier - dico de paire string : _Fichier
+ # PB : Pour le moment cette facon de representer des groupes de fichiers
+ # ne gèrent pas le fait qu'il y ai plusieurs fichiers avec la meme extension,
+ # en effet, je ne peux pas avoir plusieurs clés avec la meme extension
+
+ def afficher(self):
+ """Affiche le catalogue dans la sortie standard
+
+ Affiche aussi un message si pour chaque dictionnaire vide
+ """
+ if self.necessaires: # TODO renvoie False si dico = {} ou alors dois je écrire if necessaires == {}
+ print("fichiers nécessaires :".center(28))
+ for fichier in self.necessaires.values():
+ print(" ", fichier.nom, fichier.extension)
+ else:
+ print("Pas de Nécessaires".center(28))
+ if self.auxiliaires:
+ print("fichiers auxiliaires :".center(28))
+ for fichier in self.auxiliaires.values():
+ print(" ", fichier.nom, fichier.extension)
+ else:
+ print("Pas d'Auxiliaires".center(28))
+ if self.non_conformes:
+ print("fichiers non conformes :".center(28))
+ for fichier in self.non_conformes.values():
+ print(" ", fichier.non_conformes)
+ else:
+ print("Pas de Non-conformes".center(28))
+
+
+
+class _Projet:
+ def __init__(self,
+ nom="Pas de nom",
+ necessaires = {},
+ auxiliaires = {},
+ non_conformes = {},
+ nb_fichiers=0,
+ conformite="Non conforme",
+ projection="Pas de projection",
+ encodage="Pas d'encodage"):
+ self.nom = nom # - son nom - string
+ self.necessaires = necessaires
+ self.auxiliaires = auxiliaires
+ self.non_conformes = non_conformes
+ self.nb_fichiers = nb_fichiers # - son nombre de fichiers - entier
+ self.conformite = conformite # - sa conformité - bool
+ self.projection = projection # - sa projection géodésique - string // ou énumération --> voir Constantes
+ self.encodage = encodage # - son type d'encodage prévu dans QGIS string
+ # /* pour ce script, ce devrait être forcement "UTF8" */
+
+ def afficher(self):
+ """Affiche dans la sortie standard le contenu d'un projet
+ """
+ print("nom : ".center(16), self.nom)
+ print("nb fichiers :".center(16), self.nb_fichiers)
+ print("conformité :".center(16), self.conformite)
+ print("projection :".center(16), self.projection)
+ print("encodage :".center(16), self.encodage)
+ print("necessaires :".center(16), self.necessaires)
+ print("auxiliaires :".center(16), self.auxiliaires)
+ print("non_conformes :".center(16), self.non_conformes)
+ #self.catalogue.afficher()
+
+ def cataloguer(self, fichier):
+ """Catalogue le fichier dans le projet
+
+ La méthode ajoute le fichier suivant son extension
+ dans un des dictionnaires du catalogue
+ """
+ match fichier.implication:
+ case "Necessaire":
+ self.necessaires[fichier.extension] = fichier
+ case "Auxiliaire":
+ self.auxiliaires[fichier.extension] = fichier
+ case "Non-conforme":
+ self.non_conformes[fichier.extension] = fichier
+
+ def lire_projection(self):
+ """Récupère la projection des données géomatiques définie.
+
+ Lis la première ligne du fichier *.PRJ du projet
+ et controle la présence de la chaine "RGF_1993_Lambert_93"
+ """
+ if "prj" in self.necessaires:
+ df = open(self.necessaires["prj"].chemin)
+ chaine = df.readline()
+ df.close()
+ if "RGF_1993_Lambert_93" in chaine:
+ self.projection = "LAMBERT93"
+ else:
+ print(projet.nom, " : pas de PRJ trouvé --> pas de projection définie")
+
+ def lire_encodage(self):
+ """Récupère l'encodage prévu pour les fichiers dans QGIS
+
+ Lis la première ligne du fichier *.CPG du projet
+ et controle la présence de la chaine "UTF-8"
+ """
+ if "cpg" in self.necessaires:
+ df = open(self.necessaires["cpg"].chemin)
+ chaine = df.readline()
+ #print("encod lu : ", chaine)
+ df.close()
+ if "UTF-8" in chaine:
+ self.encodage = "UTF8"
+ else:
+ print(projet.nom, " : pas de CPG trouvé --> pas d'encodage définie")
+
+ def valider(self):
+ """Valide la conformité du projet
+
+ Controle si les 5 fichiers differents nécessaires sont présents.
+ Controle si la projection est correcte (pour le moment Lambert93).
+ Controle si l'encodage défini pour l'import dans QGIS est bien UTF8.
+ Si ces 3 controles sont OK, alors le projet est défini comme valide.
+ """
+ nb_controles_OK = 0
+ # Controle présences fichiers
+ valide = [False, False, False, False, False]
+ for extension in self.necessaires.keys():
+ match extension:
+ case "dbf":
+ valide[0] = True
+ case "cpg":
+ valide[1] = True
+ case "prj" :
+ valide[2] = True
+ case "shx" :
+ valide[3] = True
+ case "shp" :
+ valide[4] = True
+ if valide[0] and valide[1] and valide[2] and valide[3] and valide[4]:
+ nb_controles_OK += 1
+
+ # Controle projection
+ if self.projection == "LAMBERT93":
+ nb_controles_OK += 1
+
+ # Controle encodage
+ if self.encodage == "UTF8":
+ nb_controles_OK += 1
+
+ # Si les 3 controles sont OK ALors le projet est conforme
+ if nb_controles_OK == 3:
+ self.conformite = "Conforme"
+
+
+
+# DEFINITIONS DE FONCTIONS
+
+def formatter(chaine):
+ """Formate selon nomenclature.
+
+ Formate la chaine de caractères passée en paramètre :
+ Enlève tous les accents français. Enlève la cédille du C.
+ Remplace les espaces ' ' et les traits d'union '-' par
+ des tirets bas '_'.
+ Ne traite pas pour le moment le AE et OE ligaturé.
+ """
+ #TODO : gérer les accents sur majuscules
+ #TODO : amélioration ou exercice, utiliser la méthode str.translate() et maketrans
+ resultat = ""
+ for c in chaine:
+ match c:
+ case "à" | "â" | "ä":
+ resultat+= "a"
+ case "é" | "è" | "ê" | "ë":
+ resultat+= "e"
+ case "î" | "ï":
+ resultat+= "i"
+ case "ô" | "ö":
+ resultat+= "o"
+ case "ù" | "û" | "ü":
+ resultat+= "u"
+ case "ÿ":
+ resultat+= "y"
+ case "ç":
+ resultat+= "c"
+ case " " | "-":
+ resultat+= "_"
+ case _:
+ resultat+= c
+ return resultat
+
+
+
+
+# DEBUT DU PROGRAMME
+
+liste = [] # - une liste des fichiers list _Fichier
+dico = {} # - un dictionnaire des projets avec pour clé le nom de chaque projet
+ # dico de paire string : Entité Projet
+racine = os.getcwd() # - un chemin absolue vers le repertoire racine à traiter string
+print("Racine : ".center(18), racine)
+
+
+
+# --recupérer le chemin du dossier à traiter
+ # Si il y a PAS un dossier de traitement dans le working directory Alors
+pas_de_dossier = True
+
+for a in os.scandir():
+ if a.is_dir():
+ #il y a un dossier
+ pas_de_dossier = False
+if pas_de_dossier:
+ print("Pas de dossier trouvé...\nFin de programme\n")
+ os.system("pause")
+ # fin du programme
+ exit()
+else:
+ print(f"Dossier à Traiter trouvé : {a.name}")
+ racine = a
+
+
+# --analyser le dossier
+ # initialiser une liste de _Fichiers
+liste = []
+ # Pour Chaque fichier des dossiers et sous dossiers à explorer Faire
+for dossier_courant, list_sousdossiers, list_fichiers in os.walk(racine): ##TODO voir la fonction fwalk qui renvoie un 4-tuple(dirpath, dirnames, filenames, dirfd), and it supports dir_fd
+ for fichier_courant in list_fichiers:
+ # --lire, analyser chaque fichier et peupler la liste
+ # initialiser un _Fichier
+ ce_Fichier = _Fichier()
+ # lire son chemin
+ ce_Fichier.chemin = dossier_courant + "\\" + fichier_courant
+ # déterminer son nom original et son extension
+ # lire le nom original
+ # lire son extension
+ ce_Fichier.nom_original, ce_Fichier.extension = fichier_courant.split(".")
+ # formatter et écrire le nom
+ ce_Fichier.nom = formatter(ce_Fichier.nom_original)
+ # déterminer son implication
+ ce_Fichier.impliquer()
+ # ajouter le _Fichier à la liste
+ liste.append(ce_Fichier)
+ # Fin Pour
+
+ # /* Ici la liste des _Fichiers doit être correctement remplie */
+ #TEST affichage de la liste de fichier
+
+ # initialiser un dictionnaire de _Projets avec comme clé leurs noms respectifs
+print("Init Dico\n")
+dico = {}
+ # Pour Chaque fichier de la liste Faire
+for fichier_courant in liste:
+ if fichier_courant.implication not in "A-ignorer":
+ # --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
+ if fichier_courant.nom not in dico:
+ # initialiser un _Projet
+ projet = _Projet()
+ projet.necessaires = {}
+ projet.auxiliaires = {}
+ projet.non_conformes = {}
+ projet.nom = fichier_courant.nom
+ print("création clé : ", projet.nom)
+ # ajouter le nom comme clé dans le dictionnaire
+ # associer le projet à cette clé
+ dico[projet.nom] = projet
+
+ #test contenu du dico
+
+ # Fin Si
+ # cataloguer le fichier dans le projet concerné
+ projet.cataloguer(fichier_courant)
+ # il y a un fichier de plus au projet
+ projet.nb_fichiers += 1
+ else:
+ # sinon le fichier est a ignorer
+ print("Ignoré : ".center(16), fichier_courant.nom_original)
+ # Fin Pour
+
+ # Pour Chaque projet du dictionnaire Faire
+for projet in dico.values():
+ # --analyser et completer les infos du projet courant
+ # /* conformité, projection, encodage etc */
+ # lire la projection du projet courant
+ projet.lire_projection()
+ # lire l'encodage du projet courant
+ projet.lire_encodage()
+ # Si tous les fichiers nécessaires sont présents ET
+ # la projection est correcte ET
+ # l'encodage est correct Alors
+ # passer le projet à conforme
+ projet.valider()
+ # Fin Si
+ # Fin Pour
+
+ # /* Ici le dictionnaire des _Projets doit être correctement remplie */
+
+
+os.system("pause")
+
+# --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 */