Refine service area
This commit is contained in:
@@ -2,7 +2,7 @@ import sys
|
|||||||
import json
|
import json
|
||||||
from queue import Queue
|
from queue import Queue
|
||||||
from .database import *
|
from .database import *
|
||||||
from .s0_base import get_node_links, get_link_nodes, get_nodes
|
from .s0_base import get_node_links, get_link_nodes
|
||||||
|
|
||||||
sys.path.append('..')
|
sys.path.append('..')
|
||||||
from epanet.epanet import run_project
|
from epanet.epanet import run_project
|
||||||
@@ -38,7 +38,7 @@ def _calculate_service_area(name: str, inp, time_index: int = 0) -> dict[str, li
|
|||||||
elif node2 == cursor and link_flows[link] < 0:
|
elif node2 == cursor and link_flows[link] < 0:
|
||||||
queue.put(node1)
|
queue.put(node1)
|
||||||
|
|
||||||
return sources
|
#return sources
|
||||||
|
|
||||||
# calculation concentration
|
# calculation concentration
|
||||||
concentration_map: dict[str, dict[str, float]] = {}
|
concentration_map: dict[str, dict[str, float]] = {}
|
||||||
@@ -111,11 +111,7 @@ def _calculate_service_area(name: str, inp, time_index: int = 0) -> dict[str, li
|
|||||||
source_to_main_node[max_source] = []
|
source_to_main_node[max_source] = []
|
||||||
source_to_main_node[max_source].append(node)
|
source_to_main_node[max_source].append(node)
|
||||||
|
|
||||||
sas: list[dict[str, Any]] = []
|
return source_to_main_node
|
||||||
for source, nodes in source_to_main_node.items():
|
|
||||||
sas.append({ 'source': source, 'nodes': nodes })
|
|
||||||
|
|
||||||
return { 'service_areas' : sas, 'concentrations': concentration_map }
|
|
||||||
|
|
||||||
|
|
||||||
def calculate_service_area(name: str) -> list[dict[str, list[str]]]:
|
def calculate_service_area(name: str) -> list[dict[str, list[str]]]:
|
||||||
|
|||||||
17
dev.py
17
dev.py
@@ -5,6 +5,17 @@ p = 'dev'
|
|||||||
read_inp(p, f'./inp/net3.inp', '3')
|
read_inp(p, f'./inp/net3.inp', '3')
|
||||||
open_project(p)
|
open_project(p)
|
||||||
|
|
||||||
add_region(p, ChangeSet({'id': 'r', 'boundary': [(24.614,13.087), (24.835,11.069), (26.144,10.747), (27.290,11.543), (25.726,12.987), (24.614,13.087)]}))
|
sass = calculate_service_area(p)
|
||||||
links = get_links_on_region_boundary(p, 'r')
|
assert len(sass) == 25
|
||||||
print(links)
|
|
||||||
|
assert sass[0]['River'] == ['River', '60', '61', '123', '601']
|
||||||
|
assert sass[0]['3'] == ['121', '120', '119', '117', '257', '151', '157', '115', '259', '261', '149', '159', '111', '113', '263', '147', '161', '197', '193', '105', '145', '163', '195', '191', '267', '107', '141', '164', '265', '187', '189', '143', '166', '169', '204', '15', '167', '171', '269', '173', '271', '199', '201', '203', '3', '20', '127', '125', '129', '153', '131', '139']
|
||||||
|
assert sass[0]['1'] == ['185', '184', '205', '273', '1', '40', '179', '177', '183', '181', '35']
|
||||||
|
assert sass[0]['2'] == ['207', '275', '2', '50', '255', '247', '253', '251', '241', '249', '239', '243', '237', '211', '229', '209', '213', '231', '208', '215', '206', '217', '219', '225']
|
||||||
|
|
||||||
|
print(sass[1])
|
||||||
|
assert sass[0]['River'] == ['River', '60', '61', '123', '601']
|
||||||
|
assert sass[0]['3'] == ['121', '120', '119', '117', '257', '151', '157', '115', '259', '261', '149', '159', '111', '113', '263', '147', '161', '197', '193', '145', '163', '195', '191', '141', '164', '265', '187', '143', '166', '169', '267', '204', '15', '167', '171', '269', '173', '199', '201', '203', '3', '20', '127', '125', '129', '153', '131', '139']
|
||||||
|
assert sass[0]['Lake'] == ['105', '107', 'Lake', '10', '101', '103', '109']
|
||||||
|
assert sass[0]['1'] == ['189', '185', '271', '184', '205', '273', '1', '40', '179', '177', '183', '181', '35']
|
||||||
|
assert sass[0]['2'] == ['207', '275', '2', '50', '255', '247', '253', '251', '241', '249', '239', '243', '237', '211', '229', '209', '213', '231', '208', '215', '206', '217', '219', '225']
|
||||||
|
|||||||
@@ -6209,8 +6209,16 @@ class TestApi:
|
|||||||
sass = calculate_service_area(p)
|
sass = calculate_service_area(p)
|
||||||
assert len(sass) == 25
|
assert len(sass) == 25
|
||||||
|
|
||||||
assert sass[0] == {'River': ['River', '60', '61', '123', '601', '121', '120', '119', '117', '257', '151', '157', '115', '259', '261', '149', '159', '111', '113', '263', '147', '161', '197', '193', '105', '145', '163', '195', '191', '267', '107', '141', '164', '265', '187', '189', '143', '166', '169', '204', '15', '167', '171', '269', '185', '173', '271', '184', '199', '205', '201', '207', '273', '203', '275'], '1': ['1', '40', '179', '177', '183', '181', '185', '189', '35', '271', '184', '187', '171', '205', '204', '173', '207', '273', '199', '275', '201', '203'], '2': ['2', '50', '255', '247', '253', '251', '241', '249', '239', '243', '237', '211', '229', '209', '213', '231', '208', '215', '206', '217', '207', '219', '225', '275', '201', '203'], '3': ['3', '20', '127', '125', '129', '121', '153', '131', '139', '120', '119', '151', '141', '117', '257', '157', '149', '143', '115', '259', '261', '159', '147', '15', '111', '113', '263', '161', '145', '197', '193', '105', '163', '195', '191', '267', '107', '164', '265', '187', '189', '166', '169', '204', '167', '171', '269', '185', '173', '271', '184', '199', '205', '201', '207', '273', '203', '275']}
|
assert sass[0]['River'] == ['River', '60', '61', '123', '601']
|
||||||
assert sass[1] == {'River': ['River', '60', '61', '123', '601', '121', '120', '119', '117', '257', '151', '157', '115', '259', '261', '149', '159', '111', '113', '263', '147', '161', '197', '193', '105', '145', '163', '195', '191', '107', '141', '164', '265', '187', '143', '166', '169', '267', '204', '15', '167', '171', '269', '189', '185', '173', '271', '184', '199', '205', '201', '207', '273', '203', '275'], 'Lake': ['Lake', '10', '101', '103', '105', '109', '107', '111', '115', '113', '197', '193', '191', '187', '204', '185', '184', '205', '207', '273', '275', '199', '201', '203'], '1': ['1', '40', '179', '177', '183', '181', '185', '189', '35', '271', '184', '187', '171', '205', '204', '173', '207', '273', '199', '275', '201', '203'], '2': ['2', '50', '255', '247', '253', '251', '241', '249', '239', '243', '237', '211', '229', '209', '213', '231', '208', '215', '206', '217', '207', '219', '225', '275', '201', '203'], '3': ['3', '20', '127', '125', '129', '121', '153', '131', '139', '120', '119', '151', '141', '117', '257', '157', '149', '143', '115', '259', '261', '159', '147', '15', '111', '113', '263', '161', '145', '197', '193', '105', '163', '195', '191', '107', '164', '265', '187', '166', '169', '267', '204', '167', '171', '269', '189', '185', '173', '271', '184', '199', '205', '201', '207', '273', '203', '275']}
|
assert sass[0]['3'] == ['121', '120', '119', '117', '257', '151', '157', '115', '259', '261', '149', '159', '111', '113', '263', '147', '161', '197', '193', '105', '145', '163', '195', '191', '267', '107', '141', '164', '265', '187', '189', '143', '166', '169', '204', '15', '167', '171', '269', '173', '271', '199', '201', '203', '3', '20', '127', '125', '129', '153', '131', '139']
|
||||||
|
assert sass[0]['1'] == ['185', '184', '205', '273', '1', '40', '179', '177', '183', '181', '35']
|
||||||
|
assert sass[0]['2'] == ['207', '275', '2', '50', '255', '247', '253', '251', '241', '249', '239', '243', '237', '211', '229', '209', '213', '231', '208', '215', '206', '217', '219', '225']
|
||||||
|
|
||||||
|
assert sass[1]['River'] == ['River', '60', '61', '123', '601']
|
||||||
|
assert sass[1]['3'] == ['121', '120', '119', '117', '257', '151', '157', '115', '259', '261', '149', '159', '111', '113', '263', '147', '161', '197', '193', '145', '163', '195', '191', '141', '164', '265', '187', '143', '166', '169', '267', '204', '15', '167', '171', '269', '173', '199', '201', '203', '3', '20', '127', '125', '129', '153', '131', '139']
|
||||||
|
assert sass[1]['Lake'] == ['105', '107', 'Lake', '10', '101', '103', '109']
|
||||||
|
assert sass[1]['1'] == ['189', '185', '271', '184', '205', '273', '1', '40', '179', '177', '183', '181', '35']
|
||||||
|
assert sass[1]['2'] == ['207', '275', '2', '50', '255', '247', '253', '251', '241', '249', '239', '243', '237', '211', '229', '209', '213', '231', '208', '215', '206', '217', '219', '225']
|
||||||
|
|
||||||
self.leave(p)
|
self.leave(p)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user