智慧水務軟體二次開發入門介紹篇—使用ruby對ICM進行一些簡單的操作

Hello大家好,我叫陳澤偉,是一名水力模型工程師/智慧水務開拓者。今天我和大家分享一些簡單的關於如何在ICM中使用Ruby語言的介紹。

為什麼要寫這篇文章呢,因為最近智慧水務ICT這個話題實在是太火了,這個行業現在的需求如井噴一般噴薄而出。但是這個行業的從業人員素質普遍跟不上時代需求:我們暫且不談智慧水務的頂層框架設計需要怎樣的人才,僅僅就落實到每一個具體項目(需要對系統進行定製化的二次開發)上來看:不管是供水還是排水系統:懂水的人一般是給排水出身,總負責的主任工程師/總工/院長雖然經驗豐富,但是對現在模型,演算法,計算引擎的了解普遍不多,年輕一輩可能還能懂一些模型,但是一和他們聊到編程進行二次開發就一頭霧水抓瞎了。對於學計算機專業的編程人員來說,跟他們講什麼叫產匯流模型,曼寧係數比讓母豬上樹還難。當然很重要的一點是,在現在這個互聯網人才嚴重匱乏的大背景下,做智慧水務的公司很難招到一個正經985/211本科畢業的且有兩年工作經驗的程序員。有能力能幹活的程序員都去BAT拿著高薪,走向人生巔峰了,程序員要轉行也去搞金融去了,誰還和你一起挖下水道玩啊?

那我們換一個思路,既然很難招到靠譜的程序員,那我們學水的可不可以自己學習編程進行智慧水務方面的二次開發呢?根據我的在各個大學培訓的經歷,能考上清華/同濟/華科/河海的市政工程的學生素質肯定是百里挑一的,不比那些學Computer science的差,只要他們有這方便的想法,可以持續學習,是絕對可以進行簡單的二次開發。再不濟,有了一定的編程經驗,你以後給程序員派活,也能用他能聽得懂的話告訴他你想要實現什麼目的。

如果大家有這方面的想法,請大家儘早進行相關編程語言的學習,網上的教程一大堆。當然,我也會不定期的更新一些比較實用且簡單的教程,與大家共同成長。那好,接下來我就和大家分享一下Ruby這門語言。

首先和大家簡單介紹一下Ruby,Ruby 是一種開源的面向對象程序設計的伺服器端腳本語言,在20 世紀90 年代中期由日本的松本行弘(まつもとゆきひろ/YukihiroMatsumoto)設計並開發。在Ruby 社區,松本也被稱為馬茨(Matz)。Ruby 可在Windows,MAC,OS 和UNIX 的各種版本。為什麼要給大家介紹Ruby呢,因為Ruby是ICM指定的二次開發語言,可以通過ICMExchange實現對ICM的二次開發。

Ruby在ICM中的應用大體可以分成兩類,一類Ruby是可以直接在ICM中運行,運行方式就是點擊網路》運行ruby腳本即可。還有一種方法是在不開啟ICM的情況下,通過ICM Exchange可以直接在外部調用ICM的大多數功能,比如修改模型網路,運行模型,輸出結果等。

下面給大家講兩個簡單的Ruby小例子,給大家露一小手。

例子一:Hello World

不知道是誰規定的,任何語言學習,第一個程序一定是輸出hello world,好接下來就和大家示範一下如何在ICM裡面輸出Hello world。

首先,如果你沒有寫代碼的軟體,推薦下一個sublime text3。下載下來安裝好之後,打開軟體,

puts 「hello world」。之後把文件保存成hello.rb(.rb是ruby文件的後綴)

好了之後,打開ICM,點擊網路》運行ruby,然後選擇寫好的這個程序。如果不出意外的話,恭喜你,ruby的第一個結果hello world就會出現在屏幕上面。

例子二:查找有LID設施的子集水區的ID號

這第二個例子,比較實用。就是查找有LID設施的子集水區的ID號。因為在ICM裡面LID設施的存在是在SUDs Control這個二級表單裡面的,因此,不能很方便的從子集水區這個一級表單裡面對LID設施進行統計。

但是,在進行規劃級別的海綿城市建模時,並不是所有 的子集水區都會有LID設施的。一般我在做規劃項目的時候,都會事先做一個選擇表來確定哪些子集水區會有LID設施。當然,如果一開始沒有進行選擇表操作,後期想要進行此類統計的話就可使用下面的Ruby。

簡單介紹一下上面這個ruby,它是對所有的子集水區進行循環,查找子集水區的suds_control表單的長度(長度表示這個欄位是否有值),如果子集水區的suds_control有值,就認為這個子集水區有LID設施,然後會輸出這個子集水區的id號。

有時候為了更方便的進行統計,我希望直接把是否有LID這個屬性直接寫到模型裡面,於是,就有了下面的代碼:功能是把LID設施的子集水區的用戶備註8寫入「LID」

今天就給大家分享這兩個簡單實用的ruby例子,大家如果感興趣的話,可以自行在網上搜索關於ruby,python,java的教程,進行相關學習,這裡我也給大家推薦一個適合新手的網站。

runoob.com/ruby/ruby-tu

大家如果對於智慧水務感興趣,歡迎加入我們由個人組織發起的智慧水務交流群進行相關信息分享,群號為693875163。本群實名認證,加群的時候請註明具體單位名與姓名。當然也可以加我的QQ879008342進行相關專業技術諮詢。我們團隊會為你提供專業的技術諮詢服務。

關於我們智慧水務群的相關信息詳見下面鏈接。

我叫陳大可:關於搭建智慧水務信息分享平台的倡議書?

zhuanlan.zhihu.com圖標

最後,感謝陳奕陳小一為本文提供的技術支持。

全球智庫,為你服務。親愛的朋友,我們下期再見。


推薦閱讀:

如何向沒有計算機基礎的人解釋API介面是什麼?
家裡沒人怎麼防火防盜?裝上這段自動看家程序
2進位的一個主要優點是什麼?

TAG:編程 | Ruby | 二次開發 |