重构管道中心选择逻辑,优化数据处理方式
This commit is contained in:
@@ -21,25 +21,19 @@ def _to_metis_edge_weight(edge_weight):
|
||||
|
||||
|
||||
def pick_center_pipe(node_x, node_y, candidate_pipe, pipe_start_node, pipe_end_node):
|
||||
data_set_t = pd.DataFrame(dtype=object)
|
||||
data_set_t["x"] = (
|
||||
node_x[pipe_start_node[candidate_pipe]].values
|
||||
+ node_x[pipe_start_node[candidate_pipe]].values
|
||||
) / 2
|
||||
data_set_t["y"] = (
|
||||
node_y[pipe_end_node[candidate_pipe]].values
|
||||
+ node_y[pipe_end_node[candidate_pipe]].values
|
||||
) / 2
|
||||
data_set_t.index = list(candidate_pipe)
|
||||
mean_x = data_set_t["x"].mean()
|
||||
mean_y = data_set_t["y"].mean()
|
||||
data_set_t["d"] = abs(data_set_t["x"] - mean_x) + abs(data_set_t["y"] - mean_y)
|
||||
distance_t = data_set_t["d"].sort_values(ascending=True, inplace=False)
|
||||
"""if distance_t.index==[]:
|
||||
print(candidate_pipe)
|
||||
else:"""
|
||||
center_t = distance_t.index[0]
|
||||
return center_t
|
||||
candidate_pipe_list = list(candidate_pipe)
|
||||
start_nodes = pipe_start_node[candidate_pipe_list]
|
||||
end_nodes = pipe_end_node[candidate_pipe_list]
|
||||
|
||||
x_vals = (
|
||||
node_x[start_nodes].to_numpy() + node_x[start_nodes].to_numpy()
|
||||
) / 2.0
|
||||
y_vals = (node_y[end_nodes].to_numpy() + node_y[end_nodes].to_numpy()) / 2.0
|
||||
mean_x = float(np.mean(x_vals))
|
||||
mean_y = float(np.mean(y_vals))
|
||||
distance = np.abs(x_vals - mean_x) + np.abs(y_vals - mean_y)
|
||||
center_idx = int(np.argmin(distance))
|
||||
return candidate_pipe_list[center_idx]
|
||||
|
||||
|
||||
def find_new_center_pipe(
|
||||
@@ -56,11 +50,8 @@ def find_new_center_pipe(
|
||||
|
||||
def cal_area_node_linked_pipe(nodeset, node_pipe_dic):
|
||||
pipeset = []
|
||||
nodeset = list(nodeset)
|
||||
for i in range(len(nodeset)):
|
||||
temp_node = nodeset[i]
|
||||
pipe = node_pipe_dic[temp_node]
|
||||
pipeset = pipeset + pipe
|
||||
for temp_node in nodeset:
|
||||
pipeset.extend(node_pipe_dic[temp_node])
|
||||
return pipeset
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user