Python:从函数到属性

技术注解 #17

2016年8月
作者:Grant MacKinnon

大多数用户都熟悉在Aimsun模型的目标中创建自己的属性。 这些通常是数字或字符串,但也有可能在一个目标中添加一个列,根据一些Python代码返回一个值,允许一个值被即时计算。


一个简单的例子是,在转弯处放置一个标签字母,说明它是左转、直行、右转还是调头。



Aimsun Python函数属性 显示网络中的属性

点击放大:显示网络中的属性


首先,我们可以使用类型编辑器创建这个列(通过从类型窗口中选择相关的目标类型),然后添加一个新的列:类型函数列,在这种情况下,一个返回字符串作为结果的列。



Aimsu Python函数属性 显示网络中的属性

点击放大:使用类型编辑器创建列


该函数需要包含一个Python函数,其形式为:

def eval_attr(object):

其返回一个带有结果的值。


以下是我们存储在该列中的代码

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


然而,我们可以通过一个脚本来创建这一切,该脚本可以创建列,并填充代码。
直接从Python脚本中设置列的代码如下:


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 包含该函数的定义。


下载用于创建转向分类标签的Python脚本

更多技术说明

宏观函数组件

2016年3月:Marga Delgado解释了如何使用“宏观函数组件”在执行任务时产生额外的输出。

切换到Python 3

2021年5月:Python 2在2020年1月终结。 Tessa Hayman分享一些技巧,让你的脚本Python 3在Aimsun Next中获得最佳性能。

  • 有问题吗? 请联系我们。

    我们在这里提供帮助!

  • 有问题吗? 请联系我们。

    我们在这里提供帮助!

分享

引用Aimsun Next

Aimsun Next 20

Aimsun (2021). Aimsun Next 20 User's Manual, Aimsun Next Version 20.0.3, Barcelona, Spain. Accessed on: May. 1, 2021. [In software].
Available: qthelp://aimsun.com.aimsun.20.0/doc/UsersManual/Intro.html


Aimsun Next 8.4

Aimsun (2021). Aimsun Next 8.4 User's Manual, Aimsun Next Version 8.4.4, Barcelona, Spain. Accessed on: May. 1, 2021. [In software]. Available: qthelp://aimsun.com.aimsun.8.4/doc/UsersManual/Intro.html

Aimsun Next 20

@manual {​​​​​​​​AimsunManual,

title = {​​​​​​​​Aimsun Next 20 User's Manual}​​​​​​​​,

author = {​​​​​​​​Aimsun}​​​​​​​​,

edition = {​​​​​​​​​​​​​​​Aimsun Next 20.0.3}​​​​​​​​​​​​​​​,

address = {​​​​​​​​​​​​​​​Barcelona, Spain}​​​​​​​​​​​​​​​,

year = {​​​​​​​​​​​​​​​2021. [In software]}​​​​​​​​​​​​​​​,

month = {​​​​​​​​​​​​​​​Accessed on: Month, Day, Year}​​​​​​​​​​​​​​​,

url = {​​​​​​​​​​​​​​​qthelp://aimsun.com.aimsun.20.0/doc/UsersManual/Intro.html}​​​​​​​​​​​​​​​,

}​​​​​​​​​​​​​​​


Aimsun Next 8.4

@manual {​​​​​​​​AimsunManual,

title = {​​​​​​​​Aimsun Next 8.4 User's Manual}​​​​​​​​,

author = {​​​​​​​​Aimsun}​​​​​​​​,

edition = {​​​​​​​​​​​​​​​Aimsun Next 8.4.4}​​​​​​​​​​​​​​​,

address = {​​​​​​​​​​​​​​​Barcelona, Spain}​​​​​​​​​​​​​​​,

year = {​​​​​​​​​​​​​​​2021. [In software]}​​​​​​​​​​​​​​​,

month = {​​​​​​​​​​​​​​​Accessed on: Month, Day, Year}​​​​​​​​​​​​​​​,

url = {​​​​​​​​​​​​​​​qthelp://aimsun.com.aimsun.8.4/doc/UsersManual/Intro.html}​​​​​​​​​​​​​​​,

}​​​​​​​​​​​​​​​

Aimsun Next 20

TY - COMP

T1 - Aimsun Next 20 User's Manual

A1 - Aimsun

ET - Aimsun Next Version 20.0.3

Y1 - 2021

Y2 - Accessed on: Month, Day, Year

CY - Barcelona, Spain

PB - Aimsun

UR - [In software]. Available: qthelp://aimsun.com.aimsun.20.0/doc/UsersManual/Intro.html


Aimsun Next 8.4

TY - COMP

T1 - Aimsun Next 8.4 User's Manual

A1 - Aimsun

ET - Aimsun Next Version 8.4.4

Y1 - 2021

Y2 - Accessed on: Month, Day, Year

CY - Barcelona, Spain

PB - Aimsun

UR - [In software]. Available: qthelp://aimsun.com.aimsun.8.4/doc/UsersManual/Intro.html