• 首頁 > ITS百科 > ITS文庫 > 正文

    未來交通︱一位少年的信號交叉口分析軟件之夢

    2017-06-14 10:37:27 來源: 一覽眾山小-可持續城市與交通 作者: 屈新明 評論:
    分享到:

    這款信號交叉口設計評價分析軟件(Aidaroe)是作者在重慶交通大學三年碩士研究生期間開發的一款Web在線應用。作者在總結行業用戶的痛點和用戶對實際功能需求的基礎上,結合對同類軟件的使用心得,試圖構建一款便捷、易用、高效、美觀的交叉口分析應用,旨在降低用戶的使用成本,提高工作效率。本文想要給大家一起分享整個軟件開發過程中經歷的挫折困難,走過的彎路和遇到的一些有趣事情,可供對行業軟件開發感興趣的讀者借鑒,軟件還處于測試階段,在此也希望得到各位的反饋建議。一覽眾山小-可持續城市與交通也十分樂意為這些創新且具有行動力的創業者提供孵化機會。聯系并加入我們吧!


    先通過三分鐘的視頻快速了解 AIDAROE

    軟件開發的起因:定個小目標

    編程對我來說有一種獨特的吸引力,享受著用代碼將自己的想法一步步實現這個過程,付出的代價就是犧牲掉不少空閑時間。當其他人吃著火鍋唱著歌的時候,我可能正默默的對著電腦屏幕發呆或敲著一行行代碼。

    本科和研究生階段的研究方向都是交通信息與控制,閑來無事的時候喜歡搗鼓搗鼓軟件,先后接觸了vissim、synchro、sidra、visum、TC等。這些軟件功能涉及面廣,在行業各領域被廣泛應用。但是在應用過程中,驚覺大多微觀交通軟件的開發是以國外的交通情況為背景,針對國內實際交通情況應用并不能完全協同。但若對模型參數進行校正則可以在國內交通情境中較好地應用,上述軟件在國內有較高的占有率也說明了這一點。不過國內實際交通情況及其復雜,用戶的操作習慣也存在差異,這些軟件還是有一些不太適應的地方,某些情境下無法解決用戶的實際痛點。以常用的synchro和sidra兩款交叉口軟件為例,總結起來主要有以下幾方面:

    渠化示意與實際差異大

    交叉口渠化示意圖最能直觀反映交叉口軟件模型和實際情況的差異,看兩者“長”得是否相像就能辨別。

    1.png

    上圖為兩款軟件的渠化示意圖:其箭頭標志大小、類型,人行橫道線,整體的渠化示意圖風格與國標《道路交通標志和標線(GB5768-2009)》存在較大的差異。除此之外,上述兩款軟件渠化示意圖也無法對實際交叉口中的左轉待轉區、直行待轉區、可變車道、公交專用道,導流線渠化島等進行處理。

    2.png

    圖形化功能較弱

    在實際項目中,交叉口渠化示意圖、流量圖和信號控制方案一般需要以圖片的形式在報告中直觀呈現。現階段渠化示意圖主要使用CAD進行描圖處理,流量圖多采用TC或者CAD繪制,信號控制方案主要采用Excel或者PPT繪制。

    3.png

    synchro和sidra更加注重的是數據評價分析,還很難滿足實際項目報告對圖形化結果的需求,需要借助于其他的軟件來實現,并且實現過程相對繁瑣。

    無法進行多方案管理

    現階段交叉口軟件大多只能對交叉口進行單方案評價和優化分析,無法直接實現多方案對比。例如:利用上述兩款軟件對某一交叉口的早高峰、平峰和晚高峰三種流量和信控方案進行對比分析,需要將三種評價結果導出到excel或者其他軟件中通過繪圖分析。過程較為繁瑣費時。

    因此,在大四的時候萌發了開發一款便捷的信號交叉口評價分析軟件的想法,不過那會兒編程水平也僅僅停留在能考過計算機二級的水平(年少無知的我居然還參加了計算機二級的培訓班,此刻允許你鄙視我3秒鐘)。理想豐滿,現實骨感,想法有了,等待我的是一個個“深不見底的坑”,編程語言中什么面向對象,繼承、多態等復雜的概念難以理解。網上找編程的程視頻資料學習,跟著視頻敲一行行代碼,不斷重復,從此便踏上了一邊學習編程,一邊開發應用的“不歸路”。對于編程基礎薄弱的我來說,開發一款信號交叉口評價分析軟件是一項“浩大”的工程。我沒有選擇一開始就進行整個軟件的開發,而是將整個軟件拆分成一個個小的功能模塊進行單獨開發,最后將各個功能模塊組成一個完整軟件應用。

    第一個小應用:

    繪制交叉口流量圖

    開發的第一個功能模塊是繪制交叉口流量圖。一圖勝千字,在報告中用交叉口流量圖來表示各個轉向之間的交通需求比使用表格和文字要直觀明了。在此之前交叉口流量圖主要采用TC、CAD和PPT繪制:TC繪制流量轉向圖步驟較為繁瑣,且無法處理掉頭流量;CAD主要適用于十字交叉口流量繪制,難以直觀展現各個方向交通需求大小;PPT是手動繪制各個線條,比較耗時。

    4.png

    流量圖也是整個信號交叉口軟件相對容易實現的功能,以流量圖作為開發的第一個模塊功能,目的就是先找個軟柿子捏捏,作為編程學習的練習項目,這個階段利用C#的GDI進行繪圖。原本以為畫幾條粗細不一的線上去,再添加上流量標簽就能搞定的事情,卻比想象的要麻煩得多。實際交叉口的復雜程度遠超想象:每條線條的起始點位置、寬度、曲率、與輸入流量之間的關系等問題都需要解決;點位計算結果不穩定,一個點位的偏差就會造成整個繪制出錯;編程水平太low:程序漏洞百出,經常出現各種始料未及的麻煩。

    5.png

    這個階段,不斷驗算點位計算公式,調試代碼存在的問題,筆記本上的筆記也越來越多。

    6.png

    經過了挺長一段時間的優化完善,盡管仍然偶爾出現不穩定的狀況,桌面端的交叉口流量圖應用已經可以逐漸可以在一些實際項目中運用了。

    7.png

    把應用搬進

    瀏覽器

    經過一段時間的試用體驗后,我發現桌面端的交叉口流量圖應用在實際使用中還是存在著問題,即無法在xp、macOS和其它部分操作系統中正常使用。那時候web端在線應用逐漸增多,web應用優點是運行在瀏覽器環境中,打破了操作系統之間的限制,能夠更靈活地適應用戶需求。參考了html5中的canvas繪圖功能,決定嘗試開發web端的交叉口流量圖應用。

    由于之前沒有接觸過html5、css、js等,所以又開始一邊學習,一邊開發。web端應用分為前端和后端:前端canvas負責繪圖,后端負責點位計算等。前端頁面布局設計內容相對較少,主要通過html和css完成;前端繪圖功能利用js控制canvas進行繪圖完成,這個過程就是將之前在桌面端的核心代碼用js實現了一遍。由于是第一次使用js語言來寫應用,其整體語言風格跟C#存在較大差異,剛開始難以適應,編碼質量也很差,開發進度緩慢。

    8.png

    盡管進展緩慢,有了桌面端的開發經驗,前端繪圖功能總體進展還算順利,終究還是將桌面端繪圖功能用js語言實現了。

    Web端交叉口流量圖功能開發的難點在于后臺功能的開發,之前完全沒有接觸過后臺開發,也不知道使用什么后臺語言,經過一番對比,在php、java、Python和nodejs中最后選用了nodejs作為后臺開發工具,選擇nodejs最重要的原因是后臺也可以用js實現,不用再去研究新的語言,開發速度會快一些。

     9.png

    選定nodejs作為后臺開發后,緊接著就是學習nodejs的相關內容,感謝這個偉大的互聯網時代,獲取學習資料的難度比我想象中要小得多,一番學習之后搭建起了初步了web端交叉口流量圖框架。Web端開發的最后一個難點就是將應用部署到服務器上,跟著網上的攻略買服務器、買域名、學習基本的linux系統操作命令,一切就緒之后,web端的交叉口流量圖應用終于可以正式運行。


    盡管現在回過頭來看界面設計簡直慘不忍睹,當時完成上線后能正常訪問心里還是有些小激動的。

    渠化示意圖應用

    Web端交叉口流量圖應用上線后,便開始準備開發交叉口渠化示意圖功能。為了使得渠化示意圖能最大程度的貼合實際交叉口,我重點參考了國標中關于交叉口標線相關的規范,借鑒了國標中交叉口示意圖的繪圖風格,并以此作為渠化示意圖繪制的基本風格,功能上能夠實現處理左轉待轉區、直行待轉區、可變車道、公交專用道,右轉渠化島等。

    交叉口渠化示意圖開發中,需要計算的點位數遠多于交叉口流量轉向圖,對點位計算的精度要求也更高,所以整體開發難度更大,加之期間有其他事情耽擱,開發周期相當漫長,交叉口渠化示意圖最后上線測試也比預期推遲了很長一段時間。

    10.png

    上線測試一段時間后,根據大家的反饋,部分交叉口左轉或者掉頭半徑不足時左轉或掉頭車道會被設置在進口道外側。因此又增加了車道調整功能,通過點擊箭頭標志更換箭頭類型,使其更加適應實際交叉口情況。

    11.png

    信號及評價

    分析功能

    要構成一個完整的信號交叉口設計評價分析應用,有了交叉口流量圖和渠化示意圖模塊后,還缺少信號方案設計和評價分析模塊。將已有的流量圖和渠化示意圖模塊組合到一起搭建初步的交叉口應用框架。首先需要解決的問題是應用界面設計,流量圖和渠化示意圖界面看起來嚴重缺乏設計感,也不太滿足軟件交互需求。為此學習了一段時間界面設計,參考其他一些在線應用的界面設計風格,在AI中繪制了初始版本的界面。

    12.png

    交叉口信號方案一般由相位相序圖和相位配時圖組成,考慮了非機動車相位、行人相位、搭接相位、待轉相位等開發了信號方案設計模塊。

    13.png

    完成信號方案設計模塊后,開始開發評價分析功能。根據交叉口評價分析的實際需求,選擇交叉口飽和度、延誤、排隊長度和服務水平作為評價分析指標,基于HCM2000手冊中評價分析模型進行計算。結合項目報告中對評價分析結果圖形化的需求,四個指標的評價結果均采用了圖形化展示效果。

    14.png

    15.png

    16.png

    17.png

    考慮到實際應用中對交叉口評價分析大多數需要對早高峰、平峰、晚高峰等情況進行評價分析,或者某個交叉口改造中不同方案的對比,交叉口應用支持對渠化、流量、信號等進行多方案設計,并可以在評價結果中直接對比分析不同方案,也支持將評價分析結果導出到excel中進一步處理分析。

    18.png

    信號交叉口評價分析應用網址:www.aidaroe.com  

    詳細操作視頻請見:http://edu.aznjt.com/course/10

    最后

    一點心得

    從萌發開發信號交叉口評價分析應用的想法到最后上線測試足足經歷了三年多時間,從大四到研三,把一個簡單的想法一步步實現,整個過程既充滿挑戰也收獲不少。特別希望在校學習的小伙伴若有想法,就盡最大努力去實現,感謝這個偉大的互聯網時代,有海量的學習資料供我們參考,真正阻礙前進的或許不再是專業技能、不是編程、不是某一個軟件工具,而是你勇往直前的決心和愿意背后付出的努力。

    開始寫這篇文章時是想給大家分享一些編程技能,寫的過程中才發現編程本身實在是一件枯燥的事情,另外自己的編程水平也還非常有限,這部分內容就進行了弱化,各位對編程感興趣的可以在github、Stack Overflow、各大在線學習平臺中找到適合自己的學習資料。



  • 關鍵字: 信號交叉口分析軟件
  •    責任編輯:逐夢女孩
  • 關于我們
  • 聯系我們
  • 廣告贊助
  • 快乐10分开奖视频