MCPcopy Create free account
hub / github.com/Project-OSRM/osrm-backend / write_dot_file

Function write_dot_file

scripts/debug/dump_hsgr.py:189–240  ·  view source on GitHub ↗
(ebg_edges, hsgr_edges)

Source from the content-addressed store, hash-verified

187
188
189def write_dot_file(ebg_edges, hsgr_edges):
190 dot = args.dot
191 dot.write("digraph {\nrankdir=BT;\n") # not strict!
192 labels = {}
193 hsgr_edges = list(hsgr_edges)
194
195 def edge_params(e):
196 params = {
197 "label": e.weight,
198 "dir": "both", # not really, but enables arrowtail
199 # "constraint": "false",
200 }
201 if e.forward and e.backward:
202 params["arrowhead"] = "normal"
203 params["arrowtail"] = "dotnormal"
204 elif e.forward:
205 params["arrowhead"] = "normal"
206 params["arrowtail"] = "dot"
207 elif e.backward:
208 params["arrowhead"] = "none"
209 params["arrowtail"] = "dotnormal"
210 return params
211
212 def draw_edge(e, params, sub):
213 dot.write(f" {sub}{e.source}->{sub}{e.target}[{join(params)}];\n")
214 labels[f"{sub}{e.source}"] = e.source
215 labels[f"{sub}{e.target}"] = e.target
216
217 dot.write("subgraph cluster_ebg {\n label=ebg;\n")
218 for e in ebg_edges:
219 params = edge_params(e)
220 draw_edge(e, params, "ebg")
221 dot.write("}\n")
222
223 dot.write("subgraph cluster_hsgr {\n label=hsgr;\n")
224 for e in sorted(hsgr_edges):
225 params = edge_params(e)
226 if e.shortcut:
227 params["color"] = "red"
228 params["label"] = f'"{e.turn_id}|{e.weight}"'
229 draw_edge(e, params, "hsgr")
230 dot.write("}\n")
231
232 for id_, label in labels.items():
233 params = {"label": label}
234 dot.write(f"{id_}[{join(params)}];\n")
235 dot.write(
236 f"""
237 labelloc="t";
238 label="{os.path.basename(args.input)}";
239 }}\n"""
240 )
241
242
243def print_table(rows, headers):

Callers 1

dump_hsgr.pyFile · 0.85

Calls 4

edge_paramsFunction · 0.85
draw_edgeFunction · 0.85
joinFunction · 0.85
writeMethod · 0.45

Tested by

no test coverage detected