1. 程式人生 > 實用技巧 >智慧園林綠化養護管理資訊平臺結合GIS技術的研發

智慧園林綠化養護管理資訊平臺結合GIS技術的研發

近幾年來,隨著經濟不斷的發展,城市面積不斷的擴大,城市管理中的園林綠化工作也在這種趨勢下不斷的發生著深刻改變。管養企業是否按制定的管養計劃嚴格執行?綠化事件整改是否及時到位?綠地面積是否在穩步增長?管養的效果如何?如何客觀評價管養企業的管養工作?這些都是我們各級管理者需要面對的問題。

  智慧園林綠化養護管理資訊平臺的開發思路以“考核”為核心,整個資訊平臺體現出“新、快、高、全、享”五個特點。

  智慧園林綠化養護管理資訊平臺的整個開發理念為:依託五大技術手段(全球衛星定位系統技術、地理資訊系統技術、網際網路、資料庫技術、物聯網技術),打造一個“智慧化、視覺化、流程化”的智慧園林綠化養護管理資訊平臺。本平臺基於超圖SuperMap GIS 9D平臺開發而成。

  智慧園林綠化養護管理資訊平臺是集硬體、網路、通訊、物聯網、網際網路、GPS、GIS、大資料、雲端計算等多種資訊科技應用為一體的綜合性資訊平臺。

  平臺功能包括:

  一、 綠地資訊系統

  採用無人機測繪,獲得了綠地高清二維影像;採用傾斜攝影技術,快速生成三維模型,獲得高清三維影像;將綠地網格的資訊標註到高清二維影像中,所有綠地資訊直觀展現在平臺中,實現了綠色資產視覺化。

  

  二、 巡查事件管理系統

  開發了手機APP,在手機上完成日常監督管理工作,提供養護事件上報、處理、稽核全流程可視,處理時限可控,通過文字與圖片的結合,形成一個完整的管理閉環。  

  三、 考評考核系統

  按照“雙隨機”的考核要求,系統提供考核地點和考核專家在平臺中可隨機抽取;提供周檢查資訊表,月度考核資訊表、季度考評資訊表和歷次考核資訊統計;按照考評考核的權重,直接在系統中生成養護公司的打分結果,以此作為對各養護公司管養能力客觀評價的重要依據,杜絕了人為因素的干擾。

  四、 物聯網系統

  在綠化帶中部署溫溼度感測器、電導率、土壤鹽度感測器,平臺可實時顯示土壤的溫溼度以及肥力等資訊;預先設定好上下限閾值,當感測器數值低於或高於設定的閾值時,平臺自動發出告警資訊,提示相關人員及時進行處理;平臺還提供了聯結視訊監控探頭的介面,提供綠化設施和綠地情況的實時監控影象,豐富了平臺的監管內容。

  未來擴充套件應用還可遠端控制噴灌系統開閉、病蟲害監控等。

  五、綠色圖章系統

  平臺提供綠色圖章申請資料上傳,綠色圖章審批,綠色圖章驗收,移植樹木審批,綠地佔用審批,樹木修剪、砍伐審批等業務流程,徹底改變了以往人工報送的低效率工作方式,真正體現了讓資料多跑路,讓群眾少跑腿的服務理念。

  六、其他擴充套件功能

  作為智慧園林綠化養護管理資訊平臺的有益補充,還開發了微信公眾號用於釋出園林綠化工作動態、普及園林知識、收集公眾反饋意見和建議,與市民形成良性互動、共建共管機制。

  由於本平臺目前在國內城管領域處於行業領先水平,當地政府主流媒體均作了報道。


<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title data-i18n="resources.text_overlayAnalyst"></title>
<style>
        .control {
            position: absolute;
            top: 50px;
            right: 10px;
        }

        #map {
            position: absolute;
        }
    </style>
