基于视频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>