Skip to main content
Glama
find-distance-attribute.py•4.74 kB
# -*- coding: ascii -*- """ Analizza attributi di distanza sui LineRouteItems per capire quale usare per l'interpolazione """ try: print("=" * 80) print("ANALISI ATTRIBUTI DISTANZA LINEROUTE") print("=" * 80) # Trova LineRoute lr = None for lineroute in Visum.Net.LineRoutes: name = lineroute.AttValue("Name") if name == "R17_2": lr = lineroute break if not lr: print("\nERRORE: LineRoute non trovato!") else: print("\nLineRoute: %s\n" % lr.AttValue("Name")) # Lista attributi da testare distance_attrs = [ "AccumLength", "Length", "DirectDist", "DirectDistOnNet", "Dist", "Distance", "AccumDist", "CumLength" ] print("Attributi disponibili sui LineRouteItems:\n") # Prendi primi 3 stops per test stops_to_check = [301, 370, 173] items_data = [] for lri in lr.LineRouteItems: stop_no = lri.AttValue("StopPointNo") if stop_no and int(stop_no) in stops_to_check: data = { 'stop': int(stop_no), 'index': lri.AttValue("Index") } # Testa ogni attributo for attr in distance_attrs: try: value = lri.AttValue(attr) data[attr] = value except: data[attr] = None items_data.append(data) # Ordina per index items_data.sort(key=lambda x: x['index']) # Stampa tabella print("%-10s | %-6s | %-12s | %-12s | %-12s" % ("Stop", "Index", "AccumLength", "Length", "Altri...")) print("-" * 80) for item in items_data: print("%-10d | %-6.0f | " % (item['stop'], item['index']), end="") for attr in distance_attrs[:2]: val = item.get(attr) if val is not None: print("%-12.3f | " % val, end="") else: print("%-12s | " % "N/A", end="") # Mostra altri attributi disponibili others = [] for attr in distance_attrs[2:]: if item.get(attr) is not None: others.append("%s=%.3f" % (attr, item[attr])) print(", ".join(others) if others else "Nessuno") # Calcola differenze print("\n" + "=" * 80) print("CALCOLO DIFFERENZE:") print("=" * 80) if len(items_data) >= 3: prev = items_data[0] # 301 curr = items_data[1] # 370 next_item = items_data[2] # 173 for attr in distance_attrs: if prev.get(attr) is not None and curr.get(attr) is not None and next_item.get(attr) is not None: diff_prev_curr = curr[attr] - prev[attr] diff_curr_next = next_item[attr] - curr[attr] diff_total = next_item[attr] - prev[attr] if abs(diff_total) > 0.001: # Evita divisione per zero proportion = diff_prev_curr / diff_total print("\n%s:" % attr) print(" 301: %.6f" % prev[attr]) print(" 370: %.6f" % curr[attr]) print(" 173: %.6f" % next_item[attr]) print(" Diff 301->370: %.6f" % diff_prev_curr) print(" Diff 370->173: %.6f" % diff_curr_next) print(" Diff totale: %.6f" % diff_total) print(" Proporzione: %.6f (= %.1f%%)" % (proportion, proportion * 100)) # Calcola tempo con questa proporzione # Tempo totale 301->173 = 720 sec (da output precedente) time_total = 720.0 pre_run = proportion * time_total print(" PreRunTime se usiamo questo: %.1f sec" % pre_run) if abs(pre_run - 79.0) < 1.0: print(" >>> QUESTO E' CORRETTO! (Visum usa 79 sec)") print("\n" + "=" * 80) print("CONCLUSIONE:") print("=" * 80) print("\nL'attributo che da proporzione corretta") print("(PreRunTime ~79 sec) e' quello giusto da usare!") except Exception as e: print("\nERRORE: %s" % str(e)) import traceback traceback.print_exc()

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/multiluca2020/visum-thinker-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server