</head>
<body style=" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%;position: absolute;top: 0;">
<div id="map" style="width: 100%;height:100%"></div>
<div id="control" class="control" style='width:350px'>
<div class="panel panel-default">
<div class='panel-heading'>
<h3 class='panel-title' data-i18n="resources.text_overlayAnalyst"></h3>
</div>
<div class='panel-body'>
<div class='input-group'>
<span class='input-group-addon'><span data-i18n="resources.text_sourceDataset"></span><span data-i18n="[title]resources.text_requiredField" style="color: red;"> * </span> </span>
<input id='datasetName' type='text' class='form-control' value='samples_processing_newyorkZone_R' /></div>
<p></p>
<div class='input-group'>
<span class='input-group-addon'><span data-i18n="resources.text_overlayDataset"></span>
<span data-i18n="[title]resources.text_requiredField" style="color: red;"> * </span></span>
<input id='datasetOverlay' type='text' class='form-control' value='samples_processing_newyorkResidential_R' />
</div>
<p></p>
<div class='input-group'>
<span class='input-group-addon'><span data-i18n="resources.text_analystMode"></span><span data-i18n="[title]resources.text_requiredField" style="color: red;"> * </span></span>
<select class='form-control' id='mode' name='mode'>
<option value='clip' selected data-i18n="resources.text_clip"></option>
<option value='intersect' data-i18n="resources.text_intersect"></option>
<option value='erase' data-i18n="resources.text_erase"></option>
<option value='union' data-i18n="resources.text_union"></option>
<option value='update' data-i18n="resources.text_update"></option>
<option value='identity' data-i18n="resources.text_identity"></option>
<option value='xor' data-i18n="resources.text_xor"></option>
</select>
</div>
<p></p>
<div class='input-group'>
<span class='input-group-addon' data-i18n="resources.text_retainedFieldSource"></span>
<input id='srcFields' type='text' class='form-control' value='LocationID' />
</div>
<p></p>
<div class='input-group' id='overlayField' style='display: none'>
<span class='input-group-addon' data-i18n="resources.text_retainedFieldOverlay"></span>
<input id='overlayFields' type='text' class='form-control' value='type' />
</div>
<p></p>
<div align='right'>
<input type='button' id='btn' class='btn btn-primary' data-i18n="[value]resources.text_analyst" />
</div>
</div>
</div>
</div>
<script type="text/javascript" src="../../dist/classic/include-classic.js"></script>
<script type="text/javascript" include="jquery,bootstrap,widgets" src="../js/include-web.js"></script>
<script type="text/javascript">
        var host = window.isLocal ? window.server : "https://iserver.supermap.io";
        var resultLayer,
            processingsUrl = host + "/iserver/services/distributedanalyst/rest/v1/jobs",
            mapURL = host + "/iserver/services/map-world/rest/maps/World",
            map = new SuperMap.Map("map", {
                controls: [
                    new SuperMap.Control.Navigation(),
                    new SuperMap.Control.Zoom(),
                    new SuperMap.Control.LayerSwitcher()

                ],
                allOverlays: true
            });
        var layer = new SuperMap.Layer.TiledDynamicRESTLayer("World", mapURL, null, {
            maxResolution: "auto"
        });
        layer.events.on({
            "layerInitialized": addLayer
        });

        function addLayer() {
            map.addLayers([layer]);
            map.setCenter(new SuperMap.LonLat(-73.95, 40.75), 12);
        }

        var processingService = new SuperMap.REST.ProcessingService(processingsUrl, {
            withCredentials: window.isLocal
        });
        SuperMap.SecurityManager.registerToken(processingsUrl, window.exampleToken);
        $("#mode").change(function () {
            var mode = $(this).val();
            if (mode == "update" || mode == "clip" || mode == "erase") {
                $("#overlayField").hide();
            } else {
                $("#overlayField").show();
            }
        });

        bindClick();

        function bindClick() {
            $('#btn').on('click', function () {
                if ($('#msg_container')[0]) {
                    $('#msg_container').remove();
                }
                widgets.loader.showLoader();
                if (map && resultLayer) {
                    map.removeLayer(resultLayer);
                }
                overlayGeoJobs();
            });
        }

        function overlayGeoJobs() {
            var overlayGeoJobParameter = new SuperMap.OverlayGeoJobParameter({
                datasetName: $('#datasetName').val(),
                datasetOverlay: $('#datasetOverlay').val(),
                mode: $('#mode option:selected').attr('value'),
                srcFields: $('#srcFields').val(),
                overlayFields: $('#overlayFields').val()
            });
            processingService.addOverlayGeoJob(overlayGeoJobParameter, function (serviceResult) {
                if (serviceResult.error) {
                    widgets.loader.removeLoader();
                    var errorMsg = serviceResult.error.errorMsg || "code: " + serviceResult.error.code;
                    widgets.alert.showAlert(resources.msg_createFailed + "<br>" + errorMsg, false);
                    return;
                }
                serviceResult.result.setting.serviceInfo.targetServiceInfos.map(function (info) {
                    if (info.serviceType === 'RESTMAP') {
                        SuperMap.FetchRequest.get(info.serviceAddress + '/maps').then(function (
                            response) {
                            return response.json();
                        }).then(function (result) {
                            var mapUrl = result[0].path;
                            resultLayer = new SuperMap.Layer.TiledDynamicRESTLayer(
                                "resultLayer", mapUrl, {
                                    transparent: true
                                });
                            resultLayer.events.on({
                                "layerInitialized": addLayer
                            });

                            function addLayer() {
                                map.addLayer(resultLayer);
                                widgets.loader.removeLoader();
                            }
                        });
                    }
                });
            });
        }
    </script>
</body>
</html>