1. 程式人生 > 實用技巧 >三維GIS校園安防系統地下管線 水利 消防

三維GIS校園安防系統地下管線 水利 消防

建設目標

  專案基於三維地理資訊,整合能源管理運維及服務的裝置、管網及資料資源,建成集水、電、氣、消防設施裝置管理、決策支援分析、事件預警於一體的決策支援系統,打破資訊孤島,實現協同辦公,做到水電供配、消防管道管理數字化、視覺化,為能源管理運營、排程指揮、節能監管、分析決策、服務個性化提供決策支撐。

  建設內容

  1.三維資料採集及建庫

  本專案完成全校5平方公里內1:500的數字化地圖及150公里管線(電力管線、給排水管線、消防供水管線、水電錶計、供水閥門、消防閥門)及其附屬設施測量、採集和建庫,校內60餘處配電房和箱式變電站BIM建模。包括:地下空間設施資料建庫、專題管線資料建庫、地下管線檔案資料建庫等。

  2.三維平臺

  專案完成地理資訊空間資料、管線(網)、能源資料、決策保障、保障預案、預警、報警裝置定位、煙感、溫感、紅外、水質監測、排汙監測、資料查詢及統計分析等綜合展示功能,並預留資料及資訊推送介面。

 主要功能要求如下

  圖層型別

  系統應具備二維圖層、地形圖層、三維圖層、單體化圖層四種基本圖層。

  測算分析功能

  提供多種基礎的三維量算功能,包括但不限於空間、貼地、水平、面積、高程量等。

  物件操作功能

  支援在場景中建立點、向量線、面、文字標註、三維體、三維模型、粒子等幾何物件;支援通過編輯物件,修改該物件範圍內的地形效果、地表開挖區域、傾斜資料壓平範圍等操作,支援連續點選多個向量、模型物件,支援通過平移、旋轉、縮放操作編輯向量、模型物件的位置與形狀,支援實時編輯地表開挖區域和深度。

  場景表達功能

  建立場景、新增二三維資料、設定圖層屬性與圖層風格、繪製物件、製作專題圖等實用操作;支援二三維地形、影像、模型、向量、地圖等場景要素;支援特殊環境特效、真實地模擬地球所處的環境與光影效果;

場景、特效及瀏覽功能

  系統支援在場景中實時瀏覽、 查詢、編輯二三維資料的使用場景;能夠完成場景:放大、縮小、傾斜、拉平豎起、旋轉、縮放、快速定位,以及旋轉相機任意角度、指向正北、調整俯仰角等漫遊操作;實現從不同方位、不同角度自動瀏覽場景,支援過程中減速轉彎平滑過渡的效果。

原始碼,部分程式碼開源如下:


<html>
<head>
<meta charset='utf-8'/>
<title data-i18n="resources.title_echartsLinesMillions_waterSystem"></title>
<meta name='viewport' content='initial-scale=1,maximum-scale=1,user-scalable=no'/>
<script type="text/javascript" include="jquery" src="../js/include-web.js"></script>
<script type="text/javascript" include="echarts" src="../../dist/leaflet/include-leaflet.js"></script>
<style>
        body {
            margin: 0;
            padding: 0;
        }

        #map {
            position: absolute;
            top: 0;
            bottom: 0;
            width: 100%;
        }
    </style>
</head>
<body>
<div id='map'></div>
<script type="text/javascript">
    var host = window.isLocal ? window.server : "https://iserver.supermap.io";
    var tileURL = host + "/iserver/services/map-china400/rest/maps/ChinaDark";

    map = L.map('map', {
        center: [37.94, 106],
        maxZoom: 18,
        zoom: 5
    });
    L.supermap.tiledMapLayer(tileURL).addTo(map);

    option = {
        progressive: 20000,
        title: {
            top: '10px',
            text: resources.text_echartsLinesMillions_waterSystem,
            subtext: resources.text_echartsLinesMillions_waterSystem_subtext,
            left: 'center',
            textStyle: {
                color: '#fff'
            },
            subtextStyle: {
                color: '#fff'
            }
        },
        series: [{
            type: 'lines',
            blendMode: 'lighter',
            coordinateSystem: 'leaflet',
            dimensions: ['value'],
            data: new Float64Array(),
            polyline: true,
            large: true,
            lineStyle: {
                color: '#0099FF',
                width: 1,
                opacity: 0.3
            }
        }]
    };

    var echartsLayer = L.supermap.echartsLayer(option).addTo(map);

    var CHUNK_COUNT = 19;

    function fetchData(idx) {
        if (idx > CHUNK_COUNT) {
            return;
        }
        var dataURL = "https://iclient.supermap.io/web/data/bigdata_water_10w/data_" + idx + ".bin";
        var xhr = new XMLHttpRequest();
        xhr.open('GET', dataURL, true);
        xhr.responseType = 'arraybuffer';

        xhr.onload = function (e) {
            var rawData = new Float32Array(this.response);
            echartsLayer._ec.appendData({
                seriesIndex: 0,
                data: rawData
            });

            fetchData(idx + 1);
        };

        xhr.send();
    }

    fetchData(0);

</script>
</body>
</html>