1. 程式人生 > 其它 >大資料中心技術的工程數智化指揮中心

大資料中心技術的工程數智化指揮中心

指揮中心分為專案空間設計、智慧化硬體建設和軟體系統建設三部分內容,打造了集聲、光、空調、語音、螢幕、人臉識別等多種物聯網技術以及APP,語音等多場景多方式的控制方式的智慧場景,採用全球先進的桌面互動系統,穩定且炫酷的OLED全透明操作屏,提供視覺呈現方案。同時也採用“雲桌面方式”為指揮中心提供更為便捷輕量級的系統操控體驗,以指揮操控技術和資訊科技為主導,工程全過程經營管理資料為核心,將企業經營與專案緊密結合,實現工程現場資料全面匯聚、管控預警指標全面見識、管控運營資料全面鑽取、公司數字孿生全面構建。既可為企事業單位打造智慧建築場景應用,又能為專案業主,施工單位提供集預警、應急處理、視訊、會議於一體的工程管理應用指揮產品。

  工程數智化指揮中心被評選為新型智慧城市建設示範專案。

​ 

 


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title data-i18n="resources.title_dataFlowService"></title>
<script type="text/javascript" include="widgets" src="../js/include-web.js"></script>
</head>
<body style=" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%;position: absolute;top: 0;">
<div id="map" style="margin:0 auto;width: 100%;height: 100%"></div>
<script type="text/javascript" include='mapv' src="../../dist/leaflet/include-leaflet.js"></script>
<script type="text/javascript">
        var host = window.isLocal ? window.server : "https://iserver.supermap.io";
        var wsHost = "wss:\//" + (window.isLocal ? document.location.hostname + ":8800" : "iclsvrws.supermap.io");
        var map,
            urlMap = host + "/iserver/services/map-china400/rest/maps/ChinaDark",
            urlQuery = host + "/iserver/services/map-china400/rest/maps/China_4326",
            urlDataFlow = wsHost + "/iserver/services/dataflowTest2/dataflow";
        map = L.map('map', {
            preferCanvas: true,
            crs: L.CRS.EPSG3857,
            center: [37, 108.42],
            maxZoom: 18,
            zoom: 5
        });
        L.supermap.tiledMapLayer(urlMap).addTo(map);
        SuperMap.SecurityManager.registerToken(urlDataFlow, window.exampleToken);

        var popup = L.popup({
            offset: L.point(0, 0),
            autoPan: true
        });
        //建立DataFlowLayer,建立DataFlowLayer訂閱iServer dataflow服務並將結果載入到地圖上
        var dataFlowLayer = L.supermap.dataFlowLayer(urlDataFlow, {
            render: 'mapv',
            pointToLayer: function (geoJsonPoint, latlng) {
                return L.marker(latlng, {
                    icon: L.icon({
                        iconUrl: '../img/taxi.png',
                        iconAnchor: [16, 16]
                    })
                });
            },
            onEachFeature: function (feature, layer) {
                popup.setLatLng(L.GeoJSON.coordsToLatLng(feature.geometry.coordinates))
                    .setContent(feature.properties.time);
                if (!popup.isOpen()) {
                    popup.addTo(map);
                }
            },
        });
        dataFlowLayer.addTo(map);

        //模擬實時資料 start
        //查詢expectCount個線資料,每兩秒將expectCount個點通過dataFlowService廣播給iSevrer的dataflow服務,模擬expectCount個小汽車的移動軌跡
        //該測試資料有21331個數據
        var expectCount = 10000;
        query();
        var timer, featureResult, dataFlowBroadcast;

        function query() {
            widgets.loader.showLoader();
            var ids = [];
            while (ids.length < expectCount) {
                var n = Math.round(Math.random() * 21331);
                if (ids.indexOf(n) === -1) {
                    ids.push(n);
                }
            }
            var str = "(" + ids.join() + ")";
            var param = new SuperMap.QueryBySQLParameters({
                expectCount: expectCount,
                queryParams: {
                    name: "County_Road_ln@China",
                    attributeFilter: "SMID in " + str,
                }
            });
            L.supermap
                .queryService(urlQuery)
                .queryBySQL(param, function (serviceResult) {

                    featureResult = serviceResult;
                    dataFlowBroadcast = L.supermap.dataFlowService(urlDataFlow).initBroadcast();
                    dataFlowBroadcast.on('broadcastSocketConnected', function (e) {
                        widgets.loader.removeLoader();
                        broadcast();
                        timer = window.setInterval("broadcast()", 2000);
                    })
                });
        }

        var count = 0;

        function broadcast() {
            var features = [];

            for (var index = 0; index < featureResult.result.recordsets[0].features.features.length; index++) {
                var geometry = featureResult.result.recordsets[0].features.features[index].geometry;
                var point = geometry.coordinates[(count % geometry.coordinates.length)];
                //處理多線
                if (L.Util.isArray(point[0])) {
                    point = point[0];
                }
                var data = {
                    geometry: {
                        coordinates: [point[0], point[1]],
                        type: "Point"
                    },
                    type: "Feature",
                    properties: {
                        id: index + 1,
                        time: new Date()
                    }
                };
                features.push(data);
            }
            dataFlowBroadcast.broadcast(features);
            count += 2;
        }
        //模擬實時資料 end
    </script>
</body>
</html>