Phase 4
This commit is contained in:
parent
10ed9dd8d8
commit
496f124ba6
4
.gitignore
vendored
4
.gitignore
vendored
|
@ -12,10 +12,14 @@ data/2020_/
|
||||||
data/2021/phase_1_*.geojson
|
data/2021/phase_1_*.geojson
|
||||||
data/2021/phase_2_*.geojson
|
data/2021/phase_2_*.geojson
|
||||||
data/2021/phase_3_*.geojson
|
data/2021/phase_3_*.geojson
|
||||||
|
data/2022/phase_4_*.geojson
|
||||||
|
data/2022/phase_5_*.geojson
|
||||||
|
|
||||||
data/2022/phase_1_*.geojson
|
data/2022/phase_1_*.geojson
|
||||||
data/2022/phase_2_*.geojson
|
data/2022/phase_2_*.geojson
|
||||||
data/2022/phase_3_*.geojson
|
data/2022/phase_3_*.geojson
|
||||||
|
data/2022/phase_4_*.geojson
|
||||||
|
data/2022/phase_5_*.geojson
|
||||||
data/2022/backup/
|
data/2022/backup/
|
||||||
|
|
||||||
qgis/exports\ PDF/
|
qgis/exports\ PDF/
|
||||||
|
|
217
scripts_v2/phase_4.py
Executable file
217
scripts_v2/phase_4.py
Executable file
|
@ -0,0 +1,217 @@
|
||||||
|
#!/usr/bin/python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
#
|
||||||
|
# Libraries
|
||||||
|
#
|
||||||
|
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import datetime
|
||||||
|
import time
|
||||||
|
import configparser
|
||||||
|
import psycopg2
|
||||||
|
import subprocess
|
||||||
|
#from logguer import log_verif
|
||||||
|
|
||||||
|
|
||||||
|
# ==============================================================================
|
||||||
|
|
||||||
|
# répertoire courant
|
||||||
|
script_dir = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
|
||||||
|
# jour courant
|
||||||
|
date = datetime.datetime.now()
|
||||||
|
|
||||||
|
# lecture du fichier de configuration qui contient les infos de connection
|
||||||
|
config = configparser.ConfigParser()
|
||||||
|
config.read( script_dir + '/config.ini')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#fichier_log = str(date.year)+str(date.month)+str(date.day)+"_"+str(date.hour)+str(date.minute)
|
||||||
|
fichier_log = str(date.year)+str(date.month)+str(date.day)
|
||||||
|
|
||||||
|
|
||||||
|
# ==============================================================================
|
||||||
|
|
||||||
|
def initConnRedadegDB():
|
||||||
|
|
||||||
|
# connexion à la base postgresql
|
||||||
|
try:
|
||||||
|
global db_redadeg_pg_conn
|
||||||
|
db_redadeg_pg_conn = psycopg2.connect(db_redadeg_conn_str)
|
||||||
|
db_redadeg_pg_conn.set_session(autocommit=True)
|
||||||
|
|
||||||
|
print(" Connexion à la base "+db_redadeg_db+" sur "+db_redadeg_host+" réussie ")
|
||||||
|
|
||||||
|
|
||||||
|
except Exception as err:
|
||||||
|
print(" Connexion à la base "+db_redadeg_db+" sur "+db_redadeg_host+ " impossible ")
|
||||||
|
try:
|
||||||
|
err.pgcode
|
||||||
|
print(" PostgreSQL error code : " + err.pgcode)
|
||||||
|
sys.exit()
|
||||||
|
except:
|
||||||
|
print(" " + str(err),0)
|
||||||
|
sys.exit()
|
||||||
|
|
||||||
|
|
||||||
|
# ==============================================================================
|
||||||
|
|
||||||
|
def closeConnRedadegDB():
|
||||||
|
|
||||||
|
try:
|
||||||
|
db_redadeg_pg_conn.close()
|
||||||
|
print(" Fermeture de la connexion à la base "+db_redadeg_db+" sur "+db_redadeg_host)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Functions
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Start processing
|
||||||
|
#
|
||||||
|
|
||||||
|
startTime = time.perf_counter()
|
||||||
|
|
||||||
|
# on récupère les arguments passés
|
||||||
|
list_of_args = sys.argv
|
||||||
|
|
||||||
|
millesime=""
|
||||||
|
secteur=""
|
||||||
|
typemaj=""
|
||||||
|
|
||||||
|
# et on fait des tests
|
||||||
|
|
||||||
|
try:
|
||||||
|
if len(list_of_args[1]) != 4:
|
||||||
|
print("Pas de millésime en argument")
|
||||||
|
sys.exit()
|
||||||
|
else:
|
||||||
|
millesime = list_of_args[1]
|
||||||
|
|
||||||
|
# ok : tout est bon on peut commencer
|
||||||
|
# sortie des tests
|
||||||
|
|
||||||
|
|
||||||
|
except SystemExit:
|
||||||
|
print("Erreur dans les arguments --> stop")
|
||||||
|
sys.exit()
|
||||||
|
except:
|
||||||
|
print("oups : vérifiez vos arguments passés au script !")
|
||||||
|
print("stop")
|
||||||
|
sys.exit()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
print("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++")
|
||||||
|
print("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++")
|
||||||
|
print("")
|
||||||
|
print(" Export des données phase 3 pour la phase 5 pour le millésime "+str(millesime))
|
||||||
|
print("")
|
||||||
|
|
||||||
|
print(" Lecture du fichier de configuration ")
|
||||||
|
print("")
|
||||||
|
|
||||||
|
# BD Ar Redadeg
|
||||||
|
global db_redadeg_host
|
||||||
|
global db_redadeg_db
|
||||||
|
db_redadeg_host = config.get('redadeg_database', 'host')
|
||||||
|
db_redadeg_port = config.get('redadeg_database', 'port')
|
||||||
|
db_redadeg_db = config.get('redadeg_database', 'db')+"_"+str(millesime)
|
||||||
|
db_redadeg_user = config.get('redadeg_database', 'user')
|
||||||
|
db_redadeg_passwd = config.get('redadeg_database', 'passwd')
|
||||||
|
# chaîne de connection
|
||||||
|
global db_redadeg_conn_str
|
||||||
|
db_redadeg_conn_str = "host="+db_redadeg_host+" port="+db_redadeg_port+" dbname="+db_redadeg_db+" user="+db_redadeg_user+" password="+db_redadeg_passwd
|
||||||
|
|
||||||
|
|
||||||
|
initConnRedadegDB()
|
||||||
|
|
||||||
|
# le cursor
|
||||||
|
db_redadeg_cursor = db_redadeg_pg_conn.cursor()
|
||||||
|
|
||||||
|
print("")
|
||||||
|
|
||||||
|
# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
|
||||||
|
try:
|
||||||
|
|
||||||
|
print(" Export des PK en geojson par secteur (pour les cartes umap phase 5)")
|
||||||
|
|
||||||
|
# besoin de la chaîne de connexion
|
||||||
|
|
||||||
|
# on commence par chercher la table des secteurs pour récupérer les id
|
||||||
|
# puis boucler dessus
|
||||||
|
|
||||||
|
sql_get_secteurs = """
|
||||||
|
SELECT id
|
||||||
|
FROM secteur
|
||||||
|
WHERE id > 0 AND id <> 999
|
||||||
|
ORDER BY id ;"""
|
||||||
|
|
||||||
|
db_redadeg_cursor.execute(sql_get_secteurs)
|
||||||
|
secteur_ids = db_redadeg_cursor.fetchall()
|
||||||
|
|
||||||
|
# on boucle
|
||||||
|
for secteur in secteur_ids:
|
||||||
|
# on fait la commande d'export
|
||||||
|
export_cmd = ["ogr2ogr", "-f", "GeoJSON",
|
||||||
|
f"../data/{millesime}/phase_4_pk_{secteur[0]}.geojson",
|
||||||
|
f"PG:host={db_redadeg_host} port={db_redadeg_port} user={db_redadeg_user} password={db_redadeg_passwd} dbname={db_redadeg_db}",
|
||||||
|
"-sql", f"SELECT pk_id, secteur_id, the_geom FROM phase_3_pk_4326 WHERE secteur_id = {secteur[0]} ;"]
|
||||||
|
# on exporte
|
||||||
|
subprocess.check_output(export_cmd)
|
||||||
|
print(f" secteur {secteur[0]} : fait")
|
||||||
|
|
||||||
|
print(" exports GeoJSON terminé")
|
||||||
|
print("")
|
||||||
|
|
||||||
|
print(" Import des PK dans la table phase_5_pk_ref")
|
||||||
|
|
||||||
|
sql_transfert = "TRUNCATE TABLE phase_5_pk_ref ; "
|
||||||
|
sql_transfert += "INSERT INTO phase_5_pk_ref SELECT * FROM phase_3_pk ORDER BY pk_id ;"
|
||||||
|
db_redadeg_cursor.execute(sql_transfert)
|
||||||
|
|
||||||
|
print(" fait")
|
||||||
|
|
||||||
|
|
||||||
|
print("")
|
||||||
|
print("")
|
||||||
|
|
||||||
|
except Exception as err:
|
||||||
|
print(" ERREUR : " + str(err))
|
||||||
|
closeConnRedadegDB()
|
||||||
|
sys.exit()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
|
||||||
|
db_redadeg_cursor.close()
|
||||||
|
|
||||||
|
closeConnRedadegDB()
|
||||||
|
|
||||||
|
|
||||||
|
# pour connaître le temps d'exécution
|
||||||
|
print("")
|
||||||
|
print("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++")
|
||||||
|
print("F I N")
|
||||||
|
print("")
|
||||||
|
|
||||||
|
stopTime = time.perf_counter()
|
||||||
|
|
||||||
|
# version simple en secondes
|
||||||
|
#print(f"Exécuté en {stopTime - startTime:0.4f} secondes")
|
||||||
|
|
||||||
|
# version en h min s
|
||||||
|
hours, rem = divmod(stopTime - startTime, 3600)
|
||||||
|
minutes, seconds = divmod(rem, 60)
|
||||||
|
print("Exécuté en {:0>2}:{:0>2}:{:05.2f}".format(int(hours),int(minutes),seconds))
|
||||||
|
|
||||||
|
|
|
@ -706,6 +706,7 @@ CREATE TABLE phase_5_pk_ref
|
||||||
pk_lat numeric(10,8),
|
pk_lat numeric(10,8),
|
||||||
length_real numeric(6,2),
|
length_real numeric(6,2),
|
||||||
length_theorical integer,
|
length_theorical integer,
|
||||||
|
length_total integer,
|
||||||
secteur_id integer,
|
secteur_id integer,
|
||||||
municipality_admincode text,
|
municipality_admincode text,
|
||||||
municipality_postcode text,
|
municipality_postcode text,
|
||||||
|
|
Loading…
Reference in a new issue