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])
|
||||
|
||||
|
||||
# ==============================================================================
|
||||
|
||||
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
|
||||
|
@ -197,6 +228,8 @@ try:
|
|||
print(" "+str(secteur_nb_km)+" km / pk à créer")
|
||||
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")
|
||||
|
@ -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
|
||||
# pour récupérer l'id du noeud de fin qui va devenir notre PK
|
||||
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) + " | "+ str(edge_zero))
|
||||
print("")
|
||||
|
||||
# ------------------------------------------------------
|
||||
|
@ -216,14 +259,14 @@ try:
|
|||
# maintenant on peut itérer jusqu'à la fin du secteur
|
||||
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)
|
||||
node_x = pk_data[0]
|
||||
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
|
||||
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)
|
||||
db_redadeg_cursor.execute(sql_neutralisation)
|
||||
|
||||
|
@ -232,7 +275,16 @@ try:
|
|||
|
||||
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("")
|
||||
|
@ -242,7 +294,12 @@ try:
|
|||
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 ;"
|
||||
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("")
|
||||
|
||||
|
|
Loading…
Reference in a new issue