Die meisten Benutzer sind mit der Erstellung eigener Attribute innerhalb von Objekten innerhalb eines Aimsun-Modells vertraut. Dabei handelt es sich in der Regel um Zahlen oder Zeichenketten, aber es ist auch möglich, eine Spalte zu einem Objekt hinzuzufügen, in der ein Wert auf der Basis von Python-Code zurückgegeben wird, so dass ein Wert on the fly berechnet werden kann.
Ein einfaches Beispiel ist ein Etikett, das einen Buchstaben auf einer Kurve anbringt, der angibt, ob es sich um Links-, Durchgangs-, Rechts- oder U-Turn handelt.
Zum Vergrößern anklicken: Anzeige des Attributs im Netz
Zuerst könnten wir diese Spalte mit dem Typen-Editor erstellen (indem wir den entsprechenden Objekttyp im Fenster Typen auswählen) und dann eine neue Spalte mit der Funktion Spaltentyp hinzufügen, in diesem Fall eine, die als Ergebnis eine Zeichenfolge zurückgibt.
Zum Vergrößern anklicken: Erstellen Sie die Spalte mit dem Typen-Editor
Die Funktion muss eine Python-Funktion mit Signatur des Formulars enthalten:
def eval_attr(object):
die mit dem Ergebnis einen Wert zurückgibt.
Hier ist der Code, den wir innerhalb der Spalte speichern
def determineTurningLetterForAngle(angle):
dirString = ""
if abs(angle)<30.0: dirString+="T" elif abs(angle)>150.0:< dirString+="U" elif angle>0.0:
dirString+="L"
else:
dirString+="R"
return dirString
def retrieveTurningLetterForTurning(turning):
angle = turning.calcAngleSections()
directionString = determineTurningLetterForAngle(angle)
return directionString
def eval_attr(object):
res = retrieveTurningLetterForTurning(object)
return res
Wir können all dies jedoch aus einem Skript erstellen, das die Spalte erstellt und den Code auffüllt.
Der Code zum Einrichten der Spalte direkt aus einem Python-Skript heraus lautet wie folgt:
def main():
turnLetterAttr = model.getColumn("GKTurning::TurnLetter")
if turnLetterAttr == None:
turningType = model.getType("GKTurning")
turnLetterAttr =
turningType.addColumn("GKTurning::TurnLetter","TurnLetter",
GKColumn.String, GKColumn.ePython)
turnLetterAttr.setPythonCode(PYTHON_CODE_STRING)
main()
PYTHON_CODE_STRING enthält die Definition der Funktion.
Python-Skript zur Erstellung eines Drehklassifizierungsetiketts herunterladen