2.4.3 视频投影
视频投影
视频投影是指在场景内绘制播放区域进行视频画面展示的功能。视频投影功能支持多路摄像头同时投影到三维场景中。 视频投影支持绝大多数本地视频播放,也支持直接从摄像头接入历史视频码流和实时视频码流。
视频投影主要包括添加(创建)、更新、显隐、删除和获取结果5种操作。
在进行视频投影操作时,一般需要注意几点:
- 由于一个图层中可以进行多个视频画面播放,并且每个视频画面的视频源是不同的,因此在进行视频画面绘制或者加载视频画面之前,需要先创建空的绘制图层。
- 可创建空的绘制图层,也可创建预设的绘制图层,如需创建预设绘制图层,则
IsLoad
,AreaPoints
,TransFormNodePos
,VideoResources
等参数需要同时配置。 - 在需要保存视频画面参数信息时,需要通过更新先设定
IsSaveParam
和SaveID
两个参数。然后再调用图层的获取结果接口获取。中间可能需要一定的延时,否则获取的信息可能不全甚至为空。
下图是视频投影效果:
参数说明
视频投影可配置的参数如下表所示:
配置项 | 配置说明 | 值类型 | 备注 |
---|---|---|---|
LayerOptionsName | 图层配置对象名称 | string | 分析图层需配置为:AnalysisLayerOptions |
DataSourceTypeName | 数据源类型 | string | as_videoarea代表视频投影 |
LineColor | 线颜色 | R,G,B,A | 颜色取值范围在0-1.0之间,如 "0.9,0.8,0.8,1.0" |
LineWidth | 线宽度 | float | 线宽度取值范围在1-10之间 |
LineIsVisible | 线框是否可见 | bool | 默认为false |
WaitImagePath | 等待图片地址 | string | 等待加载图片地址,如不设则用默认画面 |
VideoResources | 视频路径 | string | 指定加载视频源的路径地址 |
ID | 区域ID | int | 一个图层中可包含多个视频画面, 每个画面都需要设定一个唯一id。 默认为0 |
IsAllOperator | 是否批量操作 | bool | 设定批量操作可以更新/删除所有的视频画面, 如果设为true, 则ID 设置无效。 默认为false,代表带个操作 |
IsCreateSingleArea | 是否创建新区域 | bool | 新建投影画面时需设为true。默认为false |
IsDelete | 是否删除 | bool | 可根据设定的ID 将视频画面删除。默认为false |
ImageIsVisible | 是否显示 | bool | 可通过该配置项控制视频画面的显隐状态。 默认为true显示 |
MoveType | 移动方式 | int | 设定已有视频画面的关键点移动方式。包括0-不移动;1-区域移动;20、21、22、23-区域四个边角点移动。默认为0 |
MoveDistance | 移动距离 | x,y,z | 关键点或整个画面区域的移动距离。需传入经度,纬度,高程坐标。 该参数与MoveType 配合使用 |
SaveID | 保存区域ID | int | 视频画面的参数信息可以传出保存,可通过该参数指定保存的视频画面。 如果传入的SaveID不存在,那么不会有信息传出。默认为0 |
IsSaveParam | 是否保存 | bool | 控制是否需要保存视频画面信息。该参数需要和SaveID 配合使用。 默认为false |
IsLoad | 是否初始化加载点 | bool | 默认为false |
ImageFitType | 贴合方式 | int | 绘制区域四边形内视频画面的填充方式。 以四边形的关键点(0,1,2,3)顺序为准, 有0-顺序贴合(); 1-逆时针转90度(1,2,3,0); 2-逆时针转180度(2,3,0,1); 3-顺时针转90度(3,0,1,2)。默认为0 |
AreaPoints | 坐标点集 | x,y,z列表 | 需传入世界坐标集,中间用;分隔,并以;结尾。 一般需要传4个关键点坐标 |
TransFormNodePos | 坐标偏移值 | x,y,z | 整个视频画面整体修正值。该值是为了防止大坐标导致画面抖动而设定的。 一般传入之前获取结果保存的值即可 |
获取结果说明
视频投影可以通过图层对象的GetLayerResult() 方法获取结果。获取的结果值对象参数如下表所示:
配置项 | 配置说明 | 值类型 | 备注 |
---|---|---|---|
ID | 区域ID | int | 一个图层中可包含多个视频画面,每个画面都需要设定一个唯一id。默认为0 |
LineColor | 线颜色 | R,G,B,A | 颜色取值范围在0-1.0之间,如 "0.9,0.8,0.8,1.0" |
LineWidth | 线宽度 | float | 线宽度取值范围在1-10之间 |
LineIsVisible | 线框是否可见 | bool | 默认为false |
AreaPoints | 坐标点集 | x,y,z列表 | 需传入经度,纬度,高程坐标集,中间用;分隔,并以;结尾。 一般需要传4个关键点坐标 |
TransFormNodePos | 坐标偏移值 | x,y,z | 整个视频画面整体修正值。 该值是为了防止大坐标导致画面抖动而设定的 |
ImageIsVisible | 是否显示 | bool | 可通过该配置项控制视频画面的显隐状态。 默认为true显示 |
ImageFitType | 贴合方式 | int | 绘制区域四边形内视频画面的填充方式。 以四边形的关键点(0,1,2,3)顺序为准, 有0-顺序贴合(); 1-逆时针转90度(1,2,3,0); 2-逆时针转180度(2,3,0,1); 3-顺时针转90度(3,0,1,2)。默认为0 |
WaitImagePath | 等待图片地址 | string | 等待加载图片地址,如不设则用默认画面 |
VideoResources | 视频路径 | string | 指定加载视频源的路径地址 |
代码调用示例
Javascript调用
var videoAreaLayer = null;
var bVisible = true;
var myEditId = document.getElementById("Textid");
var mStepValue = document.getElementById("StepValue");
var mySelect = document.getElementById("Select");
//创建视频区域投影图层
function createVideoAreaLayer(){
if(videoAreaLayer == null){
var tlo = map.CreateLayerOptions("vArea");//创建分析图层配置,给配置起个名称,任意名称
tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
tlo.AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件
videoAreaLayer = map.CreateLayer("AnalysisLayer", tlo);//创建分析图层,第一项参数必须为AnalysisLayer
map.AddLayer(videoAreaLayer);// 添加分析图层
alert("请点击‘新增视频投影区域’按钮,创建投影区域;或者‘根据预设点位加载’来直接加载投影区域!");
}else{
alert("已存在视屏区域投影图层,无需重复创建!");
}
}
//移除视频区域投影图层
function removeVideoAreaLayer(){
if(videoAreaLayer){
map.RemoveLayer(videoAreaLayer);
videoAreaLayer = null;
}else{
alert("图层为空,无需重复删除!");
}
}
// 相关设备信息按项目现场配置
//本地视频:视频绝对路径
//海康设备1:IP,Port,channel,User,Password
//海康设备2:IP,Port,channel(1),User,Password
//大华设备:IP,Port,User,password,设备编号,主辅流
//海康RTSP码流: 码流访问地址
//新增视频投影区域
function addVideoArea(){
if(myEditId.value == "")
{
alert("请先填入区域ID");
return;
}
if(videoAreaLayer){
var tlo = map.CreateLayerOptions("vArea");//创建分析图层配置,给配置起个名称,任意名称
tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
tlo.AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件
tlo.AddConfig("IsCreateSingleArea", "true");//是否需要创建区域
tlo.AddConfig("IsDelete", "false");//是否删除
tlo.AddConfig("IsAllOperator", "false");//是否批量操作
tlo.AddConfig("LineColor", "0.3, 0.3, 0.4, 1.0");//线框颜色rgba
tlo.AddConfig("LineWidth", "5.0");//线框宽
tlo.AddConfig("LineIsVisible", "true");//绘制时线框可见否
tlo.AddConfig("ID", String(myEditId.value));//所创建区域ID
alert(myEditId.value);
//tlo.AddConfig("VideoResources", "172.6.12.108,9000,system,123456,1000117$1$0$0,1;");
tlo.AddConfig("WaitImagePath", gWaitImagePath);//默认加载图片
tlo.AddConfig("VideoResources", gVideoPath);//视频路径
videoAreaLayer.UpdateLayerOptions(tlo);//更新图层
}else{
alert("不存在图层,无法更新!");
}
}
//显隐视频区域投影图层
function visibleVideoArea(){
if(myEditId.value == "")
{
alert("请先填入区域ID");
return;
}
if(videoAreaLayer){
var tlo = map.CreateLayerOptions("vArea");//创建分析图层配置,给配置起个名称,任意名称
tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
tlo.AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件
tlo.AddConfig("ID", String(myEditId.value));//所创建区域ID
tlo.AddConfig("ImageIsVisible", String(bVisible = !bVisible));//图片显隐
videoAreaLayer.UpdateLayerOptions(tlo);//更新图层
}else{
alert("不存在图层,无法更新!");
}
}
//删除视频投影区域
function delVideoArea(){
if(myEditId.value == "")
{
alert("请先填入区域ID");
return;
}
if(videoAreaLayer){
var tlo = map.CreateLayerOptions("vArea");//创建分析图层配置,给配置起个名称,任意名称
tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
tlo.AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件
tlo.AddConfig("ID", String(myEditId.value));//所创建区域ID
tlo.AddConfig("IsDelete", "true");
videoAreaLayer.UpdateLayerOptions(tlo);//更新图层
}else{
alert("不存在图层,无法更新!");
}
}
//调整经度+
function lonPlus(){
if(myEditId.value == "")
{
alert("请先填入区域ID");
return;
}
var moveInfo = mStepValue.value + ",0.0,0.0";
var moveType = mySelect.options[mySelect.selectedIndex].value;
if(videoAreaLayer){
var tlo = map.CreateLayerOptions("vArea");//创建分析图层配置,给配置起个名称,任意名称
tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
tlo.AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件
tlo.AddConfig("ID", String(myEditId.value));//所创建区域ID
tlo.AddConfig("MoveType", moveType);//是否移动及移动方式, 不添加默认不移动
tlo.AddConfig("MoveDistance", moveInfo);//移动(经纬度、高程), 不添加默认不移动
videoAreaLayer.UpdateLayerOptions(tlo);//更新图层
}
}
//调整经度-
function lonMinus(){
if(myEditId.value == "")
{
alert("请先填入区域ID");
return;
}
var moveInfo = "-" + mStepValue.value + ",0.0,0.0";
var moveType = mySelect.options[mySelect.selectedIndex].value;
if(videoAreaLayer){
var tlo = map.CreateLayerOptions("vArea");//创建分析图层配置,给配置起个名称,任意名称
tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
tlo.AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件
tlo.AddConfig("ID", String(myEditId.value));//所创建区域ID
tlo.AddConfig("MoveType", moveType);//是否移动及移动方式, 不添加默认不移动
tlo.AddConfig("MoveDistance", moveInfo);//移动(经纬度、高程), 不添加默认不移动
videoAreaLayer.UpdateLayerOptions(tlo);//更新图层
}
}
//调整纬度+
function latPlus(){
if(myEditId.value == "")
{
alert("请先填入区域ID");
return;
}
var moveInfo = "0.0," + mStepValue.value + ",0.0";
var moveType = mySelect.options[mySelect.selectedIndex].value;
if(videoAreaLayer){
var tlo = map.CreateLayerOptions("vArea");//创建分析图层配置,给配置起个名称,任意名称
tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
tlo.AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件
tlo.AddConfig("ID", String(myEditId.value));//所创建区域ID
tlo.AddConfig("MoveType", moveType);//是否移动及移动方式, 不添加默认不移动
tlo.AddConfig("MoveDistance", moveInfo);//移动(经纬度、高程), 不添加默认不移动
videoAreaLayer.UpdateLayerOptions(tlo);//更新图层
}
}
//调整纬度-
function latMinus(){
if(myEditId.value == "")
{
alert("请先填入区域ID");
return;
}
var moveInfo = "0.0,-" + mStepValue.value + ",0.0";
var moveType = mySelect.options[mySelect.selectedIndex].value;
if(videoAreaLayer){
var tlo = map.CreateLayerOptions("vArea");//创建分析图层配置,给配置起个名称,任意名称
tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
tlo.AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件
tlo.AddConfig("ID", String(myEditId.value));//所创建区域ID
tlo.AddConfig("MoveType", moveType);//是否移动及移动方式, 不添加默认不移动
tlo.AddConfig("MoveDistance", moveInfo);//移动(经纬度、高程), 不添加默认不移动
videoAreaLayer.UpdateLayerOptions(tlo);//更新图层
}
}
//调整高度+
function heightPlus(){
if(myEditId.value == "")
{
alert("请先填入区域ID");
return;
}
var moveInfo = "0.0,0.0," + mStepValue.value * 10000;
var moveType = mySelect.options[mySelect.selectedIndex].value;
if(videoAreaLayer){
var tlo = map.CreateLayerOptions("vArea");//创建分析图层配置,给配置起个名称,任意名称
tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
tlo.AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件
tlo.AddConfig("ID", String(myEditId.value));//所创建区域ID
tlo.AddConfig("MoveType", moveType);//是否移动及移动方式, 不添加默认不移动
tlo.AddConfig("MoveDistance", moveInfo);//移动(经纬度、高程), 不添加默认不移动
videoAreaLayer.UpdateLayerOptions(tlo);//更新图层
}
}
//调整高度-
function heightMinus(){
if(myEditId.value == "")
{
alert("请先填入区域ID");
return;
}
var moveInfo = "0.0,0.0,-" + mStepValue.value * 10000;
var moveType = mySelect.options[mySelect.selectedIndex].value;
if(videoAreaLayer){
var tlo = map.CreateLayerOptions("vArea");//创建分析图层配置,给配置起个名称,任意名称
tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
tlo.AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件
tlo.AddConfig("ID", String(myEditId.value));//所创建区域ID
tlo.AddConfig("MoveType", moveType);//是否移动及移动方式, 不添加默认不移动
tlo.AddConfig("MoveDistance", moveInfo);//移动(经纬度、高程), 不添加默认不移动
videoAreaLayer.UpdateLayerOptions(tlo);//更新图层
}
}
//获取并保存视频投影参数
function getParam(){
if(myEditId.value == "")
{
alert("请先填入区域ID");
return;
}
if(videoAreaLayer){
var tlo = map.CreateLayerOptions("vArea");//创建分析图层配置,给配置起个名称,任意名称
tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
tlo.AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件
tlo.AddConfig("IsSaveParam", "true");
tlo.AddConfig("SaveID", String(myEditId.value));//需要保存的ID,必须有,若id不对应,则没有参数传出
videoAreaLayer.UpdateLayerOptions(tlo);//更新图层
//获取视频投影参数
sleep(200);//延时获取
var mAreaPoints = videoAreaLayer.GetLayerResult().GetConfigValueByKey("AreaPoints");//获取区域视频投影坐标点位
var mTransFormNodePos = videoAreaLayer.GetLayerResult().GetConfigValueByKey("TransFormNodePos");//获取区域视频投影偏移值
var mID = videoAreaLayer.GetLayerResult().GetConfigValueByKey("ID");//获取区域视频投影ID
var mLineIsVisible = videoAreaLayer.GetLayerResult().GetConfigValueByKey("LineIsVisible");//是否隐藏边框线
var mLineWidth = videoAreaLayer.GetLayerResult().GetConfigValueByKey("LineWidth");//获取边框线宽
var mLineColor = videoAreaLayer.GetLayerResult().GetConfigValueByKey("LineColor");//获取边框线颜色
var mVideoResources = videoAreaLayer.GetLayerResult().GetConfigValueByKey("VideoResources");//获取视频源路径
var mImageIsVisible = videoAreaLayer.GetLayerResult().GetConfigValueByKey("ImageIsVisible");//图片是否显示
var mImageFitType = videoAreaLayer.GetLayerResult().GetConfigValueByKey("ImageFitType");//纹理贴合方式
alert("AreaPoints:"+mAreaPoints+";TransFormNodePos:"+mTransFormNodePos+";ID:"+mID+";LineIsVisible:"+mLineIsVisible+";LineWidth:"+mLineWidth+";LineColor:"+mLineColor+";VideoResources:"+videoAreaLayer.GetLayerResult().GetConfigValueByKey("AreaPoints")+";ImageIsVisible:"+mImageIsVisible+";ImageFitType:"+mImageFitType);
}else{
alert("图层为空,无法获取参数!");
}
}
//根据预设点位加载
function loadByPosition(){
if(myEditId.value == "")
{
alert("请先填入区域ID");
return;
}
if(videoAreaLayer){
var tlo = map.CreateLayerOptions("vArea");//创建分析图层配置,给配置起个名称,任意名称
tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
tlo.AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件
tlo.AddConfig("IsLoad", "true");//通过参数重加载视频投影
tlo.AddConfig("ID", String(myEditId.value));//区域ID,此处暂以1代替,需传入实际值
tlo.AddConfig("AreaPoints", "-2776468.27906,3190574.52284,-4766936.67503;-2776512.09532,3190520.31327,-4766948.4827;-2776466.44834,3190494.76636,-4766990.10722;-2776422.08869,3190547.14723,-4766980.64915;");
tlo.AddConfig("TransFormNodePos", "-2776449.1087,3190559.21823,-4767049.84615");//偏移量,传入对应保存的值
tlo.AddConfig("LineWidth", "5");//线框宽度
tlo.AddConfig("LineColor", "0,0.1,0.8,0.5");//线框颜色
tlo.AddConfig("LineIsVisible", "false");
tlo.AddConfig("VideoResources", gVideoPath);//视屏资源路径
tlo.AddConfig("ImageIsVisible", "true");//图片显隐
tlo.AddConfig("ImageFitType", "0");//贴合方式
videoAreaLayer.UpdateLayerOptions(tlo);//更新图层
}else{
alert("图层为空,无法更新!");
}
}
C++调用
BaseObjectCOMLib::ILayerObjectPtr videoAreaLayer;//视频投影图层
bool bVisible;
CEdit myEditId;//id输入框对象
CEdit mStepValue;//编辑输入框对象
CComboBox m_combo;//下拉框对象
std::string value;//视频id
std::string value1;//编辑值
std::string moveType;//下拉框内容
//获取id
void Cf3c2VideoDlg::OnEnChangeEdit1()
{
CString m_paramname;
myEditId.GetWindowText(m_paramname);
value = CT2A(m_paramname.GetBuffer());
}
//获取编辑值
void Cf3c2VideoDlg::OnEnChangeEdit2()
{
CString m_paramname;
mStepValue.GetWindowText(m_paramname);
value1 = CT2A(m_paramname.GetBuffer());
}
//获取移动类型
void Cf3c2VideoDlg::OnCbnSelchangeCombo1()
{
CString m_paramname;
m_combo.GetLBText(m_combo.GetCurSel(),m_paramname);
std::string value = CT2A(m_paramname.GetBuffer());
if(value =="整体编辑")
{
moveType = "1";
}
else if(value =="边角点一")
{
moveType = "20";
}
else if(value =="边角点二")
{
moveType = "21";
}
else if(value =="边角点三")
{
moveType = "22";
}
else if(value =="边角点四")
{
moveType = "23";
}
}
//获取下拉框内容
void Cf3c2VideoDlg::OnCbnSetfocusCombo1()
{
m_combo.ResetContent();//清空下拉框
m_combo.AddString(L"整体编辑");
m_combo.AddString(L"边角点一");
m_combo.AddString(L"边角点二");
m_combo.AddString(L"边角点三");
m_combo.AddString(L"边角点四");
m_combo.SetCurSel(0);
}
//创建视频区域投影图层
void Cf3c2VideoDlg::OnBnClickedcreatevideoarealayer()
{
if(videoAreaLayer)
{
return;
}
ConfigOptionsCOMLib::ILayerOptionsPtr tlo = (ConfigOptionsCOMLib::ILayerOptionsPtr)map->CreateLayerOptions("plot"); //创建图层配置对象,任意名称
tlo->AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
tlo->AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件
videoAreaLayer = map->CreateLayer("AnalysisLayer", tlo);//创建分析图层,第一项参数必须为AnalysisLayer
map->AddLayer(videoAreaLayer);// 添加分析图层
}
// 相关设备信息按项目现场配置
//本地视频:视频绝对路径
//海康设备1:IP,Port,channel,User,Password
//海康设备2:IP,Port,channel(1),User,Password
//大华设备:IP,Port,User,password,设备编号,主辅流
//海康RTSP码流: 码流访问地址
//新增视频投影区域
void Cf3c2VideoDlg::OnBnClickedaddvideoarea()
{
if(!videoAreaLayer)
{
return;
}
char temp_status[MAX_PATH];
GetPrivateProfileStringA("Path", "VideoPath", "", temp_status, MAX_PATH, mIniPath.c_str());
std::string VideoPath(temp_status);
ConfigOptionsCOMLib::ILayerOptionsPtr tlo = (ConfigOptionsCOMLib::ILayerOptionsPtr)map->CreateLayerOptions("plot"); //创建图层配置对象,任意名称
tlo->AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
tlo->AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件
tlo->AddConfig("IsCreateSingleArea", "true");//是否需要创建区域
tlo->AddConfig("IsDelete", "false");//是否删除
tlo->AddConfig("IsAllOperator", "false");//是否批量操作
tlo->AddConfig("LineColor", "0.3, 0.3, 0.4, 1.0");//线框颜色rgba
tlo->AddConfig("LineWidth", "5.0");//线框宽
tlo->AddConfig("LineIsVisible", "true");//绘制时线框可见否
tlo->AddConfig("ID", value.c_str());//所创建区域ID
//tlo->AddConfig("VideoResources", "172.6.12.108,9000,system,123456,1000117$1$0$0,1;");
tlo->AddConfig("VideoResources", VideoPath.c_str());//视频路径
videoAreaLayer->UpdateLayerOptions(tlo);//更新图层
}
//根据预设点位加载
void Cf3c2VideoDlg::OnBnClickedloadbyposition()
{
if(!videoAreaLayer)
{
return;
}
char temp_status[MAX_PATH];
GetPrivateProfileStringA("Path", "VideoPath", "", temp_status, MAX_PATH, mIniPath.c_str());
std::string VideoPath(temp_status);
ConfigOptionsCOMLib::ILayerOptionsPtr tlo = (ConfigOptionsCOMLib::ILayerOptionsPtr)map->CreateLayerOptions("plot"); //创建图层配置对象,任意名称
tlo->AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
tlo->AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件
tlo->AddConfig("IsLoad", "true");//通过参数重加载视频投影
tlo->AddConfig("ID", value.c_str());//区域ID
tlo->AddConfig("AreaPoints", "-2776468.27906,3190574.52284,-4766936.67503;-2776512.09532,3190520.31327,-4766948.4827;-2776466.44834,3190494.76636,-4766990.10722;-2776422.08869,3190547.14723,-4766980.64915;");
tlo->AddConfig("TransFormNodePos", "-2776449.1087,3190559.21823,-4767049.84615");//偏移量,传入对应保存的值
tlo->AddConfig("LineWidth", "5");//线框宽度
tlo->AddConfig("LineColor", "0,0.1,0.8,0.5");//线框颜色
tlo->AddConfig("LineIsVisible", "false");
tlo->AddConfig("VideoResources", VideoPath.c_str());//视屏资源路径
tlo->AddConfig("ImageIsVisible", "true");//图片显隐
tlo->AddConfig("ImageFitType", "0");//贴合方式
videoAreaLayer->UpdateLayerOptions(tlo);//更新图层
}
//显隐视频区域投影图层
void Cf3c2VideoDlg::OnBnClickedvisiblevideoarea()
{
if(!videoAreaLayer)
{
return;
}
ConfigOptionsCOMLib::ILayerOptionsPtr tlo = (ConfigOptionsCOMLib::ILayerOptionsPtr)map->CreateLayerOptions("plot"); //创建图层配置对象,任意名称
tlo->AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
tlo->AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件
tlo->AddConfig("ID", value.c_str());//所创建区域ID
bVisible = !bVisible;
std::stringstream stream;
stream << bVisible;
tlo->AddConfig("ImageIsVisible",stream.str().c_str() );//图片显隐
videoAreaLayer->UpdateLayerOptions(tlo);//更新图层
}
//删除视频投影区域
void Cf3c2VideoDlg::OnBnClickeddelvideoarea()
{
if(!videoAreaLayer)
{
return;
}
ConfigOptionsCOMLib::ILayerOptionsPtr tlo = (ConfigOptionsCOMLib::ILayerOptionsPtr)map->CreateLayerOptions("plot"); //创建图层配置对象,任意名称
tlo->AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
tlo->AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件
tlo->AddConfig("ID", value.c_str());//所创建区域ID
tlo->AddConfig("IsDelete", "true");
videoAreaLayer->UpdateLayerOptions(tlo);//更新图层
}
//移除视频区域投影图层
void Cf3c2VideoDlg::OnBnClickedremovevideoarealayer()
{
if(!videoAreaLayer)
{
return;
}
map->RemoveLayer(videoAreaLayer);
videoAreaLayer = NULL;
}
//调整经度+
void Cf3c2VideoDlg::OnBnClickedlonplus()
{
if(!videoAreaLayer)
{
return;
}
std::string moveInfo = value1+",0.0,0.0";
ConfigOptionsCOMLib::ILayerOptionsPtr tlo = (ConfigOptionsCOMLib::ILayerOptionsPtr)map->CreateLayerOptions("plot"); //创建图层配置对象,任意名称
tlo->AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
tlo->AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件
tlo->AddConfig("ID", value.c_str());//所创建区域ID
tlo->AddConfig("MoveType", moveType.c_str());//是否移动及移动方式, 不添加默认不移动
tlo->AddConfig("MoveDistance", moveInfo.c_str());//移动(经纬度、高程), 不添加默认不移动
videoAreaLayer->UpdateLayerOptions(tlo);//更新图层
}
//调整经度-
void Cf3c2VideoDlg::OnBnClickedlonminus()
{
if(!videoAreaLayer)
{
return;
}
std::string moveInfo = "-" + value1 + ",0.0,0.0";
ConfigOptionsCOMLib::ILayerOptionsPtr tlo = (ConfigOptionsCOMLib::ILayerOptionsPtr)map->CreateLayerOptions("plot"); //创建图层配置对象,任意名称
tlo->AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
tlo->AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件
tlo->AddConfig("ID", value.c_str());//所创建区域ID
tlo->AddConfig("MoveType", moveType.c_str());//是否移动及移动方式, 不添加默认不移动
tlo->AddConfig("MoveDistance", moveInfo.c_str());//移动(经纬度、高程), 不添加默认不移动
videoAreaLayer->UpdateLayerOptions(tlo);//更新图层
}
//调整纬度+
void Cf3c2VideoDlg::OnBnClickedlatplus()
{
if(!videoAreaLayer)
{
return;
}
std::string moveInfo ="0.0," + value + ",0.0";
ConfigOptionsCOMLib::ILayerOptionsPtr tlo = (ConfigOptionsCOMLib::ILayerOptionsPtr)map->CreateLayerOptions("plot"); //创建图层配置对象,任意名称
tlo->AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
tlo->AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件
tlo->AddConfig("ID", value.c_str());//所创建区域ID
tlo->AddConfig("MoveType", moveType.c_str());//是否移动及移动方式, 不添加默认不移动
tlo->AddConfig("MoveDistance", moveInfo.c_str());//移动(经纬度、高程), 不添加默认不移动
videoAreaLayer->UpdateLayerOptions(tlo);//更新图层
}
//调整纬度-
void Cf3c2VideoDlg::OnBnClickedlatminus()
{
if(!videoAreaLayer)
{
return;
}
std::string moveInfo ="0.0,-" + value + ",0.0";
ConfigOptionsCOMLib::ILayerOptionsPtr tlo = (ConfigOptionsCOMLib::ILayerOptionsPtr)map->CreateLayerOptions("plot"); //创建图层配置对象,任意名称
tlo->AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
tlo->AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件
tlo->AddConfig("ID", value.c_str());//所创建区域ID
tlo->AddConfig("MoveType", moveType.c_str());//是否移动及移动方式, 不添加默认不移动
tlo->AddConfig("MoveDistance", moveInfo.c_str());//移动(经纬度、高程), 不添加默认不移动
videoAreaLayer->UpdateLayerOptions(tlo);//更新图层
}
//调整高度+
void Cf3c2VideoDlg::OnBnClickedheightplus()
{
if(!videoAreaLayer)
{
return;
}
std::string moveInfo = "0.0,0.0," + value;
ConfigOptionsCOMLib::ILayerOptionsPtr tlo = (ConfigOptionsCOMLib::ILayerOptionsPtr)map->CreateLayerOptions("plot"); //创建图层配置对象,任意名称
tlo->AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
tlo->AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件
tlo->AddConfig("ID", value.c_str());//所创建区域ID
tlo->AddConfig("MoveType", moveType.c_str());//是否移动及移动方式, 不添加默认不移动
tlo->AddConfig("MoveDistance", moveInfo.c_str());//移动(经纬度、高程), 不添加默认不移动
videoAreaLayer->UpdateLayerOptions(tlo);//更新图层
}
//调整高度-
void Cf3c2VideoDlg::OnBnClickedheightminus()
{
if(!videoAreaLayer)
{
return;
}
std::string moveInfo ="0.0,0.0,-" + value;;
ConfigOptionsCOMLib::ILayerOptionsPtr tlo = (ConfigOptionsCOMLib::ILayerOptionsPtr)map->CreateLayerOptions("plot"); //创建图层配置对象,任意名称
tlo->AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
tlo->AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件
tlo->AddConfig("ID", value.c_str());//所创建区域ID
tlo->AddConfig("MoveType", moveType.c_str());//是否移动及移动方式, 不添加默认不移动
tlo->AddConfig("MoveDistance", moveInfo.c_str());//移动(经纬度、高程), 不添加默认不移动
videoAreaLayer->UpdateLayerOptions(tlo);//更新图层
}
//获取视频投影参数
void Cf3c2VideoDlg::OnBnClickedgetparam()
{
if(!videoAreaLayer)
{
return;
}
ConfigOptionsCOMLib::ILayerOptionsPtr tlo = (ConfigOptionsCOMLib::ILayerOptionsPtr)map->CreateLayerOptions("plot"); //创建图层配置对象,任意名称
tlo->AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
tlo->AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件
tlo->AddConfig("IsSaveParam", "true");
tlo->AddConfig("SaveID", value.c_str());//需要保存的ID,必须有,若id不对应,则没有参数传出
videoAreaLayer->UpdateLayerOptions(tlo);//更新图层
//获取视频投影参数
Sleep(200);//延时获取
ConfigOptionsCOMLib::ILayerOptionsPtr opt = videoAreaLayer->GetLayerResult();
CString AreaPoints = opt->GetConfigValueByKey("AreaPoints");//获取区域视频投影坐标点位
CString TransFormNodePos = opt->GetConfigValueByKey("TransFormNodePos");//获取区域视频投影偏移值
CString ID = opt->GetConfigValueByKey("ID");//获取区域视频投影ID
CString LineIsVisible = opt->GetConfigValueByKey("LineIsVisible");//是否隐藏边框线ID
CString LineWidth = opt->GetConfigValueByKey("LineWidth");//获取边框线宽
CString LineColor = opt->GetConfigValueByKey("LineColor");//获取边框线颜色
CString VideoResources = opt->GetConfigValueByKey("VideoResources");//获取视频源路径
CString ImageIsVisible = opt->GetConfigValueByKey("ImageIsVisible");//图片是否显示
CString ImageFitType = opt->GetConfigValueByKey("ImageFitType");//纹理贴合方式
MessageBox(L"AreaPoints:"+ AreaPoints+ L"\r\n"+L"TransFormNodePos:"+TransFormNodePos+L"\r\n"+"ID:"+ID+L"\r\n"+L"LineIsVisible:"+LineIsVisible+L"\r\n"+L"LineWidth:"+LineWidth+L"\r\n"+L"LineColor:"+LineColor+L"\r\n"+L"VideoResources:"+VideoResources+L"\r\n"+L"ImageIsVisible:"+ImageIsVisible+L"\r\n"+L"ImageFitType:"+ImageFitType);
}
C#调用
ILayerObject videoAreaLayer = null;
bool bVisible = true;
gWaitImagePath = readini("Path", "IconFolderPath", "", filepath) + "/loading.jpg";
gVideoPath = readini("Path", "VideoPath", "", filepath);
//创建视频区域投影图层
private void createVideoAreaLayer_Click(object sender, EventArgs e)
{
if (videoAreaLayer == null)
{
var tlo = map.CreateLayerOptions("vArea");//创建分析图层配置,给配置起个名称,任意名称
tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
tlo.AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件
videoAreaLayer = map.CreateLayer("AnalysisLayer", tlo);//创建分析图层,第一项参数必须为AnalysisLayer
map.AddLayer(videoAreaLayer);// 添加分析图层
MessageBox.Show("请点击‘新增视频投影区域’按钮,创建投影区域;或者‘根据预设点位加载’来直接加载投影区域!");
}
else
{
MessageBox.Show("已存在视屏区域投影图层,无需重复创建!");
}
}
// 相关设备信息按项目现场配置
//本地视频:视频绝对路径
//海康设备1:IP,Port,channel,User,Password
//海康设备2:IP,Port,channel(1),User,Password
//大华设备:IP,Port,User,password,设备编号,主辅流
//海康RTSP码流: 码流访问地址
private void addVideoArea_Click(object sender, EventArgs e)
{
if (videoAreaLayer!=null)
{
var tlo = map.CreateLayerOptions("vArea");//创建分析图层配置,给配置起个名称,任意名称
tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
tlo.AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件
tlo.AddConfig("IsCreateSingleArea", "true");//是否需要创建区域
tlo.AddConfig("IsDelete", "false");//是否删除
tlo.AddConfig("IsAllOperator", "false");//是否批量操作
tlo.AddConfig("LineColor", "0.3, 0.3, 0.4, 1.0");//线框颜色rgba
tlo.AddConfig("LineWidth", "5.0");//线框宽
tlo.AddConfig("LineIsVisible", "true");//绘制时线框可见否
tlo.AddConfig("ID", textBox1.Text);//所创建区域ID
tlo.AddConfig("WaitImagePath", gWaitImagePath);//默认加载图片
MessageBox.Show(textBox1.Text);
//tlo.AddConfig("VideoResources", "172.6.12.108,9000,system,123456,1000117$1$0$0,1;");
tlo.AddConfig("VideoResources", readini("Path", "VideoPath", "", filepath));//视频路径
videoAreaLayer.UpdateLayerOptions(tlo);//更新图层
}
else
{
MessageBox.Show("不存在图层,无法更新!");
}
}
//根据预设点位加载
private void loadByPosition_Click(object sender, EventArgs e)
{
if (videoAreaLayer!=null)
{
var tlo = map.CreateLayerOptions("vArea");//创建分析图层配置,给配置起个名称,任意名称
tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
tlo.AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件
tlo.AddConfig("IsLoad", "true");//通过参数重加载视频投影
tlo.AddConfig("ID", textBox1.Text);//区域ID,此处暂以1代替,需传入实际值
tlo.AddConfig("AreaPoints", "-2776468.27906,3190574.52284,-4766936.67503;-2776512.09532,3190520.31327,-4766948.4827;-2776466.44834,3190494.76636,-4766990.10722;-2776422.08869,3190547.14723,-4766980.64915;");
tlo.AddConfig("TransFormNodePos", "-2776449.1087,3190559.21823,-4767049.84615");//偏移量,传入对应保存的值
tlo.AddConfig("LineWidth", "5");//线框宽度
tlo.AddConfig("LineColor", "0,0.1,0.8,0.5");//线框颜色
tlo.AddConfig("LineIsVisible", "false");
tlo.AddConfig("VideoResources", readini("Path", "VideoPath", "", filepath));//视屏资源路径
tlo.AddConfig("ImageIsVisible", "true");//图片显隐
tlo.AddConfig("ImageFitType", "1");//贴合方式
videoAreaLayer.UpdateLayerOptions(tlo);//更新图层
}
else
{
MessageBox.Show("图层为空,无法更新!");
}
}
//显隐视频区域投影图层
private void visibleVideoArea_Click(object sender, EventArgs e)
{
if (videoAreaLayer!=null)
{
var tlo = map.CreateLayerOptions("vArea");//创建分析图层配置,给配置起个名称,任意名称
tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
tlo.AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件
tlo.AddConfig("ID", textBox1.Text);//所创建区域ID
tlo.AddConfig("ImageIsVisible",(bVisible = !bVisible).ToString());//图片显隐
videoAreaLayer.UpdateLayerOptions(tlo);//更新图层
}
else
{
MessageBox.Show("不存在图层,无法更新!");
}
}
//删除视频投影区域
private void delVideoArea_Click(object sender, EventArgs e)
{
if (videoAreaLayer!=null)
{
var tlo = map.CreateLayerOptions("vArea");//创建分析图层配置,给配置起个名称,任意名称
tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
tlo.AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件
tlo.AddConfig("ID", textBox1.Text);//所创建区域ID
tlo.AddConfig("IsDelete", "true");
videoAreaLayer.UpdateLayerOptions(tlo);//更新图层
}
else
{
MessageBox.Show("不存在图层,无法更新!");
}
}
//移除视频区域投影图层
private void removeVideoAreaLayer_Click(object sender, EventArgs e)
{
if (videoAreaLayer!=null)
{
map.RemoveLayer(videoAreaLayer);
videoAreaLayer = null;
}
else
{
MessageBox.Show("图层为空,无需重复删除!");
}
}
//返回移动类型
private string GetMoveType()
{
Console.WriteLine("Text:" + comboBox1.SelectedItem.ToString());
switch (comboBox1.SelectedItem.ToString())
{
case "整体编辑":
return "1";
break;
case "边角点一":
return "20";
break;
case "边角点二":
return "21";
break;
case "边角点三":
return "22";
break;
case "边角点四":
return "23";
break;
}
return "1";
}
//调整经度-
private void lonMinus_Click(object sender, EventArgs e)
{
if (videoAreaLayer != null)
{
var tlo = map.CreateLayerOptions("vArea");//创建分析图层配置,给配置起个名称,任意名称
tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
tlo.AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件
tlo.AddConfig("ID", textBox1.Text);//所创建区域ID
tlo.AddConfig("MoveType", GetMoveType());//是否移动及移动方式, 不添加默认不移动
tlo.AddConfig("MoveDistance", "-0.0000001,0.0,0.0");//移动(经纬度、高程), 不添加默认不移动
videoAreaLayer.UpdateLayerOptions(tlo);//更新图层
}
}
//调整经度+
private void lonPlus_Click(object sender, EventArgs e)
{
if (videoAreaLayer!=null)
{
var tlo = map.CreateLayerOptions("vArea");//创建分析图层配置,给配置起个名称,任意名称
tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
tlo.AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件
tlo.AddConfig("ID", textBox1.Text);//所创建区域ID
tlo.AddConfig("MoveType", GetMoveType());//是否移动及移动方式, 不添加默认不移动
tlo.AddConfig("MoveDistance", "0.0000001,0.0,0.0");//移动(经纬度、高程), 不添加默认不移动
videoAreaLayer.UpdateLayerOptions(tlo);//更新图层
}
}
//调整纬度+
private void latPlus_Click(object sender, EventArgs e)
{
if (videoAreaLayer != null)
{
var tlo = map.CreateLayerOptions("vArea");//创建分析图层配置,给配置起个名称,任意名称
tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
tlo.AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件
tlo.AddConfig("ID", textBox1.Text);//所创建区域ID
tlo.AddConfig("MoveType", GetMoveType());//是否移动及移动方式, 不添加默认不移动
tlo.AddConfig("MoveDistance", "0,0.0000001,0.0");//移动(经纬度、高程), 不添加默认不移动
videoAreaLayer.UpdateLayerOptions(tlo);//更新图层
}
}
//调整纬度-
private void latMinus_Click(object sender, EventArgs e)
{
if (videoAreaLayer != null)
{
var tlo = map.CreateLayerOptions("vArea");//创建分析图层配置,给配置起个名称,任意名称
tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
tlo.AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件
tlo.AddConfig("ID", textBox1.Text);//所创建区域ID
tlo.AddConfig("MoveType", GetMoveType());//是否移动及移动方式, 不添加默认不移动
tlo.AddConfig("MoveDistance", "0,-0.0000001,0.0");//移动(经纬度、高程), 不添加默认不移动
videoAreaLayer.UpdateLayerOptions(tlo);//更新图层
}
}
//调整高度+
private void heightPlus_Click(object sender, EventArgs e)
{
if (videoAreaLayer != null)
{
var tlo = map.CreateLayerOptions("vArea");//创建分析图层配置,给配置起个名称,任意名称
tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
tlo.AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件
tlo.AddConfig("ID", textBox1.Text);//所创建区域ID
tlo.AddConfig("MoveType", GetMoveType());//是否移动及移动方式, 不添加默认不移动
tlo.AddConfig("MoveDistance", "0,0,0.1");//移动(经纬度、高程), 不添加默认不移动
videoAreaLayer.UpdateLayerOptions(tlo);//更新图层
}
}
//调整高度-
private void heightMinus_Click(object sender, EventArgs e)
{
if (videoAreaLayer != null)
{
var tlo = map.CreateLayerOptions("vArea");//创建分析图层配置,给配置起个名称,任意名称
tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
tlo.AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件
tlo.AddConfig("ID", textBox1.Text);//所创建区域ID
tlo.AddConfig("MoveType", GetMoveType());//是否移动及移动方式, 不添加默认不移动
tlo.AddConfig("MoveDistance", "0,0,-0.1");//移动(经纬度、高程), 不添加默认不移动
videoAreaLayer.UpdateLayerOptions(tlo);//更新图层
}
}
//获取并保存视频投影参数
private void getParam_Click(object sender, EventArgs e)
{
if (videoAreaLayer!=null)
{
var tlo = map.CreateLayerOptions("vArea");//创建分析图层配置,给配置起个名称,任意名称
tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
tlo.AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件
tlo.AddConfig("IsSaveParam", "true");
tlo.AddConfig("SaveID", textBox1.Text);//需要保存的ID,必须有,若id不对应,则没有参数传出
videoAreaLayer.UpdateLayerOptions(tlo);//更新图层
//获取视频投影参数
Thread.Sleep(200);//延时获取
var mAreaPoints = videoAreaLayer.GetLayerResult().GetConfigValueByKey("AreaPoints");//获取区域视频投影坐标点位
var mTransFormNodePos = videoAreaLayer.GetLayerResult().GetConfigValueByKey("TransFormNodePos");//获取区域视频投影偏移值
var mID = videoAreaLayer.GetLayerResult().GetConfigValueByKey("ID");//获取区域视频投影ID
var mLineIsVisible = videoAreaLayer.GetLayerResult().GetConfigValueByKey("LineIsVisible");//是否隐藏边框线
var mLineWidth = videoAreaLayer.GetLayerResult().GetConfigValueByKey("LineWidth");//获取边框线宽
var mLineColor = videoAreaLayer.GetLayerResult().GetConfigValueByKey("LineColor");//获取边框线颜色
var mVideoResources = videoAreaLayer.GetLayerResult().GetConfigValueByKey("VideoResources");//获取视频源路径
var mImageIsVisible = videoAreaLayer.GetLayerResult().GetConfigValueByKey("ImageIsVisible");//图片是否显示
var mImageFitType = videoAreaLayer.GetLayerResult().GetConfigValueByKey("ImageFitType");//纹理贴合方式
MessageBox.Show("AreaPoints:" + mAreaPoints + ";TransFormNodePos:" + mTransFormNodePos + ";ID:" + mID + ";LineIsVisible:" + mLineIsVisible + ";LineWidth:" + mLineWidth + ";LineColor:" + mLineColor + ";VideoResources:" + videoAreaLayer.GetLayerResult().GetConfigValueByKey("AreaPoints") + ";ImageIsVisible:" + mImageIsVisible + ";ImageFitType:" + mImageFitType);
}
else
{
MessageBox.Show("图层为空,无法获取参数!");
}
}