|
|
@@ -1,6 +1,227 @@
|
|
|
'''
|
|
|
-Created on 10 sept. 2018
|
|
|
|
|
|
-@author: OMASSOT
|
|
|
+@author: olivier.massot, sept 2018
|
|
|
'''
|
|
|
+from datetime import datetime
|
|
|
+import logging
|
|
|
|
|
|
+import shapefile
|
|
|
+
|
|
|
+from core import logconf
|
|
|
+from core.constants import MAIN
|
|
|
+
|
|
|
+
|
|
|
+logger = logging.getLogger("netgeo_checker")
|
|
|
+logconf.start("netgeo_checker", logging.INFO)
|
|
|
+
|
|
|
+# # POUR TESTER, décommenter les lignes suivantes
|
|
|
+##-----------------------------------------------
|
|
|
+
|
|
|
+# logger.handlers = [h for h in logger.handlers if (type(h) == logging.StreamHandler)]
|
|
|
+# logger.warning("<<<<<<<<<<<<<< Mode TEST >>>>>>>>>>>>>>>>>")
|
|
|
+
|
|
|
+##-----------------------------------------------
|
|
|
+
|
|
|
+ETUDE, IN_DIR = False, MAIN / "rsc" / "data_in" / "SCOPELEC_CAP_097AP0_REC_180829_OK"
|
|
|
+# ETUDE, IN_DIR = True, MAIN / "rsc" / "data_in" / "SCOPELEC_101BP0_APD_180725"
|
|
|
+
|
|
|
+COUCHES = ["artere_geo.shp", "cable_geo.shp", "equipement_passif.shp", "noeud_geo.shp", "tranchee_geo.shp", "zapbo_geo.shp"]
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+def main(etude=False):
|
|
|
+
|
|
|
+ # Controle des tranchées
|
|
|
+ filename = IN_DIR / "tranchee_geo.shp"
|
|
|
+
|
|
|
+ logging.info("***** Traitement du fichier '%s' *****", filename.name)
|
|
|
+ logging.info("Type de dossier: %s", ("ADP" if etude else "DOE"))
|
|
|
+
|
|
|
+ sf = shapefile.Reader(filename)
|
|
|
+
|
|
|
+ if sf.shapeType != shapefile.POLYLINE:
|
|
|
+ logger.error("Le fichier shapefile n'est pas de type PolyLigne", filename)
|
|
|
+ return
|
|
|
+
|
|
|
+ tranchees = sf.shapeRecords()
|
|
|
+ if not tranchees:
|
|
|
+ logger.warning("Le fichier shapefile ne contient aucune donnees")
|
|
|
+
|
|
|
+ for i, tr_record in enumerate(tranchees):
|
|
|
+
|
|
|
+ fields = [f for f in sf.fields if f[0] != 'DeletionFlag']
|
|
|
+ tr = {field[0].lower(): tr_record.record[i] for i, field in enumerate(fields)}
|
|
|
+
|
|
|
+ logging.info("\n> Enregistrement %s\n", i)
|
|
|
+
|
|
|
+
|
|
|
+ if not tr.get("TR_CODE"):
|
|
|
+ logger.error("- TR_CODE est manquant")
|
|
|
+
|
|
|
+ if not tr.get("TR_NOM"):
|
|
|
+ logger.error("- TR_NOM est manquant")
|
|
|
+
|
|
|
+ if tr.get("TR_NOM") != tr.get("TR_CODE"):
|
|
|
+ logging.error("- Les champs TR_CODE et TR_NOM sont différents")
|
|
|
+
|
|
|
+ # Facultatif en etude
|
|
|
+ if not tr.get("TR_ID_INSE"):
|
|
|
+ if not etude:
|
|
|
+ logger.error("- TR_ID_INSE est manquant")
|
|
|
+ else:
|
|
|
+ pass
|
|
|
+# if not tr["TR_ID_INSE"] in LISTE_INSEE:
|
|
|
+# logger.error("- TR_ID_INSE n'existe pas dans la table ...")
|
|
|
+
|
|
|
+ # Facultatif en etude
|
|
|
+ if not tr.get("TR_VOIE"):
|
|
|
+ if not etude:
|
|
|
+ logger.error("- TR_VOIE est manquant")
|
|
|
+
|
|
|
+ if not tr.get("TR_TYP_IMP"):
|
|
|
+ logger.error("- TR_TYP_IMP est manquant")
|
|
|
+ else:
|
|
|
+ if not tr["TR_TYP_IMP"] in ("ACCOTEMENT STABILISE", "ACCOTEMENT NON STABILISE", "CHAUSSEE LOURDE", "CHAUSSEE LEGERE", "FOSSE", "TROTTOIR", "ESPACE VERT", "ENCORBELLEMENT"):
|
|
|
+ logger.error("- TR_TYP_IMP ne possède pas une valeur valide ('%s')", tr["TR_TYP_IMP"])
|
|
|
+
|
|
|
+ if not tr.get("TR_MOD_POS"):
|
|
|
+ logger.error("- TR_MOD_POS est manquant")
|
|
|
+ else:
|
|
|
+ if not tr["TR_MOD_POS"] in ("TRADITIONNEL", "MICRO TRANCHEE", "FONCAGE 60", "FONCAGE 90", "FONCAGE 120", "TRANCHEUSE", "FORAGE URBAIN", "FORAGE RURAL", "ENCORBELLEMENT"):
|
|
|
+ logger.error("- TR_MOD_POS ne possède pas une valeur valide ('%s')", tr["TR_MOD_POS"])
|
|
|
+
|
|
|
+ if not tr.get("TR_MOD_POS_AI"):
|
|
|
+ logger.error("- TR_MOD_POS_AI est manquant")
|
|
|
+ else:
|
|
|
+ if not tr["TR_MOD_POS_AI"] in ("TRA", "ALL", "FONCAGE 60", "FON", "FOR", "ENC"):
|
|
|
+ logger.error("- TR_MOD_POS_AI ne possède pas une valeur valide ('%s')", tr["TR_MOD_POS_AI"])
|
|
|
+
|
|
|
+ if not tr.get("TR_LONG"):
|
|
|
+ logger.error("- TR_LONG est manquant")
|
|
|
+ else:
|
|
|
+ try:
|
|
|
+ _ = float(tr["TR_LONG"])
|
|
|
+ except ValueError:
|
|
|
+ logger.error("- TR_LONG ne possède pas une valeur valide ('%s')", tr["TR_LONG"])
|
|
|
+
|
|
|
+ # Facultatif en etude
|
|
|
+ if not tr.get("TR_LARG"):
|
|
|
+ if not etude:
|
|
|
+ logger.error("- TR_LARG est manquant")
|
|
|
+ else:
|
|
|
+ try:
|
|
|
+ _ = float(tr["TR_LARG"])
|
|
|
+ except ValueError:
|
|
|
+ logger.error("- TR_LARG ne possède pas une valeur valide ('%s')", tr["TR_LARG"])
|
|
|
+
|
|
|
+ if not tr.get("TR_REVET"):
|
|
|
+ logger.error("- TR_REVET est manquant")
|
|
|
+ else:
|
|
|
+ if not tr["TR_REVET"] in ("SABLE", "BICOUCHE", "ENROBE", "BETON", "PAVE", "TERRAIN NATUREL"):
|
|
|
+ logger.error("- TR_REVET ne possède pas une valeur valide ('%s')", tr["TR_REVET"])
|
|
|
+
|
|
|
+ # Facultatif en etude
|
|
|
+ if not tr.get("TR_CHARGE"):
|
|
|
+ if not etude:
|
|
|
+ logger.error("- TR_CHARGE est manquant")
|
|
|
+ else:
|
|
|
+ try:
|
|
|
+ _ = float(tr["TR_CHARGE"])
|
|
|
+ except ValueError:
|
|
|
+ logger.error("- TR_CHARGE ne possède pas une valeur valide ('%s')", tr["TR_CHARGE"])
|
|
|
+
|
|
|
+ # Facultatif en etude
|
|
|
+ if not tr.get("TR_GRILLAG"):
|
|
|
+ if not etude:
|
|
|
+ logger.error("- TR_GRILLAG est manquant")
|
|
|
+ else:
|
|
|
+ try:
|
|
|
+ _ = float(tr["TR_GRILLAG"])
|
|
|
+ except ValueError:
|
|
|
+ logger.error("- TR_GRILLAG ne possède pas une valeur valide ('%s')", tr["TR_GRILLAG"])
|
|
|
+
|
|
|
+ # Facultatif en etude
|
|
|
+ if not tr.get("TR_REMBLAI"):
|
|
|
+ if not etude:
|
|
|
+ logger.error("- TR_REMBLAI est manquant")
|
|
|
+ else:
|
|
|
+ pass
|
|
|
+# if not tr["TR_REMBLAI"] in LISTE_REMBLAIS:
|
|
|
+# logger.error("- TR_REMBLAI ne possède pas une valeur valide ('%s')", tr["TR_REMBLAI"])
|
|
|
+
|
|
|
+ # Facultatif en etude
|
|
|
+ if not tr.get("TR_PLYNOX"):
|
|
|
+ if not etude:
|
|
|
+ logger.error("- TR_PLYNOX est manquant")
|
|
|
+ else:
|
|
|
+ if not tr["TR_PLYNOX"] in ("OUI", "NON"):
|
|
|
+ logger.error("- TR_PLYNOX ne possède pas une valeur valide ('%s')", tr["TR_PLYNOX"])
|
|
|
+
|
|
|
+ # Facultatif en etude
|
|
|
+ if not tr.get("TR_PRO_VOI"):
|
|
|
+ if not etude:
|
|
|
+ logger.error("- TR_PRO_VOI est manquant")
|
|
|
+ else:
|
|
|
+ if not tr["TR_PRO_VOI"] in ("COMMUNE", "COMMUNAUTE DE COMMUNES", "DEPARTEMENT", "ETAT", "PRIVE"):
|
|
|
+ logger.error("- TR_PRO_VOI ne possède pas une valeur valide ('%s')", tr["TR_PRO_VOI"])
|
|
|
+
|
|
|
+ # Facultatif en etude
|
|
|
+ if not tr.get("TR_GEST_VO"):
|
|
|
+ if not etude:
|
|
|
+ logger.error("- TR_GEST_VO est manquant")
|
|
|
+ else:
|
|
|
+ if not tr["TR_GEST_VO"] in ("COMMUNE", "COMMUNAUTE DE COMMUNES", "DEPARTEMENT", "ETAT", "PRIVE"):
|
|
|
+ logger.error("- TR_GEST_VO ne possède pas une valeur valide ('%s')", tr["TR_GEST_VO"])
|
|
|
+
|
|
|
+ # Facultatif en etude
|
|
|
+ if not tr.get("TR_SCHEMA"):
|
|
|
+ if not etude:
|
|
|
+ logger.error("- TR_SCHEMA est manquant")
|
|
|
+ else:
|
|
|
+ pass
|
|
|
+# if not tr["TR_SCHEMA"] in LISTE_SCHEMAS:
|
|
|
+# logger.error("- TR_SCHEMA ne possède pas une valeur valide ('%s')", tr["TR_REMBLAI"])
|
|
|
+
|
|
|
+ # Facultatif en etude
|
|
|
+ if not tr.get("TR_DATE_IN"):
|
|
|
+ if not etude:
|
|
|
+ logger.error("- TR_DATE_IN est manquant")
|
|
|
+ else:
|
|
|
+ try:
|
|
|
+ _ = datetime.strptime(tr["TR_DATE_IN"], "%d-%m-%Y")
|
|
|
+ except ValueError:
|
|
|
+ logger.error("- TR_DATE_IN ne possède pas une valeur ou un format valide ('%s')", tr["TR_DATE_IN"])
|
|
|
+
|
|
|
+ # Facultatif en etude
|
|
|
+ if not tr.get("TR_SRC_GEO"):
|
|
|
+ if not etude:
|
|
|
+ logger.error("- TR_SRC_GEO est manquant")
|
|
|
+
|
|
|
+ # Facultatif en etude
|
|
|
+ if not tr.get("TR_QLT_GEO"):
|
|
|
+ if not etude:
|
|
|
+ logger.error("- TR_QLT_GEO est manquant")
|
|
|
+
|
|
|
+ # Facultatif en etude
|
|
|
+ if not tr.get("TR_PRO_MD"):
|
|
|
+ if not etude:
|
|
|
+ logger.error("- TR_PRO_MD est manquant")
|
|
|
+
|
|
|
+ # Facultatif en etude
|
|
|
+ if not tr.get("TR_COMMENT"):
|
|
|
+ if not etude:
|
|
|
+ logger.error("- TR_COMMENT est manquant")
|
|
|
+
|
|
|
+ # Facultatif en etude
|
|
|
+ if not tr.get("TR_STATUT"):
|
|
|
+ if not etude:
|
|
|
+ logger.error("- TR_STATUT est manquant")
|
|
|
+ else:
|
|
|
+ if not tr["TR_STATUT"] in ("EN ETUDE", "EN REALISATION", "EN SERVICE", "HORS SERVICE"):
|
|
|
+ logger.error("- TR_STATUT ne possède pas une valeur valide ('%s')", tr["TR_STATUT"])
|
|
|
+ del sf, tranchees
|
|
|
+
|
|
|
+
|
|
|
+if __name__ == "__main__":
|
|
|
+ main(ETUDE)
|
|
|
+ logger.info("-- Fin --")
|