• 基于物联网技术智慧园林绿化养护管理信息平台


            近几年来,随着经济不断的发展,城市面积不断的扩大,城市管理中的园林绿化工作也在这种趋势下不断的发生着深刻改变。管养企业是否按制定的管养计划严格执行?绿化事件整改是否及时到位?绿地面积是否在稳步增长?管养的效果如何?如何客观评价管养企业的管养工作?这些都是我们各级管理者需要面对的问题。

      智慧园林绿化养护管理信息平台的开发思路以“考核”为核心,整个信息平台体现出“新、快、高、全、享”五个特点。

      智慧园林绿化养护管理信息平台的整个开发理念为:依托五大技术手段(全球卫星定位系统技术、地理信息系统技术、互联网、数据库技术、物联网技术),打造一个“智能化、可视化、流程化”的智慧园林绿化养护管理信息平台。本平台基于超图SuperMap GIS 9D平台开发而成。

      智慧园林绿化养护管理信息平台是集硬件、网络、通信、物联网、互联网、GPS、GIS、大数据、云计算等多种信息技术应用为一体的综合性信息平台。

      平台功能包括:

      一、 绿地信息系统

      采用无人机测绘,获得了绿地高清二维影像;采用倾斜摄影技术,快速生成三维模型,获得高清三维影像;将绿地网格的信息标注到高清二维影像中,所有绿地信息直观展现在平台中,实现了绿色资产可视化。

      

      二、 巡查事件管理系统

      开发了手机APP,在手机上完成日常监督管理工作,提供养护事件上报、处理、审核全流程可视,处理时限可控,通过文字与图片的结合,形成一个完整的管理闭环。

      

      三、 考评考核系统

      按照“双随机”的考核要求,系统提供考核地点和考核专家在平台中可随机抽取;提供周检查信息表,月度考核信息表、季度考评信息表和历次考核信息统计;按照考评考核的权重,直接在系统中生成养护公司的打分结果,以此作为对各养护公司管养能力客观评价的重要依据,杜绝了人为因素的干扰。

      四、 物联网系统

      在绿化带中部署温湿度传感器、电导率、土壤盐度传感器,平台可实时显示土壤的温湿度以及肥力等信息;预先设置好上下限阈值,当传感器数值低于或高于设定的阈值时,平台自动发出告警信息,提示相关人员及时进行处理;平台还提供了联结视频监控探头的接口,提供绿化设施和绿地情况的实时监控图像,丰富了平台的监管内容。

      未来扩展应用还可远程控制喷灌系统开闭、病虫害监控等。

      五、绿色图章系统

      平台提供绿色图章申请资料上传,绿色图章审批,绿色图章验收,移植树木审批,绿地占用审批,树木修剪、砍伐审批等业务流程,彻底改变了以往人工报送的低效率工作方式,真正体现了让数据多跑路,让群众少跑腿的服务理念。

      六、其他扩展功能

      作为智慧园林绿化养护管理信息平台的有益补充,还开发了微信公众号用于发布园林绿化工作动态、普及园林知识、收集公众反馈意见和建议,与市民形成良性互动、共建共管机制。

      由于本平台目前在国内城管领域处于行业领先水平,当地政府主流媒体均作了报道。

      

    
    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title data-i18n="resources.title_popDensityRange"></title>
    <style type="text/css">
            body {
                margin: 0;
                overflow: hidden;
                background: #fff;
                 100%;
                height: 100%
            }
    
            #map {
                position: absolute;
                 100%;
                height: 100%;
            }
            /*图例 style*/
            .legend {
                position: absolute;
                right: 10px;
                top: 350px;
                 250px;
                text-align: center;
                border: 2px solid #D6E3F1;
                background: #FFF;
                z-index: 999999;
                display: none;
            }
    
            .legendTitle {
                background: #1E90FF;
            }
    
            .legendContent {
                padding-left: 15px;
                padding-right: 15px;
                height: 160px;
                display: block;
                overflow-y: auto;
            }
    
            .legendItemHeader {
                top: 5px;
                 100px;
                height: 18px;
                text-align: center;
            }
    
            .legendItemValue {
                top: 5px;
                 120px;
                text-align: center;
                height: 18px;
            }
    
            /*信息框 style*/
            #infoBox {
                border: 2px solid #D6E3F1;
                position: absolute;
                right: 10px;
                top: 250px;
                 250px;
                z-index: 999999;
                display: none;
            }
    
            .editPane {
                position: absolute;
                right: 60px;
                top: 50px;
                text-align: center;
                background: #FFF;
                z-index: 1000;
            }
        </style>
    </head>
    <body>
    <div class='panel panel-primary editPane' id='editPane' style="z-index: 99999">
    <div class='panel-heading'>
    <h5 class='panel-title text-center' data-i18n="resources.text_graduatedSymbol"></h5>
    </div>
    <div class='panel-body' id='params'>
    <p></p>
    <div align='right' class='button-group'>
    <input type='button' id='btn1' class='btn btn-primary' data-i18n="[value]resources.btn_addThemeLayer" onclick="addThemeLayer()"/>
    <input type='button' id='btn2' class='btn btn-primary' data-i18n="[value]resources.btn_updateData" onclick="updateData()"/>
    <input type='button' id='btn3' class='btn btn-primary' data-i18n="[value]resources.text_input_value_clear" onclick="clearLayer()"/>
    </div>
    </div>
    </div>
    <div>
    <div id="map"></div>
    <div id="mapLegend" class="legend">
    <div class="legendTitle">
    <span data-i18n="resources.text_legend"></span>
    </div>
    <div class="legendContent">
    <table>
    <tr>
    <td class="legendItemHeader" data-i18n="resources.text_populationDensity"></td>
    <td class="legendItemValue" data-i18n="resources.text_color"></td>
    </tr>
    <tr>
    <td class="legendItemHeader">0 - 0.02</td>
    <td class="legendItemValue" style="background: #FDE2CA"></td>
    </tr>
    <tr>
    <td class="legendItemHeader">0.02 - 0.04</td>
    <td class="legendItemValue" style="background: #FACE9C"></td>
    </tr>
    <tr>
    <td class="legendItemHeader">0.04 - 0.06</td>
    <td class="legendItemValue" style="background: #F09C42"></td>
    </tr>
    <tr>
    <td class="legendItemHeader">0.06 - 0.1</td>
    <td class="legendItemValue" style="background: #D0770B"></td>
    </tr>
    <tr>
    <td class="legendItemHeader">0.1 - 0.2</td>
    <td class="legendItemValue" style="background: #945305"></td>
    </tr>
    </table>
    </div>
    </div>
    <div id="infoBox">
    <div data-i18n="resources.text_attributeTable" style="text-align: center;background: #1E90FF"> </div>
    <div id="infoContent" style="overflow-y: auto; padding: 5px; background-color: #FFFFFF">
    </div>
    </div>
    </div>
    <script type="text/javascript" include="bootstrap,widgets.alert" src="../js/include-web.js"></script>
    <script type="text/javascript" exclude="iclient-classic" src="../../dist/classic/include-classic.js"></script>
    <script type="text/javascript">
        var host = window.isLocal ? window.server : "https://iserver.supermap.io",
            url1 = host + "/iserver/services/map-jingjin/rest/maps/京津地区地图",
            url2 = host + "/iserver/services/data-jingjin/rest/data";
        var map, layer, themeLayer;
        // 检测是否支持 Canvas
        if (!document.createElement('canvas').getContext) {
            widgets.alert.showAlert(resources.msg_supportCanvas, false);
        }
    
        map = new SuperMap.Map("map", {
            controls: [
                new SuperMap.Control.LayerSwitcher(),
                new SuperMap.Control.ScaleLine(),
                new SuperMap.Control.Zoom(),
                new SuperMap.Control.Navigation({
                    dragPanOptions: {
                        enableKinetic: true
                    }
                })]
        });
        layer = new SuperMap.Layer.TiledDynamicRESTLayer("Jingjin", url1, {
            transparent: true,
            cacheEnabled: true
        }, {maxResolution: "auto"});
        layer.events.on({"layerInitialized": addLayer});
    
        // 定义 Range 分段专题图层
        themeLayer = new SuperMap.Layer.Range("ThemeLayer");
        themeLayer.setOpacity(0.8);
    
        // 图层基础样式
        themeLayer.style = {
            shadowBlur: 16,
            shadowColor: "#000000",
            fillColor: "#FFFFFF"
        };
    
        // 开启 hover 高亮效果
        themeLayer.isHoverAble = true;
        // hover高亮样式
        themeLayer.highlightStyle = {
            stroke: true,
            strokeWidth: 4,
            strokeColor: 'blue',
            fillColor: "#00EEEE",
            //shadowBlur: 6,
            //shadowColor: "#000000",
            //shadowOffsetX: 6,
            //shadowOffsetY: 6,
            fillOpacity: 0.8
        };
    
        // 用于范围分段的属性字段名称
        themeLayer.themeField = "POP_DENSITY99";
        // 风格数组,设定分段范围对应的样式
        themeLayer.styleGroups = [
            {
                start: 0,
                end: 0.02,
                style: {
                    color: '#FDE2CA'
                }
            },
            {
                start: 0.02,
                end: 0.04,
                style: {
                    color: '#FACE9C'
                }
            },
            {
                start: 0.04,
                end: 0.06,
                style: {
                    color: '#F09C42'
                }
            },
            {
                start: 0.06,
                end: 0.1,
                style: {
                    color: '#D0770B'
                }
            },
            {
                start: 0.1,
                end: 0.2,
                style: {
                    color: '#945305'
                }
            }
        ]
    
        // 注册 mousemove 事件
        themeLayer.on("mousemove", evn);
    
        function addLayer() {
            map.addLayers([layer, themeLayer]);
            map.setCenter(new SuperMap.LonLat(117.2, 40.11), 0);
        }
    
        //获取 feature 数据, 专题图的数据必须是 SuperMap.Feature.Vector
        function addThemeLayer() {
            clearLayer();
    
            var getFeatureParam, getFeatureBySQLService, getFeatureBySQLParams;
    
            getFeatureParam = new SuperMap.REST.FilterParameter({
                name: "Jingjin",
                attributeFilter: "SMID > -1"
            });
            getFeatureBySQLParams = new SuperMap.REST.GetFeaturesBySQLParameters({
                queryParameter: getFeatureParam,
                toIndex: 500,
                datasetNames: ["Jingjin:BaseMap_R"]
            });
            getFeatureBySQLService = new SuperMap.REST.GetFeaturesBySQLService(url2, {
                eventListeners: {"processCompleted": processCompleted, "processFailed": processFailed}
            });
    
            getFeatureBySQLService.processAsync(getFeatureBySQLParams);
        }
    
        function processCompleted(getFeaturesEventArgs) {
            var result = getFeaturesEventArgs.result;
            if (result && result.features) {
                themeLayer.addFeatures(result.features);
            }
    
            //显示图例
            document.getElementById("mapLegend").style.display = "block";
        }
    
        function processFailed(e) {
            widgets.alert.showAlert(e.error.errorMsg, false);
        }
    
        function clearLayer() {
            document.getElementById("mapLegend").style.display = "none";
            document.getElementById("infoBox").style.display = "none";
            //先清除上次的显示结果
            themeLayer.clear();
        }
    
        // 更新显示数据
        function updateData() {
            var feas = themeLayer.features;
            for (var i = 0, len = feas.length; i < len; i++) {
                var fea = feas[i];
                fea.attributes.POP_DENSITY99 = getRandomNumber(0, 0.2, 5);
            }
            themeLayer.redraw();
        }
    
        // 获取范围内的随机数
        // min - 范围下限
        // max - 范围上限
        // decimalNum - 返回结果的小数位数。如果为 0,返回整数。
        function getRandomNumber(min, max, decimalNum) {
            var rNum = min + Math.random() * (max - min);
    
            if (decimalNum) {
                if (!isNaN(decimalNum)) {
                    return rNum;
                }
                else {
                    decimalNum = parseInt(decimalNum);
                }
    
                if (decimalNum === 0) {
                    return Math.round(rNum);
                }
                else {
                    return parseFloat(rNum).toFixed(decimalNum);
                }
            }
            else {
                return rNum;
            }
        }
    
        //事件处理,控制信息框数据显示
        function evn(e) {
            if (e.target && e.target.refDataID) {
                document.getElementById("infoBox").style.display = "block";
                var fid = e.target.refDataID;
                var fea = themeLayer.getFeatureById(fid);
                if (fea) {
                    document.getElementById("infoContent").innerHTML = "";
                    document.getElementById("infoContent").innerHTML += "ID: " + fea.attributes.SMID + "<br/>";
                    document.getElementById("infoContent").innerHTML += resources.text_districtName + fea.attributes.NAME + "<br/>";
                    document.getElementById("infoContent").innerHTML += resources.text_populationDensity + ": " + parseFloat(fea.attributes.POP_DENSITY99).toFixed(5) + "<br/>";
                }
            }
            else {
                document.getElementById("infoContent").innerHTML = "";
                document.getElementById("infoBox").style.display = "none";
            }
        }
    </script>
    </body>
    </html>


    技术交流 省涯 QQ:2252224326 2252224326@qq.com 版权所有 http://blog.sina.com.cn/u/6029512413
  • 相关阅读:
    HDU 6125
    HDU 6129
    Super Jumping! Jumping! Jumping!
    HDU 1040 As Easy As A+B(排序)
    VS2015转VS2008
    HDU 1329 Hanoi Tower Troubles Again!(乱搞)
    HDU 1062 Text Reverse(字符串)
    HDU 1013 Digital Roots(字符串)
    HDU 1003 Max Sum(动态规划)
    HDU 1203 I NEED A OFFER!(01背包)
  • 原文地址:https://www.cnblogs.com/shengya/p/14970835.html
Copyright © 2020-2023  润新知