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