40 lines
1.2 KiB
Python
40 lines
1.2 KiB
Python
from .database import *
|
|
|
|
|
|
def _to_client_point(coord: str) -> dict[str, float]:
|
|
xy = coord.removeprefix('(').removesuffix(')').split(',')
|
|
return { 'x': float(xy[0]), 'y': float(xy[1]) }
|
|
|
|
|
|
def get_node_coord(name: str, id: str) -> dict[str, float]:
|
|
row = read(name, f"select * from coordinates where node = '{id}'")
|
|
return _to_client_point(row['coord'])
|
|
|
|
|
|
#--------------------------------------------------------------
|
|
# [EPANET2][IN][OUT]
|
|
# id x y
|
|
#--------------------------------------------------------------
|
|
# exception ! need merge to node change set !
|
|
def inp_in_coord(section: list[str]) -> dict[str, dict[str, float]]:
|
|
coords = {}
|
|
for s in section:
|
|
# skip comment
|
|
if s.startswith(';'):
|
|
continue
|
|
tokens = s.split()
|
|
coords[tokens[0]] = { 'x': tokens[1], 'y': tokens[2] }
|
|
return coords
|
|
|
|
|
|
def inp_out_coord(name: str) -> list[str]:
|
|
lines = []
|
|
objs = read_all(name, 'select * from coordinates')
|
|
for obj in objs:
|
|
node = obj['node']
|
|
coord = _to_client_point(obj['coord'])
|
|
x = coord['x']
|
|
y = coord['y']
|
|
lines.append(f'{node} {x} {y}')
|
|
return lines
|