基于视频AI+GIS的创新实践开发了面向公安行业的二三维一体化服务公安实战应用

       基于视频AI+GIS的创新实践开发了面向公安行业的二三维一体化服务公安实战应用。二三维一体化服务公安实战应用是以“雪亮工程”为背景,把治安防范措施延伸到群众身边,发动社会力量和广大群众共同监看视频监控,共同参与治安防范,从而真正实现治安防控“全覆盖、无死角”。在这套系统中,视频AI与二三维GIS应用充分结合,实现了基于二三维地图的视频AI解析、视频图像智能预警、三维融合实景指挥调度。

  (1)视频AI解析应用

  在GIS地图上,基于视频AI解析应用,实现人员信息、车辆信息、探头信息、建筑信息的自动识别和上图。人员信息主要识别其脸部特征、体貌特征、姿态、状态、着装颜色、纹理、体型、肤色、发型等。车辆信息主要识别车牌号、颜色、车辆类型、品牌、行驶速度、方向、贴膜颜色、改装标志、经过时刻、道路等。探头信息主要对摄像头点位信息进行上图、实现短视距、最长视距、平均视距、二维可视域、三维可视域等。建筑信息主要识别提取其建筑物特征、建筑物内各层、各房间属性信息、建筑物窗户等。

  (2)视频图像智能预警

  基于视频AI解析应用结果,结合二三维GIS地图,实现人员信息、车辆信息、探头信息的图上实时预警、预警信息查询、以及预警信息的统计分析。

  (3)三维融合实景指挥调度

  三维融合实景指挥调度基于三维GIS实现指挥调度、预案管理、信息统计、综合预警等功能,为日常勤务、重大任务提供可视、直观的决策环境,大大提高作战效率与辅助决策水平。


<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title data-i18n="resources.title_queryByWFS"></title>
<style type="text/css">
        .editPane {
            position: absolute;
            right: 50px;
            top: 50px;
            text-align: center;
            background: #FFF;
            display: inline-block;
            z-index: 1000;
        }
    </style>
</head>
<body style=" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%;position: absolute;top: 0;">
<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_queryByWFS"></h5>
</div>
<div class='panel-body' id='params'>
<p></p>
<div align='center' class='button-group'>
<input type='button' id='btn1' class='btn btn-primary' data-i18n="[value]resources.btn_polygon" onclick="drawGeometry()"/>
<input type='button' id='btn2' class='btn btn-primary' data-i18n="[value]resources.text_input_value_clear" onclick="clearFeatures()"/>
</div>
</div>
</div>
<div id="map" style="margin:0 auto;width: 100%;height: 100%"></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 map, layer, vectorLayer, vectorLayer, vector_style, vector_style_select, myFilter, drawings = null, draw = null,
        host = window.isLocal ? window.server : "https://iserver.supermap.io",
        url = host + "/iserver/services/map-world/rest/maps/World",
        url2 = host + "/iserver/services/data-world/wfs100";
    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
                }
            })]
    }, notice());

    layer = new SuperMap.Layer.TiledDynamicRESTLayer("World", url, {
        transparent: true,
        cacheEnabled: true
    }, {maxResolution: "auto"});

    vector_style = new SuperMap.Style({
        fillColor: '#669933',
        fillOpacity: 0.8,
        pointRadius: 8,
        strokeColor: '#aaee77',
        strokeWidth: 3
    });

    vector_style_select = new SuperMap.Style({
        fillColor: '#000',
        fillOpacity: 0.9,
        fontColor: '#232323',
        strokeColor: '#ffffff'
    });

    myFilter = new SuperMap.Filter.Comparison({
        type: SuperMap.Filter.Comparison.EQUAL_TO,
        property: "CAPITAL",
        value: ""
    });

    vectorLayer = new SuperMap.Layer.Vector("World Capitals", {
        strategies: [new SuperMap.Strategy.BBOX()],
        protocol: new SuperMap.Protocol.WFS({
            version: "1.0.0",
            url: url2,
            featureType: "Capitals",
            featureNS: "http://www.supermap.com/World",
            featurePrefix: "World",
            geometryName: "the_geom"

            //类似的ArcGIS请求参数设置(已验证返回数据)
            //version:"1.0.0",
            //url:"http://localhost:6080/arcgis/services/SampleWorldCities/MapServer/WFSServer",
            //featureType:"cities",
            //featureNS:"http://localhost:6080/arcgis/services/SampleWorldCities/MapServer/WFSServer",
            //featurePrefix:"SampleWorldCities",
            //geometryName:"shape"
        }),

        //filter使用方式一:
        //filter: new SuperMap.Filter.Logical({
        //    type: SuperMap.Filter.Logical.AND,
        //    filters: [
        //        new SuperMap.Filter.Comparison({
        //            type: SuperMap.Filter.Comparison.GREATER_THAN_OR_EQUAL_TO,
        //            property: "SMID",
        //            value: "50"
        //        }),
        //        new SuperMap.Filter.Comparison({
        //            type: SuperMap.Filter.Comparison.LESS_THAN_OR_EQUAL_TO,
        //            property: "SMID",
        //            value: "60"
        //        })
        //    ]
        //}),

        //filter使用方式二:
        filter: myFilter,
        styleMap: new SuperMap.StyleMap({
            'default': vector_style,
            'select': vector_style_select
        })
    });

    var select_feature_control = new SuperMap.Control.SelectFeature(vectorLayer);
    map.addControl(select_feature_control);
    select_feature_control.activate();
    layer.events.on({"layerInitialized": addLayer});

    //空间查询
    drawings = new SuperMap.Layer.Vector("drawings");
    map.addLayer(drawings);
    draw = new SuperMap.Control.DrawFeature(drawings, SuperMap.Handler.Polygon);
    map.addControl(draw);

    function drawGeometry() {
        clearFeatures();
        draw.activate();
        draw.events.on({featureadded: drawCompleted});
    }

    function clearFeatures() {
        vectorLayer.removeAllFeatures();
        drawings.removeAllFeatures();
    }

    function addLayer() {
        map.addLayers([layer, vectorLayer]);
        map.setCenter(new SuperMap.LonLat(0, 0), 0);
    }

    function drawCompleted(event) {
        vectorLayer.filter = new SuperMap.Filter.Spatial({
            type: SuperMap.Filter.Spatial.INTERSECTS,
            value: event.feature.geometry
        });
        vectorLayer.refresh({force: true});
        vectorLayer.filter = myFilter;
        draw.deactivate();
        widgets.alert.clearAlert();
    }

    function notice() {
        widgets.alert.showAlert(resources.msg_drawPolygon, true);
    }

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


posted @ 2021-06-30 09:54  GCloud_Blog  阅读(183)  评论(0编辑  收藏  举报