Files
TJWaterServer/api/s41_pipe_risk_probability.py
2025-04-26 23:49:30 +08:00

87 lines
2.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
from .database import *
from .s0_base import *
import json
def get_pipe_risk_probability_now(name: str, pipe_id: str) -> dict[str, Any]:
t = try_read(name, f"select * from pipe_risk_probability where pipeid = '{pipe_id}'")
if t == None:
return {}
d = {}
d['pipeid'] = str(t['pipeid'])
d['pipeage'] = t['pipeage']
d['risk_probability_now'] = t['risk_probability_now']
return d
def get_pipe_risk_probability(name: str, pipe_id: str) -> dict[str, Any]:
t = try_read(name, f"select * from pipe_risk_probability where pipeid = '{pipe_id}'")
if t == None:
return {}
d = {}
d['pipeid'] = t['pipeid']
d['x'] = t['x']
d['y'] = t['y']
return d
def get_network_pipe_risk_probability_now(name: str) -> list[dict[str, Any]]:
pipe_risk_probability_list = []
with conn[name].cursor(row_factory=dict_row) as cur:
cur.execute(f"select * from pipe_risk_probability")
for record in cur:
#pipe_risk_probability_list.append(record)
t = {}
t['pipeid'] = record['pipeid']
t['pipeage'] = record['pipeage']
t['risk_probability_now'] = record['risk_probability_now']
pipe_risk_probability_list.append(t)
return pipe_risk_probability_list
def get_pipes_risk_probability(name: str, pipe_ids: list[str]) -> list[dict[str, Any]]:
pipe_risk_probability_list = []
with conn[name].cursor(row_factory=dict_row) as cur:
cur.execute(f"select * from pipe_risk_probability")
for record in cur:
if record['pipeid'] in pipe_ids:
t = {}
t['pipeid'] = record['pipeid']
t['x'] = record['x']
t['y'] = record['y']
pipe_risk_probability_list.append(t)
return pipe_risk_probability_list
def get_pipe_risk_probability_geometries(name: str) -> dict[str, Any]:
'''
获取管道的几何信息
返回一个字典key 是管道的 idvalue 是管道的几何信息
几何信息是一个字典,包含 start 和 end 两个 keyvalue 是管道的起点和终点的坐标
'''
pipe_risk_probability_geometries = {}
key_pipeId = '编码'
# key_startnode = '上游节点'
# key_endnode = '下游节点'
key_geometry = 'geometry'
with conn[name].cursor(row_factory=dict_row) as cur:
cur.execute(f"select *, ST_AsGeoJSON(geometry) AS {key_geometry} from gis_pipe")
for record in cur:
id = record[key_pipeId]
geom = json.loads(record[key_geometry])
pipe_risk_probability_geometries[id] = {
'points': geom['coordinates']
}
for col in record:
if col != key_pipeId and col != key_geometry:
pipe_risk_probability_geometries[id][col] = record[col]
# print(len(pipe_risk_probability_geometries))
return pipe_risk_probability_geometries