TransCAD軟件具備友好的用戶界面。然而復(fù)雜的模型,通常有很多參數(shù),輸入輸出數(shù)據(jù)需要在用戶界面設(shè)置。例如遇到不同的方案評(píng)價(jià)、或者模型輸入變化要重新運(yùn)算,如果都去設(shè)置對(duì)話框的各種參數(shù)和操作界面,顯然是非常費(fèi)時(shí)費(fèi)力的。本文介紹如何記錄這些設(shè)置,并實(shí)現(xiàn)一鍵自動(dòng)運(yùn)行模型。
很多初級(jí)入門的用戶,可能忽略了軟件的模型設(shè)置保存工具和模型批處理工具。模型設(shè)置保存工具主要是針對(duì)經(jīng)常需要的單個(gè)模型步驟,用戶可以保存相應(yīng)的設(shè)置,以便下次運(yùn)行直接應(yīng)用設(shè)置。模型批處理工具則包括單個(gè)模型步驟或者多個(gè)模型步驟的宏錄制(類型Excel的操作宏錄制),當(dāng)然也包括一些數(shù)據(jù)的運(yùn)算操作的錄制,如果結(jié)合TransCAD的模型流程圖工具,功能將十分強(qiáng)大。有關(guān)模型流程圖工具的信息,請(qǐng)查閱:TransCAD自動(dòng)建立模型流程圖和界面的方法。下面對(duì)這兩個(gè)工具的應(yīng)用舉例說(shuō)明:
1、模型設(shè)置保存工具
模型設(shè)置保存工具主要是針對(duì)經(jīng)常需要的單個(gè)模型步驟,用戶可以保存相應(yīng)的設(shè)置,以便下次運(yùn)行直接應(yīng)用設(shè)置。譬如用戶對(duì)自己的交通分配模型的參數(shù)進(jìn)行設(shè)置后,希望把這些參數(shù)設(shè)置都保存下來(lái),以便下次快捷使用。
Step1:打開TransCAD軟件,在菜單“文件——打開工作區(qū)”,選擇打開教程文件的交通分配工作區(qū)Traffic Assign.wrk(通常位于目錄C:UsersAdministratorDocumentsCaliperTransCAD 9.0TutorialTraffic Assign.wrk,老的軟件版本,可在安裝程序文件夾的Tutorial下找到)。
Step2:在菜單“規(guī)劃模型——靜態(tài)交通分配——交通分配…”打開交通分配對(duì)話框。
Step3:在交通分配對(duì)話框中修改自己需要的模型參數(shù),這里用戶可以做任何參數(shù)和輸入數(shù)據(jù)的修改,包括“選項(xiàng)”對(duì)話框的各種設(shè)置。為了舉例,我們修改BPR延誤函數(shù)的Beta參數(shù)值由4改為4.5,迭代次數(shù)由500改為300。
Step4:在交通分配對(duì)話框中單擊“設(shè)置”按鈕,彈出設(shè)置對(duì)話框。
Step5:在設(shè)置對(duì)話框單擊按鈕,輸入設(shè)置的名稱和描述,單擊保存。設(shè)置對(duì)話框就會(huì)顯示一條設(shè)置記錄。當(dāng)然針對(duì)不同的模型項(xiàng)目參數(shù)設(shè)置,用戶可以保存不同的設(shè)置記錄,可以按照名稱、日期進(jìn)行排序,以便快捷調(diào)用。
Step6:下次運(yùn)算交通分配,若要調(diào)用這個(gè)參數(shù)設(shè)置,只要在交通分配對(duì)話框單擊“設(shè)置”按鈕,彈出設(shè)置對(duì)話框,單擊一條設(shè)置記錄,然后單擊“加載”后,交通分配界面就自動(dòng)應(yīng)用了所有參數(shù)設(shè)置。單擊交通分配對(duì)話框的“確認(rèn)”按鈕,交通分配程序就開始運(yùn)行了。如果用戶要在此設(shè)置基礎(chǔ)上做別的修改,則是加載后到交通分配對(duì)話框進(jìn)行修改后再保存即可。
2、TransCAD保存模型設(shè)置的信息
如果要查看設(shè)置信息,先選中一條設(shè)置記錄,然后在設(shè)置對(duì)話框單擊按鈕,便可以彈出設(shè)置信息的GISDK宏代碼對(duì)話框:
模型設(shè)置的GISDK宏代碼對(duì)話框代碼可以復(fù)制出來(lái),也是比較容易閱讀的,如果用戶使用微軟的Visual Studio Code代碼編輯器,并安裝GISDK插件,就可以看到如下代碼形式:
Opts = null Opts.Input.Database= {"Endpoints", "Base Year Network"} // 輸入的路網(wǎng)和街道圖層名稱 Opts.Input.Network = "C:\Users\Administrator\Documents\Caliper\TransCAD 9.0\Tutorial\Plan_Net.net"// 輸入的交通網(wǎng)絡(luò)文件 Opts.Input.[ODMatrix Currency] = {"C:\Users\Administrator\Documents\Caliper\TransCAD 9.0\Tutorial\Plan_OD.mtx", "Total(7-9)", "Rows", "Cols"} //輸入的OD矩陣文件、矩陣核和矩陣索引 Opts.Field.[VDF Fld Names] = {"[Freeflow Time]", "[AB_AMCapacity/ BA_AMCapacity]", "Alpha", "Beta", "None"} //延誤函數(shù)對(duì)應(yīng)的輸入字段名稱 Opts.Global.[Load Method] = "CUE" // 表示共軛FW算法 Opts.Global.[Loading Multiplier] = 1// 加載用于分配OD的倍數(shù)因子 Opts.Global.[N Conjugate] = 2 // 共軛梯度算法的共軛數(shù) Opts.Global.Convergence = 0.0001 // 收斂的相對(duì)間隙值設(shè)置 Opts.Global.Iterations = 300 // 分配迭代數(shù) Opts.Global.[Force Threads] = 12 // 多線程計(jì)算使用的CPU線程數(shù)目 Opts.Global.[VDF DLL] = "bpr.vdf" // 選擇了BPR延誤函數(shù) Opts.Global.[VDF Defaults] = {, , 0.15, 4.5, 0}//BPR延誤函數(shù)的默認(rèn)參數(shù),軟件默認(rèn)Beta為4,本次改為4.5。 Opts.Flag.[Do Emission] = 0 // 是否計(jì)算尾氣排放,0表示否,下同 Opts.Flag.[Do Theme] = 0 // 是否生成流量大小專題和飽和度專題 Opts.Flag.[Do Skipping] = 0 // 是否忽略流量小的OD對(duì) Opts.Flag.[Do Flow Saving] = 0 // 是否將分配流量保存到路段圖層的字段 Opts.Flag.[Do Warm Start] = 0 // 是否熱啟動(dòng) Opts.Flag.[Do Turn Movement] = 0 // 是否報(bào)告交叉口轉(zhuǎn)向流量 Opts.Local.[Do Critical] = 0 // 是否進(jìn)行關(guān)鍵路段/選擇路段流量分析 Opts.Local.[Do Tabulation] = 0 // 是否報(bào)告制表 Opts.Local.[Do Dynamic Skimming] = 0// 是否動(dòng)態(tài)特征提取 Opts.Local.[Do Iteration Log] = 1 // 是否生成迭代日志 Opts.Local.[Do VMT/VHT Report] = 0 // 是否報(bào)告車英里,車小時(shí)
上面的GISDK代碼對(duì)熟悉的編程的人來(lái)說(shuō)非常容易閱讀。不過(guò)即使用戶沒(méi)有學(xué)過(guò)GISDK編程,只要英語(yǔ)還可以,也能對(duì)里面的參數(shù)內(nèi)容理解十之八九。為了使初級(jí)用戶能夠了解其含義,我們對(duì)其用“\”后面的文字進(jìn)行了注釋。因此,如果您需要修改什么參數(shù),不一定要到對(duì)話框中修改,直接修改GISDK代碼也可以。下面介紹如何錄制GISDK代碼并一鍵運(yùn)行模型:
3、模型批處理工具
Step1:打開TransCAD軟件,在菜單“文件——打開工作區(qū)”,選擇打開教程文件的交通分配工作區(qū)Traffic Assign.wrk(同上)。
Step2:在菜單“規(guī)劃模型——批處理編輯”打開批處理模式工具箱。
Step3:?jiǎn)螕襞幚砉ぞ呦涞匿浿疲▓A點(diǎn))按鈕,準(zhǔn)備錄制操作的GISDK宏代碼。下來(lái)菜單默認(rèn)為No Run:表示錄制過(guò)程不運(yùn)行模型,Dry Run:表示錄制過(guò)程會(huì)得到必要的輸出表但不實(shí)際運(yùn)行模型(形式上的輸出,表的內(nèi)容是空的,在多個(gè)步驟錄制時(shí)可以作為下一步驟的輸入),F(xiàn)ull Run:表示錄制過(guò)程完整運(yùn)行模型。
?
Step4:在菜單“規(guī)劃模型——靜態(tài)交通分配——交通分配…”打開交通分配對(duì)話框。此時(shí),對(duì)話框中的“確認(rèn)”按鈕變成“隊(duì)列”按鈕,按下后表示記錄了相應(yīng)的計(jì)算程序。
Step5:在交通分配對(duì)話框中修改自己需要的模型參數(shù)。修改BPR延誤函數(shù)的Beta參數(shù)值由4改為4.5,迭代次數(shù)由500改為300;單擊“選項(xiàng)”按鈕進(jìn)入選項(xiàng)對(duì)話框,勾選“創(chuàng)建專題”,單擊確認(rèn)返回交通分配對(duì)話框。
Step6:在交通分配對(duì)話框單擊“隊(duì)列”按鈕,彈出輸出文件設(shè)置對(duì)話框,選擇要保存分配結(jié)果的文件夾,并單擊“確認(rèn)”。這里包含一個(gè)流量文件和迭代日志文件:
Step7:上述步驟單擊確認(rèn)后,您會(huì)發(fā)現(xiàn)軟件好像什么也沒(méi)做。但實(shí)際上,軟件已經(jīng)記錄了交通分配的所有參數(shù)設(shè)置操作過(guò)程。單擊批處理工具箱的停止錄制(方框)按鈕,會(huì)詢問(wèn)是否保存批處理內(nèi)容,單擊“是”,選擇文件夾輸入文件名“test”保存批處理文件。
單擊“保存”按鈕后,Windows自帶的筆記本程序會(huì)自動(dòng)打開錄制的源代碼,不過(guò)看起來(lái)不大容易閱讀。
我們推薦用微軟的Visual Studio Code + GISDK插件來(lái)編輯代碼。可以在菜單“編輯——首選項(xiàng)…”彈出對(duì)話框中的“日志”選項(xiàng)卡,將原代表編輯器改為微軟的Visual Studio Code,例如:"C:UsersAdministratorAppDataLocalProgramsMicrosoft VSCodeCode.exe"。
這樣單擊“保存”按鈕后,自動(dòng)用Visual Studio Code打開了錄制的代碼。
至此,交通分配的宏已經(jīng)錄制完畢,下面我們將運(yùn)行交通分配程序:
Step8:使用菜單“文件——關(guān)閉工作區(qū)”關(guān)閉所有的文件。使用菜單“工具——GISDK應(yīng)用程序編程——GISDK用戶程序開發(fā)工具箱”打開GISDK工具箱:
Step9:選擇第一個(gè)編譯按鈕,選擇test.rsc文件進(jìn)行編譯。
Step10:選擇第二個(gè)測(cè)試按鈕,彈出測(cè)試對(duì)話框輸入"BatchRun"。
Step11:?jiǎn)螕簟按_認(rèn)”按鈕,軟件開始運(yùn)行交通分配。
Step12:運(yùn)行結(jié)束后,在輸出文件夾(例子為:C:UsersAdministratorDocumentsCaliperTransCAD9.0)生成了流量和迭代日志兩個(gè)文件:
至此,利用批處理工具運(yùn)行交通分配程序完畢!
您可能要問(wèn),什么圖也沒(méi)看到啊。查看分配結(jié)果的一個(gè)方法是:打開交通分配工作區(qū),然后打開分配結(jié)果LinkFlows.bin表,通過(guò)ID鏈接后繪制流量大小和飽和度專題圖。另外,也可以是手動(dòng)分配的時(shí)候勾選“選項(xiàng)”對(duì)話框的“創(chuàng)建專題”,可以自動(dòng)創(chuàng)建專題圖。
下面我們來(lái)測(cè)試一下增加OD流量,分配后打開專題地圖的效果:
(1)我們按默認(rèn)參數(shù)做一次手動(dòng)交通分配,然后做設(shè)當(dāng)?shù)貓D優(yōu)化設(shè)置后(例如隱藏節(jié)點(diǎn)圖層,形心連線集合),保存地圖MyTest.map到同一個(gè)目錄。
(2)在微軟Visual Studio Code中把test.rsc文件做如下修改后保存:
[1]矩陣加載系數(shù)obj.DemandMultiplier = 1改為obj.DemandMultiplier= 1.2。
[2]在程序末尾ok = obj.Run()和return(ok)語(yǔ)句之間,添加打開地圖和刷新地圖兩行代碼:
ok= obj.Run()
OpenMap("C:\Users\Administrator\Documents\Caliper\TransCAD 9.0\MyTest.map",)
RedrawMap()
return(ok)
(3)重復(fù)上述Step8-Step12的操作,運(yùn)行完成后自動(dòng)打開地圖顯示流量飽和度專題圖。我們發(fā)現(xiàn)藍(lán)色虛線方框的路段擁擠程度明顯增加了。
可見,無(wú)論多少?gòu)?fù)雜的模型,只要上面錄制一次宏,然后編譯運(yùn)行就一鍵完成了。如果修改一些代碼,還可以進(jìn)行打開地圖,對(duì)比方案等各種操作。
有人會(huì)問(wèn),Step8-Step12雖然很簡(jiǎn)單,但也算不上“一鍵完成“吧?實(shí)際工作中,我們會(huì)把運(yùn)行宏"BatchRun"(名字隨便可以改)做到菜單中,或者做到流程圖中,就真正做到一鍵運(yùn)行模型了。
下面是錄制的GISDK代碼,這些代碼都是自動(dòng)生成的,無(wú)需用戶編寫程序,除了自己添加了2行打開地圖和刷新地圖的代碼(可以查看GISDK幫助)。注意這是最新TransCAD 9.0版本錄制的宏,采用了面向?qū)ο蟮腉ISDK程序。這和老版本的軟件錄制的程序有所不同,和本文第一部分設(shè)置對(duì)話框獲取設(shè)置代碼的有些關(guān)鍵詞名稱也有所變化(老版本完全一致),但不影響對(duì)參數(shù)意思的理解。
Macro "Batch Run"
RunMacro("Traffic Assignment")
endMacro
Macro "Traffic Assignment"
onerrordo
ShowMessage(GetLastError())
return()
end
obj = CreateObject("Network.Assignment")
obj.LayerDB = "C:\Users\Administrator\Documents\Caliper\TransCAD 9.0\Tutorial\Plan_net.DBD"
obj.Network = "C:\Users\Administrator\Documents\Caliper\TransCAD 9.0\Tutorial\Plan_Net.net"
obj.ResetClasses()
obj.Method = "CUE"
obj.Iterations = 300
obj.Convergence = 0.0001
obj.DemandMatrix({MatrixFile: "C:\Users\Administrator\Documents\Caliper\TransCAD 9.0\Tutorial\Plan_OD.mtx", Matrix: "Total(7-9)", RowIndex: "Rows", ColumnIndex: "Cols"})
obj.AddClass({Demand: "Total(7-9)"})
obj.DelayFunction = {Function: "bpr.vdf", Fields: {"[FreeflowTime]", "[AB_AMCapacity / BA_AMCapacity]", "Alpha", "Beta", "None"},
Defaults:{null, null, 0.15, 4.5, 0}}
obj.DemandMultiplier = 1.2
obj.FlowTable = "C:\Users\Administrator\Documents\Caliper\TransCAD 9.0\LinkFlows.bin"
obj.IterationLog = "C:\Users\Administrator\Documents\Caliper\TransCAD 9.0\IterationLog.bin"
ok = obj.Run()
OpenMap("C:\Users\Administrator\Documents\Caliper\TransCAD 9.0\MyTest.map",)
RedrawMap()
return(ok)
endmacro
4、結(jié)語(yǔ)
用戶可以通過(guò)錄制TransCAD的各種模型參數(shù)、輸入輸出數(shù)據(jù)設(shè)置,以及多個(gè)步驟的聯(lián)合錄制,完成一系列模型流程的一鍵運(yùn)算。這在大型復(fù)雜模型,或者經(jīng)常有多方案需要重復(fù)運(yùn)行的模型中十分重要。即使是交通影響評(píng)價(jià),有可能也要多次反復(fù)測(cè)試結(jié)果,或者說(shuō)用戶做好模板下次更換輸入數(shù)據(jù)和參數(shù)就一鍵運(yùn)行得到結(jié)果。當(dāng)然結(jié)果的統(tǒng)計(jì)匯總分析、可視化等也可以再寫點(diǎn)程序自動(dòng)處理。但軟件的模型模塊都是可以通過(guò)代碼錄制完成,而不是用戶自己編寫。
因此,如果用戶能夠有一定的GISDK編程基礎(chǔ)和模型流程圖使用經(jīng)驗(yàn),那將大大提高工作效率。關(guān)于流程圖的介紹,可以查閱:TransCAD自動(dòng)建立模型流程圖和界面的方法。后續(xù),我們也將對(duì)流程圖的具體使用,包括如何嵌入錄制的模型程序進(jìn)行介紹。
審核編輯 :李倩
-
流程圖
+關(guān)注
關(guān)注
2文章
63瀏覽量
18762 -
模型
+關(guān)注
關(guān)注
1文章
3254瀏覽量
48894
原文標(biāo)題:TransCAD模型一鍵運(yùn)行工具介紹
文章出處:【微信號(hào):TransCADTransModeler,微信公眾號(hào):TransCAD和TransModeler交通軟件】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論