PTV Visum - Frequently Asked Questions (FAQs)

(#VIS13648)

- Kann man Strecken, Knoten oder Bezirke neu nummerieren, damit nur teilweise belegte Zahlenbereiche wieder frei werden?
- Das Einlesen von Daten aus einer ACCESS-Datenbank führt zur Fehlermeldung 'Überlauf'.

Der Vorschlagswert für den ID-Offset beim additiven Lesen und beim Anwenden von Modelltransferdateien ist immer die höchste vorkommende ID+1. Dadurch entstehen in vielen Fällen (insbesondere bei Verwendung externer Kennungen als IDs) sehr schnell sehr große IDs und u.U. auch Überläufe.


Seit Visum14 gibt es für viele Netzobjektklassen die Funktion 'Umnummerieren': Knoten/Strecken/Bezirke/Oberknoten/Oberbezirke/Gebiete/POIs/Screenlines/Zählstellen/Detektoren/Haltepunkte/Haltestellenbereiche/Haltestellen/Linien (Fahrplanfahrten/Koppelabschnitte) -> (Rechtsklick zum Öffnen des Kontextmenüs) -> Umnummerieren

Diese Funktion ist auch als die COM-Methode 'Renumber' verfügbar, und ist performanter als die Funktion aus dem Kontextmenü. Zusätzlich kann optional ein Filter berücksichtigt werden, und auch die Schrittgröße ist einstellbar.
Damit kann man neu nummerieren mit einem einzigen Aufruf, die man sogar über das Python console AddIn absetzen kann:
- Visum.Net.Links.Renumber(99,3,True)
Hierin stehen die Argumente für (neue Start Nummer, Schrittgröße, Nur Aktive Wahr|Falsch)


Workaround bis Visum14:
Über COM die IDs von bestimmten Objektklassen erneut nummerieren. Das geht bei den meisten Objekten mit der Zeile ''For Each anObject In Visum.Net.Nodes.GetAll' wie in diesem Fall für Knoten. Das Setzen des neues Wertes geht über 'anObject.AttValue('NO') = newNumber'.


Strecken müssen gesondert behandelt werden, da sie eine Hin- und eine Rückrichtung besitzen, also aus zwei Objekten bestehen, die beide zeitgleich geändert werden müssen. Aus diesem Grund kann man die Methode AttValue('NO') nicht nutzen. Bis Visum 10 konnte deshalb die Streckennummer über COM nicht geändert werden. Seit Visum 11 gibt es hierfür die methode SetNo(...).


Manche Objekte verwenden einen mehrteiligen Schlüssel und haben kein Attribut 'NO'. Hier ist keine Neunummerierung erforderlich.


Beispiele sind im nachfolgenden VBA-Projekt enthalten:
http://vision-traffic.ptvgroup.com/faq-files/PTV_RenumberObjects.zip