Add API covnertv3tov2

This commit is contained in:
DingZQ
2024-12-28 16:47:16 +08:00
parent 17b47da6ea
commit cad6eeba47
4 changed files with 58 additions and 1 deletions

View File

@@ -2,7 +2,8 @@ from .project import list_project, have_project, create_project, delete_project,
from .project import is_project_open, open_project, close_project from .project import is_project_open, open_project, close_project
from .project import copy_project from .project import copy_project
from .inp_in import read_inp, import_inp #DingZQ, 2024-12-28, convert inp v3 to v2
from .inp_in import read_inp, import_inp, convert_inp_v3_to_v2
from .inp_out import dump_inp, export_inp from .inp_out import dump_inp, export_inp
from .database import API_ADD, API_UPDATE, API_DELETE from .database import API_ADD, API_UPDATE, API_DELETE

View File

@@ -35,6 +35,9 @@ from .s27_backdrop import inp_in_backdrop
from .s32_region import inp_in_region,inp_in_bound,inp_in_regionnodes from .s32_region import inp_in_region,inp_in_bound,inp_in_regionnodes
from .s32_region_util import from_postgis_polygon,to_postgis_polygon from .s32_region_util import from_postgis_polygon,to_postgis_polygon
#DingZQ, 2024-12-28, export inp
from .inp_out import export_inp
_S = 'S' _S = 'S'
_L = 'L' _L = 'L'
@@ -371,6 +374,29 @@ def read_inp(project: str, inp: str, version: str = '3') -> bool:
close_project(project) close_project(project)
return True return True
#DingZQ, 2024-12-28, convert v3 to v2
def convert_inp_v3_to_v2(inp: str) -> ChangeSet:
project = 'v3Tov2'
if is_project_open(project):
close_project(project)
if have_project(project):
delete_project(project)
create_project(project)
open_project(project)
parse_file(project, inp, '3')
'''try:
parse_file(project, inp, version)
except:
close_project(project)
delete_project(project)
return False'''
return export_inp(project, '2')
def import_inp(project: str, cs: ChangeSet, version: str = '3') -> bool: def import_inp(project: str, cs: ChangeSet, version: str = '3') -> bool:
if version != '3' and version != '2': if version != '3' and version != '2':

27
main.py
View File

@@ -1819,6 +1819,33 @@ async def download_inp(name: str, response: Response):
else: else:
response.status_code = status.HTTP_400_BAD_REQUEST response.status_code = status.HTTP_400_BAD_REQUEST
return True return True
# DingZQ, 2024-12-28, convert v3 to v2
@app.get("/convertv3tov2/",response_model=None)
async def fastapi_convert_v3_to_v2(inp: str) -> ChangeSet:
network = 'v3Tov2'
cs = convert_inp_v3_to_v2(inp)
op = cs.operations[0]
open_project(network)
op['vertex'] = json.dumps(get_all_vertices(network))
op['scada'] = json.dumps(get_all_scada_elements(network))
op['dma'] = json.dumps(get_all_district_metering_areas(network))
op['sa'] = json.dumps(get_all_service_areas(network))
op['vd'] = json.dumps(get_all_virtual_districts(network))
op['legend'] = get_extension_data(network, 'legend')
db = get_extension_data(network, 'scada_db')
print(db)
scada_db = ''
if db:
scada_db = db
print(scada_db)
op['scada_db'] = scada_db
close_project(network)
return cs
@app.get("/getjson/") @app.get("/getjson/")
async def get_json(): async def get_json():

View File

@@ -222,6 +222,9 @@ def run_inp(name: str) -> str:
def dump_output(path: str) -> str: def dump_output(path: str) -> str:
return epanet.dump_output(path) return epanet.dump_output(path)
#DingZQ, 2024-12-28, convert inp v3 to v2
def convert_inp_v3_to_v2(inp: str) -> ChangeSet:
return api.convert_inp_v3_to_v2(inp)
############################################################ ############################################################
# operation # operation