Update phase_3_compute.py
This commit is contained in:
parent
e57ee6478c
commit
970eb10fef
|
@ -94,6 +94,37 @@ SELECT node, edge FROM t ORDER BY seq DESC LIMIT 1;"""
|
||||||
return([node_end, edge])
|
return([node_end, edge])
|
||||||
|
|
||||||
|
|
||||||
|
# ==============================================================================
|
||||||
|
|
||||||
|
def getPgrNodeInfos(node_id):
|
||||||
|
|
||||||
|
# cette fonction va chercher les infos où il faut pour le PK
|
||||||
|
cursor = db_redadeg_pg_conn.cursor()
|
||||||
|
|
||||||
|
# géométrie…
|
||||||
|
sql_get_from_pgr_node = """
|
||||||
|
SELECT
|
||||||
|
the_geom,
|
||||||
|
TRUNC(ST_X(the_geom)::numeric,1) AS x,
|
||||||
|
TRUNC(ST_Y(the_geom)::numeric,1) AS y,
|
||||||
|
TRUNC(ST_X(ST_Transform(the_geom,4326)::geometry(Point, 4326))::numeric,8) AS long,
|
||||||
|
TRUNC(ST_Y(ST_Transform(the_geom,4326)::geometry(Point, 4326))::numeric,8) AS lat
|
||||||
|
FROM phase_3_troncons_pgr_vertices_pgr v WHERE id = """+ str(node_id) +""";"""
|
||||||
|
#print(sql_get_from_pgr_node)
|
||||||
|
|
||||||
|
cursor.execute(sql_get_from_pgr_node)
|
||||||
|
data = cursor.fetchone()
|
||||||
|
the_geom = data[0]
|
||||||
|
x = data[1]
|
||||||
|
y = data[2]
|
||||||
|
long = data[3]
|
||||||
|
lat = data[4]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
cursor.close()
|
||||||
|
|
||||||
|
return([the_geom,x,y,long,lat])
|
||||||
|
|
||||||
#
|
#
|
||||||
# Start processing
|
# Start processing
|
||||||
|
@ -196,7 +227,9 @@ try:
|
||||||
|
|
||||||
print(" "+str(secteur_nb_km)+" km / pk à créer")
|
print(" "+str(secteur_nb_km)+" km / pk à créer")
|
||||||
print("")
|
print("")
|
||||||
|
|
||||||
|
# cette variable pour stocker la requête SQL de création des PK
|
||||||
|
sql_insert_pks = "DELETE FROM phase_3_pk WHERE secteur_id = "+secteur+" ;\n"
|
||||||
|
|
||||||
# ------------------------------------------------------
|
# ------------------------------------------------------
|
||||||
print(" Calcul du 1er PK")
|
print(" Calcul du 1er PK")
|
||||||
|
@ -204,10 +237,20 @@ try:
|
||||||
# on a les infos -> on calcule la route qui va du 1er nœud de départ et qui fait la distance demandée
|
# on a les infos -> on calcule la route qui va du 1er nœud de départ et qui fait la distance demandée
|
||||||
# pour récupérer l'id du noeud de fin qui va devenir notre PK
|
# pour récupérer l'id du noeud de fin qui va devenir notre PK
|
||||||
node_zero = secteur_node_start
|
node_zero = secteur_node_start
|
||||||
#edge_zero = getPKfromRouting(node_zero,secteur_longueur_km)[1]
|
|
||||||
|
|
||||||
|
node_zero_data = getPgrNodeInfos(node_zero)
|
||||||
|
print(str(node_zero_data[0]))
|
||||||
|
|
||||||
|
sql_insert_pks += "INSERT INTO phase_3_pk (secteur_id, pk_id, the_geom, pk_x, pk_y, pk_long, pk_lat) VALUES ("
|
||||||
|
sql_insert_pks += secteur + ",1"
|
||||||
|
sql_insert_pks += ",'" + node_zero_data[0] + "'"
|
||||||
|
sql_insert_pks += "," + str(node_zero_data[1]) + "," + str(node_zero_data[2])
|
||||||
|
sql_insert_pks += "," + str(node_zero_data[3]) + "," + str(node_zero_data[4])
|
||||||
|
sql_insert_pks += ");\n"
|
||||||
|
|
||||||
|
#print(sql_insert_pks)
|
||||||
|
#sys.exit()
|
||||||
print(" nœud du PK 1 : " + str(node_zero))
|
print(" nœud du PK 1 : " + str(node_zero))
|
||||||
#print(" nœud du PK 1 : "+ str(node_zero) + " | "+ str(edge_zero))
|
|
||||||
print("")
|
print("")
|
||||||
|
|
||||||
# ------------------------------------------------------
|
# ------------------------------------------------------
|
||||||
|
@ -216,14 +259,14 @@ try:
|
||||||
# maintenant on peut itérer jusqu'à la fin du secteur
|
# maintenant on peut itérer jusqu'à la fin du secteur
|
||||||
node_x = node_zero
|
node_x = node_zero
|
||||||
|
|
||||||
for i in range(1, secteur_nb_km):
|
for i in range(2, secteur_nb_km + 1):
|
||||||
|
|
||||||
pk_data = getPKfromRouting(node_x,secteur_longueur_km)
|
pk_data = getPKfromRouting(node_x,secteur_longueur_km)
|
||||||
node_x = pk_data[0]
|
node_x = pk_data[0]
|
||||||
previous_pk_edge = pk_data[1]
|
previous_pk_edge = pk_data[1]
|
||||||
|
|
||||||
# on met tt de suite en négatif l'info de routage du précédent tronçon afin de l'écarter du prochain calcul de routage
|
# on met tt de suite en négatif l'info de routage du précédent tronçon afin de l'écarter du prochain calcul de routage
|
||||||
sql_neutralisation = "UPDATE phase_3_troncons_pgr SET id = -"+str(previous_pk_edge)+" WHERE id = "+str(previous_pk_edge)+" ;"
|
sql_neutralisation = "UPDATE phase_3_troncons_pgr SET id = -ABS("+str(previous_pk_edge)+") WHERE id = "+str(previous_pk_edge)+" ;"
|
||||||
#print(sql_neutralisation)
|
#print(sql_neutralisation)
|
||||||
db_redadeg_cursor.execute(sql_neutralisation)
|
db_redadeg_cursor.execute(sql_neutralisation)
|
||||||
|
|
||||||
|
@ -232,7 +275,16 @@ try:
|
||||||
|
|
||||||
print(" nœud du PK "+str(i)+" : " + str(node_x))
|
print(" nœud du PK "+str(i)+" : " + str(node_x))
|
||||||
|
|
||||||
|
# ici on construit la requête avec les données du PK
|
||||||
|
node_x_data = getPgrNodeInfos(node_x)
|
||||||
|
|
||||||
|
# on fait une requête SQL d'insert de ce PK
|
||||||
|
sql_insert_pks += "INSERT INTO phase_3_pk (secteur_id, pk_id, the_geom, pk_x, pk_y, pk_long, pk_lat) VALUES ("
|
||||||
|
sql_insert_pks += secteur + ","+str(i)
|
||||||
|
sql_insert_pks += ",'" + node_x_data[0] + "'"
|
||||||
|
sql_insert_pks += "," + str(node_x_data[1]) + "," + str(node_x_data[2])
|
||||||
|
sql_insert_pks += "," + str(node_x_data[3]) + "," + str(node_x_data[4])
|
||||||
|
sql_insert_pks += ");\n"
|
||||||
|
|
||||||
|
|
||||||
print("")
|
print("")
|
||||||
|
@ -242,7 +294,12 @@ try:
|
||||||
print(" RAZ de la neutralisation des infos de routage pour la boucle")
|
print(" RAZ de la neutralisation des infos de routage pour la boucle")
|
||||||
sql_reset_neutralisation = "UPDATE phase_3_troncons_pgr SET id = -1*id WHERE id < 0 ;"
|
sql_reset_neutralisation = "UPDATE phase_3_troncons_pgr SET id = -1*id WHERE id < 0 ;"
|
||||||
db_redadeg_cursor.execute(sql_reset_neutralisation)
|
db_redadeg_cursor.execute(sql_reset_neutralisation)
|
||||||
|
print(" fait")
|
||||||
|
print("")
|
||||||
|
|
||||||
|
print(" Écriture des PK dans la couche phase_3_pk")
|
||||||
|
#print(sql_insert_pks)
|
||||||
|
db_redadeg_cursor.execute(sql_insert_pks)
|
||||||
print(" fait")
|
print(" fait")
|
||||||
print("")
|
print("")
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue