智慧工地支撐平臺工地一張圖線上管控平臺
一、專案背景
工地一張圖線上管控平臺(也稱“智慧工地”)是指綜合運用移動應用、物聯網計算和大資料等技術,圍繞人員、機械、物料、環境等關鍵要素,建立資訊智慧採集、管理高效協同、資料科學分析、過程智慧預測的施工現場多立體化資訊模型,打通從一線操作到過程監管的資料鏈條,形成“端+雲+大資料”的業務體系,降低施工現場管理成本,逐步實現智慧的綠色和生態建造。智慧工地將更多人工智慧、感測技術、虛擬現實等高科技技術植入到建築、機械、人員穿戴設施、場地進出關卡口等各類物體中,實現勞務實名制一卡通子系統、塔吊執行監控子系統、大體積混凝土無線測溫子系統、變形監測子系統(包括高支模監測及深基坑監測)、環境監控子系統、生活區用電監控子系統、箱變狀態線上監測子系統、安防監控子系統、精確定位子系統、VR質量安全模擬培訓子系統,並接入一個監控中心———數字化工地管理平臺進行統一管理,能夠降低運營成本,節省人力投入,減少安全隱患,規範施工管理,有效緩解專案施工現場勞務、裝置、材料、安全、環境等方面的管理難題。
二、平臺總計架構
數字化工地綜合管控平臺體系結構設計,從根本上決定了系統所能提供的業務服務的規模和水平。本平臺採用了在J2EE三層體系結構基礎上,結合構建的面向業務的五層體系結構,分別為:前端展示層、API介面層(閘道器)、業務應用系統、服務中心、基礎設施(資料儲存、執行環境)如下圖所示:
第一層為前端展示層,即應用層。用於顯示資料和接收使用者輸入的資料,為使用者提供一種互動式操作的介面,其中包括B/S架構的Web客戶端、移動客戶端、以及外接的第三方系統。開發C/S架構可以採用多種語言,包括Java、C++、C#、Dephi等;開發B/S架構的語言,包括PHP、Asp.NET、JAVA等;移動客戶端開發主流的是基於Andriod或IOS作業系統。通過對安全管理具體業務的歸納、抽象,生成的各種應用模組,通過這些模組的組織完成業務邏輯,將最後的邏輯運算結果在表現層進行視覺化。
第二層為API介面層,即閘道器。它是系統的統一入口,外部通過統一的API閘道器接入業務服務,同時處理一些非業務功能,如監控,負載均衡,流量控制,身份認證等。
第三層為業務應用系統,即業務層。呈現給使用者專業化、個性化的具體業務流程和工具,是智慧化的最終體現,是業務智慧的最終表現形式。具體採用的是將平臺基於Spring-boot釋出的restful服務或者是JavaEE+Tomcat釋出的Servlet的通用服務構成具體業務的服務鏈,實現定製化。如:工地視訊監控業務,需要構建視訊子服務+視訊瀏覽子服務+預警子服務的服務鏈。
第四層為服務中心,是軟體平臺系統的核心。針對具體的問題對資料進行操作,採用高效能的應用伺服器中介軟體、各種智慧引擎和系統管理工具,為業務層提供基礎服務、管理策略和方法工具。同時按照所提供的服務來管理、組織和排程裝置和資訊資源。在平臺中包含了服務註冊與服務管理以及構建服務鏈功能,對於具體的業務需求,實現主動的服務聚焦。如:門禁服務和人員服務,可針對門禁制定各種身份認證的策略。服務中心還提供資料訪問服務,對原始資料(資料庫或者文字檔案等存放資料的形式)的操作層,為業務層或前端展示層提供資料服務。主要實現對資料的增刪改查,實現從工地現場獲得的多源資料與底層資料庫的互動。
第五層為基礎設施層,包括資料儲存和執行環境。為上面各層提供通用的技術能力,為應用層傳遞訊息,為服務中心層提供持久化機制,為使用者介面層繪製螢幕元件等等。Web應用系統中基礎設施包含了資料持久化服務,中介軟體服務(資料庫,Redis,HBASE等等)以及第三方服務等。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title data-i18n="resources.title_dynamicPlot"></title>
<style type="text/css">
body {
margin: 0;
overflow: hidden;
background: #fff;
width: 100%;
height: 100%;
position: absolute;
top: 0;
}
#map {
position: absolute;
left: 250px;
right: 0px;
height: 100%;
}
#menuPlotting {
position: absolute;
top: 20%;
z-index: 99999999999;
border-radius: 4px;
padding-top: 2px;
left: 265px;
color: #000000;
background-color: #fff;
}
#menu {
float: left;
background: #ffffff;
width: 250px;
height: 100%;
}
</style>
</head>
<body>
<div id="menu">
<div class="easyui-panel" style="position:absolute;top:0px;bottom:0px;left:0px;right:0px;padding:5px; width: 100%;">
<div class="easyui-tabs" style="width: 100%;height: 100%">
<div id="plotPanel" data-i18n="[title]resources.text_drawPanel" style="overflow: hidden"></div>
<div id="stylePanel" data-i18n="[title]resources.text_attributePanel"></div>
</div>
</div>
</div>
<div id="map">
<div id="menuPlotting" class="sticklr" style="left: 1%;color:rgb(0,0,0);background-color: #fff;">
<li>
<a class="glyphicon plotting-glyphicon-draw-deactivate notArrow" data-i18n="[title]resources.text_cancelDraw" onclick="PlottingDrawCancel()"></a>
</li>
<li>
<a class="glyphicon plotting-glyphicon-draw-removeAll notArrow" data-i18n="[title]resources.text_input_value_clear"></a>
<ul>
<li><input type="button" data-i18n="[value]resources.btn_deleteMarker" onclick="deleteSymbol()" style="width:70px;height: 25px ;margin:0 auto;"/> </li>
<li><input type="button" data-i18n="[value]resources.btn_clearLayers" onclick="PlottingClear()" style="width: 70px;height: 25px ;margin:0 auto;"/></li>
</ul>
</li>
<li>
<a class="glyphicon glyphicon-pencil notArrow" data-i18n="[title]resources.text_editor"></a>
<ul>
<li><input type="button" data-i18n="[value]resources.btn_copy" onclick="copySymbol()" style="width:70px;height: 25px ;margin:0 auto;"/> </li>
<li><input type="button" data-i18n="[value]resources.btn_cut" onclick="cutSymbol()" style="width: 70px;height: 25px ;margin:0 auto;"/></li>
<li><input type="button" data-i18n="[value]resources.btn_paste" onclick="pasteSymbol()" style="width: 70px;height: 25px ;margin:0 auto;"/></li>
</ul>
</li>
<li>
<a class="glyphicon glyphicon-plus notArrow"