TransCAD軟件具備友好的用戶界面。然而復雜的模型,通常有很多參數,輸入輸出數據需要在用戶界面設置。例如遇到不同的方案評價、或者模型輸入變化要重新運算,如果都去設置對話框的各種參數和操作界面,顯然是非常費時費力的。本文介紹如何記錄這些設置,并實現一鍵自動運行模型。
很多初級入門的用戶,可能忽略了軟件的模型設置保存工具和模型批處理工具。模型設置保存工具主要是針對經常需要的單個模型步驟,用戶可以保存相應的設置,以便下次運行直接應用設置。模型批處理工具則包括單個模型步驟或者多個模型步驟的宏錄制(類型Excel的操作宏錄制),當然也包括一些數據的運算操作的錄制,如果結合TransCAD的模型流程圖工具,功能將十分強大。有關模型流程圖工具的信息,請查閱:TransCAD自動建立模型流程圖和界面的方法。下面對這兩個工具的應用舉例說明:
1、模型設置保存工具
模型設置保存工具主要是針對經常需要的單個模型步驟,用戶可以保存相應的設置,以便下次運行直接應用設置。譬如用戶對自己的交通分配模型的參數進行設置后,希望把這些參數設置都保存下來,以便下次快捷使用。
Step1:打開TransCAD軟件,在菜單“文件——打開工作區”,選擇打開教程文件的交通分配工作區Traffic Assign.wrk(通常位于目錄C:UsersAdministratorDocumentsCaliperTransCAD 9.0TutorialTraffic Assign.wrk,老的軟件版本,可在安裝程序文件夾的Tutorial下找到)。
Step2:在菜單“規劃模型——靜態交通分配——交通分配…”打開交通分配對話框。
Step3:在交通分配對話框中修改自己需要的模型參數,這里用戶可以做任何參數和輸入數據的修改,包括“選項”對話框的各種設置。為了舉例,我們修改BPR延誤函數的Beta參數值由4改為4.5,迭代次數由500改為300。
Step4:在交通分配對話框中單擊“設置”按鈕,彈出設置對話框。
Step5:在設置對話框單擊按鈕,輸入設置的名稱和描述,單擊保存。設置對話框就會顯示一條設置記錄。當然針對不同的模型項目參數設置,用戶可以保存不同的設置記錄,可以按照名稱、日期進行排序,以便快捷調用。
Step6:下次運算交通分配,若要調用這個參數設置,只要在交通分配對話框單擊“設置”按鈕,彈出設置對話框,單擊一條設置記錄,然后單擊“加載”后,交通分配界面就自動應用了所有參數設置。單擊交通分配對話框的“確認”按鈕,交通分配程序就開始運行了。如果用戶要在此設置基礎上做別的修改,則是加載后到交通分配對話框進行修改后再保存即可。
2、TransCAD保存模型設置的信息
如果要查看設置信息,先選中一條設置記錄,然后在設置對話框單擊按鈕,便可以彈出設置信息的GISDK宏代碼對話框:
模型設置的GISDK宏代碼對話框代碼可以復制出來,也是比較容易閱讀的,如果用戶使用微軟的Visual Studio Code代碼編輯器,并安裝GISDK插件,就可以看到如下代碼形式:
Opts = null Opts.Input.Database= {"Endpoints", "Base Year Network"} // 輸入的路網和街道圖層名稱 Opts.Input.Network = "C:\Users\Administrator\Documents\Caliper\TransCAD 9.0\Tutorial\Plan_Net.net"// 輸入的交通網絡文件 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"} //延誤函數對應的輸入字段名稱 Opts.Global.[Load Method] = "CUE" // 表示共軛FW算法 Opts.Global.[Loading Multiplier] = 1// 加載用于分配OD的倍數因子 Opts.Global.[N Conjugate] = 2 // 共軛梯度算法的共軛數 Opts.Global.Convergence = 0.0001 // 收斂的相對間隙值設置 Opts.Global.Iterations = 300 // 分配迭代數 Opts.Global.[Force Threads] = 12 // 多線程計算使用的CPU線程數目 Opts.Global.[VDF DLL] = "bpr.vdf" // 選擇了BPR延誤函數 Opts.Global.[VDF Defaults] = {, , 0.15, 4.5, 0}//BPR延誤函數的默認參數,軟件默認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 // 是否報告交叉口轉向流量 Opts.Local.[Do Critical] = 0 // 是否進行關鍵路段/選擇路段流量分析 Opts.Local.[Do Tabulation] = 0 // 是否報告制表 Opts.Local.[Do Dynamic Skimming] = 0// 是否動態特征提取 Opts.Local.[Do Iteration Log] = 1 // 是否生成迭代日志 Opts.Local.[Do VMT/VHT Report] = 0 // 是否報告車英里,車小時
上面的GISDK代碼對熟悉的編程的人來說非常容易閱讀。不過即使用戶沒有學過GISDK編程,只要英語還可以,也能對里面的參數內容理解十之八九。為了使初級用戶能夠了解其含義,我們對其用“\”后面的文字進行了注釋。因此,如果您需要修改什么參數,不一定要到對話框中修改,直接修改GISDK代碼也可以。下面介紹如何錄制GISDK代碼并一鍵運行模型:
3、模型批處理工具
Step1:打開TransCAD軟件,在菜單“文件——打開工作區”,選擇打開教程文件的交通分配工作區Traffic Assign.wrk(同上)。
Step2:在菜單“規劃模型——批處理編輯”打開批處理模式工具箱。
Step3:單擊批處理工具箱的錄制(圓點)按鈕,準備錄制操作的GISDK宏代碼。下來菜單默認為No Run:表示錄制過程不運行模型,Dry Run:表示錄制過程會得到必要的輸出表但不實際運行模型(形式上的輸出,表的內容是空的,在多個步驟錄制時可以作為下一步驟的輸入),Full Run:表示錄制過程完整運行模型。
?
Step4:在菜單“規劃模型——靜態交通分配——交通分配…”打開交通分配對話框。此時,對話框中的“確認”按鈕變成“隊列”按鈕,按下后表示記錄了相應的計算程序。
Step5:在交通分配對話框中修改自己需要的模型參數。修改BPR延誤函數的Beta參數值由4改為4.5,迭代次數由500改為300;單擊“選項”按鈕進入選項對話框,勾選“創建專題”,單擊確認返回交通分配對話框。
Step6:在交通分配對話框單擊“隊列”按鈕,彈出輸出文件設置對話框,選擇要保存分配結果的文件夾,并單擊“確認”。這里包含一個流量文件和迭代日志文件:
Step7:上述步驟單擊確認后,您會發現軟件好像什么也沒做。但實際上,軟件已經記錄了交通分配的所有參數設置操作過程。單擊批處理工具箱的停止錄制(方框)按鈕,會詢問是否保存批處理內容,單擊“是”,選擇文件夾輸入文件名“test”保存批處理文件。
單擊“保存”按鈕后,Windows自帶的筆記本程序會自動打開錄制的源代碼,不過看起來不大容易閱讀。
我們推薦用微軟的Visual Studio Code + GISDK插件來編輯代碼。可以在菜單“編輯——首選項…”彈出對話框中的“日志”選項卡,將原代表編輯器改為微軟的Visual Studio Code,例如:"C:UsersAdministratorAppDataLocalProgramsMicrosoft VSCodeCode.exe"。
這樣單擊“保存”按鈕后,自動用Visual Studio Code打開了錄制的代碼。
至此,交通分配的宏已經錄制完畢,下面我們將運行交通分配程序:
Step8:使用菜單“文件——關閉工作區”關閉所有的文件。使用菜單“工具——GISDK應用程序編程——GISDK用戶程序開發工具箱”打開GISDK工具箱:
Step9:選擇第一個編譯按鈕,選擇test.rsc文件進行編譯。
Step10:選擇第二個測試按鈕,彈出測試對話框輸入"BatchRun"。
Step11:單擊“確認”按鈕,軟件開始運行交通分配。
Step12:運行結束后,在輸出文件夾(例子為:C:UsersAdministratorDocumentsCaliperTransCAD9.0)生成了流量和迭代日志兩個文件:
至此,利用批處理工具運行交通分配程序完畢!
您可能要問,什么圖也沒看到啊。查看分配結果的一個方法是:打開交通分配工作區,然后打開分配結果LinkFlows.bin表,通過ID鏈接后繪制流量大小和飽和度專題圖。另外,也可以是手動分配的時候勾選“選項”對話框的“創建專題”,可以自動創建專題圖。
下面我們來測試一下增加OD流量,分配后打開專題地圖的效果:
(1)我們按默認參數做一次手動交通分配,然后做設當地圖優化設置后(例如隱藏節點圖層,形心連線集合),保存地圖MyTest.map到同一個目錄。
(2)在微軟Visual Studio Code中把test.rsc文件做如下修改后保存:
[1]矩陣加載系數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)重復上述Step8-Step12的操作,運行完成后自動打開地圖顯示流量飽和度專題圖。我們發現藍色虛線方框的路段擁擠程度明顯增加了。
可見,無論多少復雜的模型,只要上面錄制一次宏,然后編譯運行就一鍵完成了。如果修改一些代碼,還可以進行打開地圖,對比方案等各種操作。
有人會問,Step8-Step12雖然很簡單,但也算不上“一鍵完成“吧?實際工作中,我們會把運行宏"BatchRun"(名字隨便可以改)做到菜單中,或者做到流程圖中,就真正做到一鍵運行模型了。
下面是錄制的GISDK代碼,這些代碼都是自動生成的,無需用戶編寫程序,除了自己添加了2行打開地圖和刷新地圖的代碼(可以查看GISDK幫助)。注意這是最新TransCAD 9.0版本錄制的宏,采用了面向對象的GISDK程序。這和老版本的軟件錄制的程序有所不同,和本文第一部分設置對話框獲取設置代碼的有些關鍵詞名稱也有所變化(老版本完全一致),但不影響對參數意思的理解。
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、結語
用戶可以通過錄制TransCAD的各種模型參數、輸入輸出數據設置,以及多個步驟的聯合錄制,完成一系列模型流程的一鍵運算。這在大型復雜模型,或者經常有多方案需要重復運行的模型中十分重要。即使是交通影響評價,有可能也要多次反復測試結果,或者說用戶做好模板下次更換輸入數據和參數就一鍵運行得到結果。當然結果的統計匯總分析、可視化等也可以再寫點程序自動處理。但軟件的模型模塊都是可以通過代碼錄制完成,而不是用戶自己編寫。
因此,如果用戶能夠有一定的GISDK編程基礎和模型流程圖使用經驗,那將大大提高工作效率。關于流程圖的介紹,可以查閱:TransCAD自動建立模型流程圖和界面的方法。后續,我們也將對流程圖的具體使用,包括如何嵌入錄制的模型程序進行介紹。
審核編輯 :李倩
-
流程圖
+關注
關注
2文章
63瀏覽量
18802 -
模型
+關注
關注
1文章
3371瀏覽量
49290
原文標題:TransCAD模型一鍵運行工具介紹
文章出處:【微信號:TransCADTransModeler,微信公眾號:TransCAD和TransModeler交通軟件】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
開關柜一鍵順控在化工領域的應用
人機界面在開關柜一鍵順控中起到什么作用?
![人機界面在開關柜<b class='flag-5'>一鍵</b>順控中起到什么作用?](https://file1.elecfans.com//web2/M00/0A/D6/wKgZomcpfJeAGzUBAAgAM5DUJE0878.jpg)
10KV開關柜一鍵順控和110KV變電站一鍵順控哪些地方不同
![10KV開關柜<b class='flag-5'>一鍵</b>順控和110KV變電站<b class='flag-5'>一鍵</b>順控哪些地方不同](https://file1.elecfans.com//web2/M00/0A/7A/wKgaomcPJPyAQEkWAAFT5bh42uc514.jpg)
工業交換機一鍵重啟的好處
![工業交換機<b class='flag-5'>一鍵</b>重啟的好處](https://file1.elecfans.com/web2/M00/08/1D/wKgZomb1EFKAXcWvAE7rgTTOn6Q941.png)
LoRa無線一鍵報警安防建設系統
一鍵斷電開關的種類有哪些
一鍵斷電開關的安裝方法是什么
一鍵斷電開關的控制原理是什么
OOTDiffusion整合包一鍵AI換裝, 免費生成高端服裝模特照! 電商必備省錢工具!
![OOTDiffusion整合包<b class='flag-5'>一鍵</b>AI換裝, 免費生成高端服裝模特照! 電商必備省錢<b class='flag-5'>工具</b>!](https://file1.elecfans.com/web2/M00/02/80/wKgaoma2BRSAL_eOAANdylSINeU884.png)
開關柜一鍵順控的技術難點和優勢、發展趨勢?
智能開關柜能如何實現“可視化一鍵順控”?
![智能開關柜能如何實現“可視化<b class='flag-5'>一鍵</b>順控”?](https://file1.elecfans.com/web2/M00/EB/86/wKgaomZZbVWAaA9lAAQ90BhZqkU248.png)
寶塔面板Docker一鍵安裝:部署GPTAcademic,開發私有GPT學術優化工具
![寶塔面板Docker<b class='flag-5'>一鍵</b>安裝:部署GPTAcademic,開發私有GPT學術優化<b class='flag-5'>工具</b>](https://file1.elecfans.com//web2/M00/F7/00/wKgZomaDetqAKW_2AAMDjihaz70243.png)
智慧桿一鍵報警連入網關后無法對講是什么原因?
![智慧桿<b class='flag-5'>一鍵</b>報警連入網關后無法對講是什么原因?](https://file1.elecfans.com/web2/M00/C6/1C/wKgZomYFN32APZ39AACc9ag7KLA316.png)
評論