2.4.2 态势标绘


态势标绘

态势标绘是指使用标记标绘功能反应自然、社会、经济和军事等现状及发展趋势,它是为实时分析决策提供服务的功能。 CooRun SDK支持的标绘类型包括:点、圆、椭圆、弓形、扇形、曲线面、多边形、矩形、聚集地、钳击、直箭头、细直箭头、突击方向、进攻方向、进攻方向(尾)、分队战斗行动、分队战斗行动(尾)等类型。

态势标绘主要包括添加(创建)、更新、显隐、删除和获取结果5种操作。

注意:可创建空的绘制图层,也可创建预设的绘制图层,如需创建预设绘制图层,则IsLoad, IsActive, Points 三个参数需要同时配置

下图是态势标绘效果:

  

参数说明

态势标绘可配置的参数如下表所示:

配置项 配置说明 值类型 备注
LayerOptionsName 图层配置对象名称 string 分析图层需配置为:AnalysisLayerOptions
DataSourceTypeName 数据源类型 string as_plot代表态势标绘
PlotType 标绘类型 int 具体的标绘类型见下表 标绘类型
PointColor 点颜色 R,G,B,A 颜色取值范围在0-1.0之间,如 "0.9,0.8,0.8,1.0"
PointSize 点大小 float 点大小取值范围在1-10之间
LineColor 线颜色 R,G,B,A 颜色取值范围在0-1.0之间,如 "0.9,0.8,0.8,1.0"
LineWidth 线宽度 float 线宽度取值范围在1-10之间
LineStyle 线样式 int 线显示样式,可控制实线/虚线显示。取值范围-32768-32767之间。-1-实线,其他-虚线。默认-1
PlaneColor 面颜色 R,G,B,A 颜色取值范围在0-1.0之间,如 "0.9,0.8,0.8,1.0"
LiftUp 抬高高度 float 相对高程为0位置抬高高度
BlockHeight 体块拉伸高度 float 设置拉伸高度后,可形成体块形状。单位m,默认0
PlotMode 标绘模式 string 标绘的编辑模式。MODE_EDIT-编辑模式;MODE_DRAW-绘制模式;MODE_NULL-默认配置
IsLoad 是否初始化加载点 bool 默认为false
IsActive 是否激活分析 bool 默认为true,表示是否可操作场景进行绘制
Points 坐标点集 x,y,z列表 需传入经度,纬度,高程坐标集,中间用;分隔,并以;结尾

注意:LiftUp参数可设置整个绘制体相对地形高程为0位置的抬高高度。如果需要直接贴地形绘制,则不需要设置该项的值,或者设为小于-999999.0的值。

标绘类型

态势标绘的类型主要由PlotType 参数控制,它是一个int类型的值。具体的取值可参考下表:

标绘类型 标绘名称 标绘类型 标绘名称
1000 点 2000 圆
2001 椭圆 2002 弓形
2003 扇形 2004 曲线面
2005 多边形 2006 矩形
2008 聚集地 2100 钳击
2101 直箭头 2102 细直箭头
2103 突击方向 2104 进攻方向
2105 进攻方向(尾) 2106 分队战斗行动
2107 分队战斗行动(尾) -- --

获取结果说明

几何图形绘制可以通过图层对象的GetLayerResult() 方法获取结果。获取的结果值对象参数如下表所示:

配置项 配置说明 值类型 备注
DataSourceTypeName 数据源类型 string as_plot代表态势标绘
Points 关键点坐标 x,y,z列表 鼠标点击场景形成的关键点的经度,纬度,高程坐标列表,中间用;分隔,并以;结尾

代码调用示例

Javascript调用

var mySelect = document.getElementById("Select");
var layerMap = [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null];
//创建态势标绘
function createPlot(){
    var value = mySelect.options[mySelect.selectedIndex].value;//从下拉框中获取标绘类型。默认为0-点
    if(layerMap[mySelect.selectedIndex] == null){
        var mlo = map.CreateLayerOptions("plot");//创建图层配置对象,任意名称
        mlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//图层配置对象名称, AnalysisLayerOptions代表分析图层数据配置
        mlo.AddConfig("DataSourceTypeName", "as_plot");//数据源类型,as_plot代表态势标绘
        mlo.AddConfig("PointColor","1,0,0,0.6");//点颜色
        mlo.AddConfig("PointSize","6");//点大小
        mlo.AddConfig("LineColor", "0,1,0,0.5");//线框颜色
        mlo.AddConfig("LineWidth", "10.0");//线宽(0-10)
        mlo.AddConfig("LineStyle", "0");//线样式。0-实线;1-虚线
        mlo.AddConfig("PlaneColor", "1,1,0.5,0.5");//面颜色
        mlo.AddConfig("LiftUp", "15");//抬高高度
        mlo.AddConfig("BlockHeight","5");//体块拉升高度。默认0
        mlo.AddConfig("PlotType", value);//标绘类型
        mlo.AddConfig("PlotMode","MODE_DRAW");//MODE_EDIT-编辑模式;MODE_DRAW-绘制模式;MODE_NULL-默认配置
        //是否默认加载标绘
        if (false)
        {
            mlo.AddConfig("IsActive", "false");//是否激活分析。初始化加载点时,需要关闭激活
            mlo.AddConfig("IsLoad","true");//点是否预先设置
            mlo.AddConfig("Points","120.218110432,30.2112257799,19.7037040638;120.218085454,30.2113541745,14.7999680499;120.218015835,30.2114286891,14.7999725109;120.217953149,30.2113819949,14.7999559436;|");//|表示单个图层中多个同类型点集分隔,注意标绘所有关键点的高度均一致,不可设置不同的高度值
        }                
        var plot = map.CreateLayer("AnalysisLayer", mlo);//创建分析图层,第一项参数必须为AnalysisLayer
        map.AddLayer(plot);//添加分析图层
        layerMap[mySelect.selectedIndex] = plot;
    }else{
        alert("已存在相同图层,请勿重复添加!");
    }
}
//更新标绘--添加模式
function modifyPlot(){
    var value = mySelect.options[mySelect.selectedIndex].value;//从下拉框中获取标绘类型。默认为0-点
    var mlo = map.CreateLayerOptions("plot");//创建图层配置对象,任意名称
    if(layerMap[mySelect.selectedIndex] != null){
        mlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//图层配置对象名称, AnalysisLayerOptions代表分析图层数据配置
        mlo.AddConfig("DataSourceTypeName", "as_plot");//数据源类型,as_plot代表态势标绘
        mlo.AddConfig("PointColor","1,0,0,0.6");//点颜色
        mlo.AddConfig("PointSize","6");//点大小
        mlo.AddConfig("LineColor", "0,1,0,0.5");//线框颜色
        mlo.AddConfig("LineWidth", "10.0");//线宽(0-10)
        mlo.AddConfig("LineStyle", "0");//线样式。0-实线;1-虚线
        mlo.AddConfig("PlaneColor", "1,1,0.5,0.5");//面颜色
        mlo.AddConfig("LiftUp", "15");//抬高高度
        mlo.AddConfig("BlockHeight","10");//体块拉升高度。默认0
        mlo.AddConfig("PlotType", value);//标绘类型
        mlo.AddConfig("PlotMode","MODE_DRAW");//MODE_EDIT-编辑模式;MODE_DRAW-绘制模式;MODE_NULL-默认配置
        layerMap[mySelect.selectedIndex].UpdateLayerOptions(mlo);//更新标绘
    }else{
        alert("图层不存在,无法更新!");
    }
}
//更新标绘--编辑模式
//编辑开始后,点击黄色的点可控制其位置;点击标绘表面,可整体拖拽标绘;右键为退出编辑模式
function editPlot(){
    var value = mySelect.options[mySelect.selectedIndex].value;//从下拉框中获取标绘类型。默认为0-点
    if(layerMap[mySelect.selectedIndex] != null){
        var mlo = map.CreateLayerOptions("plot");//创建图层配置对象,任意名称
        mlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//图层配置对象名称, AnalysisLayerOptions代表分析图层数据配置
        mlo.AddConfig("DataSourceTypeName", "as_plot");//数据源类型,as_plot代表态势标绘
        mlo.AddConfig("PointColor","1,1,1,0.6");//点颜色
        mlo.AddConfig("PointSize","5");//点大小
        mlo.AddConfig("LineColor", "0,0,0,0.5");//线框颜色
        mlo.AddConfig("LineWidth", "10.0");//线宽(0-10)
        //mlo.AddConfig("LineStyle", "3");//线样式 1 2 3 4 5
        mlo.AddConfig("PlaneColor", "1,1,0.5,0.5");//面颜色
        mlo.AddConfig("LiftUp", "30");//抬高高度
        mlo.AddConfig("BlockHeight","50");//体块拉升高度。默认0
        mlo.AddConfig("PlotType", value);//标绘类型
        mlo.AddConfig("PlotMode","MODE_EDIT");//MODE_EDIT-编辑模式;MODE_DRAW-绘制模式;MODE_NULL-默认配置
        layerMap[mySelect.selectedIndex].UpdateLayerOptions(mlo);//更新标绘
    }else{
        alert("图层不存在,无法更新!");
    }
}
//获取标绘结果
function getPlotResult(){
    if(layerMap[mySelect.selectedIndex] != null){
        var result = layerMap[mySelect.selectedIndex].GetLayerResult();//获取图层结果
        if(result.GetConfigValueByKey("DataSourceTypeName") == "as_plot"){
            var points = result.GetConfigValueByKey("Points");//获取标绘结果
            alert("Points:" + points);
        }
    }else{
        alert("图层不存在,无法获取结果!");
    }
}
//删除标绘
function clearPlot(){
    if(layerMap[mySelect.selectedIndex] != null){
        map.RemoveLayer(layerMap[mySelect.selectedIndex]);//删除标绘
        layerMap[mySelect.selectedIndex] = null;
    }else{
        alert("图层不存在,无需删除!");
    }
}

C++调用

BaseObjectCOMLib::ILayerObjectPtr plotLayer;//标绘图层
CComboBox m_combo;//下拉框对象
std::string value;//下拉框内容
std::string plotType;//标绘类型

//加载标绘
void Cf3c1PlotDlg::loadPlot()
{
    ConfigOptionsCOMLib::ILayerOptionsPtr tlo = (ConfigOptionsCOMLib::ILayerOptionsPtr)map->CreateLayerOptions("plot"); //创建图层配置对象,任意名称
    tlo->AddConfig("LayerOptionsName", "AnalysisLayerOptions");//图层配置对象名称, AnalysisLayerOptions代表分析图层数据配置
    tlo->AddConfig("DataSourceTypeName", "as_plot");//数据源类型,as_plot代表态势标绘
    tlo->AddConfig("PointColor","1,0,0,0.6");//点颜色
    tlo->AddConfig("PointSize","6");//点大小
    tlo->AddConfig("LineColor", "0,1,0,0.5");//线框颜色
    tlo->AddConfig("LineWidth", "10.0");//线宽(0-10)
    tlo->AddConfig("LineStyle", "0");//线样式。0-实线;1-虚线
    tlo->AddConfig("PlaneColor", "1,1,0.5,0.5");//面颜色
    tlo->AddConfig("LiftUp", "15");//抬高高度
    tlo->AddConfig("BlockHeight","5");//体块拉升高度。默认0
    tlo->AddConfig("PlotType", plotType.c_str());//标绘类型
    tlo->AddConfig("PlotMode","MODE_DRAW");//MODE_EDIT-编辑模式;MODE_DRAW-绘制模式;MODE_NULL-默认配置
    if (FALSE)
    {
        tlo->AddConfig("IsActive", "false");//是否激活分析。初始化加载点时,需要关闭激活
        tlo->AddConfig("IsLoad","true");//点是否预先设置
        tlo->AddConfig("Points","120.218110432,30.2112257799,19.7037040638;120.218085454,30.2113541745,14.7999680499;120.218015835,30.2114286891,14.7999725109;120.217953149,30.2113819949,14.7999559436;|");//|表示单个图层中多个同类型点集分隔,注意标绘所有关键点的高度均一致,不可设置不同的高度值
    }
    plotLayer = map->CreateLayer("AnalysisLayer", tlo);//创建分析图层,第一项参数必须为AnalysisLayer
    map->AddLayer(plotLayer);//添加分析图层
}

//更新标绘
void Cf3c1PlotDlg::updataPlot(std::string plotMode)
{
    ConfigOptionsCOMLib::ILayerOptionsPtr tlo = (ConfigOptionsCOMLib::ILayerOptionsPtr)map->CreateLayerOptions("plot"); //创建图层配置对象,任意名称
    tlo->AddConfig("LayerOptionsName", "AnalysisLayerOptions");//图层配置对象名称, AnalysisLayerOptions代表分析图层数据配置
    tlo->AddConfig("DataSourceTypeName", "as_plot");//数据源类型,as_plot代表态势标绘
    if(plotMode == "MODE_DRAW")
    {
        tlo->AddConfig("PointColor","1,0,0,0.6");//点颜色
        tlo->AddConfig("PointSize","6");//点大小
        tlo->AddConfig("LineColor", "0,1,0,0.5");//线框颜色
        tlo->AddConfig("LineWidth", "10.0");//线宽(0-10)
        tlo->AddConfig("LineStyle", "0");//线样式。0-实线;1-虚线
        tlo->AddConfig("PlaneColor", "1,1,0.5,0.5");//面颜色
        tlo->AddConfig("LiftUp", "15");//抬高高度
        tlo->AddConfig("BlockHeight","10");//体块拉升高度。默认0
    }
    else if(plotMode == "MODE_EDIT")
    {
        tlo->AddConfig("PointColor","1,1,1,0.6");//点颜色
        tlo->AddConfig("PointSize","5");//点大小
        tlo->AddConfig("LineColor", "0,0,0,0.5");//线框颜色
        tlo->AddConfig("LineWidth", "10.0");//线宽(0-10)
        //tlo->AddConfig("LineStyle", "3");//线样式 1 2 3 4 5
        tlo->AddConfig("PlaneColor", "1,1,0.5,0.5");//面颜色
        tlo->AddConfig("LiftUp", "30");//抬高高度
        tlo->AddConfig("BlockHeight","50");//体块拉升高度。默认0
    }
    else
    {
        return;
    }
    tlo->AddConfig("PlotType", plotType.c_str());//标绘类型
    tlo->AddConfig("PlotMode",plotMode.c_str());//MODE_EDIT-编辑模式;MODE_DRAW-绘制模式;MODE_NULL-默认配置
    plotLayer->UpdateLayerOptions(tlo);//更新标绘
}

//获取标绘类型
void Cf3c1PlotDlg::OnCbnSelchangeCombo1()
{
    CString m_paramname;
    m_combo.GetLBText(m_combo.GetCurSel(),m_paramname);
    value = CT2A(m_paramname.GetBuffer());
    if(value =="点")
    {
        plotType = "1000";
    }
    else if(value =="圆")
    {
        plotType = "2000";
    }
    else if(value =="椭圆")
    {
        plotType = "2001";
    }
    else if(value =="弓形")
    {
        plotType = "2002";
    }
    else if(value =="扇形")
    {
        plotType = "2003";
    }
    else if(value =="曲线面")
    {
        plotType = "2004";
    }
    else if(value =="多边形")
    {
        plotType = "2005";
    }
    else if(value =="矩形")
    {
        plotType = "2006";
    }
    else if(value =="聚集地")
    {
        plotType = "2008";
    }
    else if(value =="钳击")
    {
        plotType = "2100";
    }
    else if(value =="直箭头")
    {
        plotType = "2101";
    }
    else if(value =="细直箭头")
    {
        plotType = "2102";
    }
    else if(value =="突击方向")
    {
        plotType = "2103";
    }
    else if(value =="进攻方向")
    {
        plotType = "2104";
    }
    else if(value =="进攻方向(尾)")
    {
        plotType = "2105";
    }
    else if(value =="分队战斗行动")
    {
        plotType = "2106";
    }
    else if(value =="分队战斗行动(尾)")
    {
        plotType = "2107";
    }
}

//获取下拉框内容
void Cf3c1PlotDlg::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.AddString(L"曲线面");
    m_combo.AddString(L"多边形");
    m_combo.AddString(L"矩形");
    m_combo.AddString(L"聚集地");
    m_combo.AddString(L"钳击");
    m_combo.AddString(L"直箭头");
    m_combo.AddString(L"细直箭头");
    m_combo.AddString(L"突击方向");
    m_combo.AddString(L"进攻方向");
    m_combo.AddString(L"进攻方向(尾)");
    m_combo.AddString(L"分队战斗行动");
    m_combo.AddString(L"分队战斗行动(尾)");
    m_combo.SetCurSel(-1);
}

//创建标绘
void Cf3c1PlotDlg::OnBnClickedcreateplot()
{
    if(plotLayer)
    {
        return;
    }
    loadPlot();
}

//开启标绘添加模式
void Cf3c1PlotDlg::OnBnClickedmodifyplot()
{
    if(!plotLayer)
    {
        return;
    }
    updataPlot("MODE_DRAW");
}

//开启标绘编辑模式
void Cf3c1PlotDlg::OnBnClickededitplot()
{
    if(!plotLayer)
    {
        return;
    }
    updataPlot("MODE_EDIT");
}

//获取标绘结果
void Cf3c1PlotDlg::OnBnClickedgetplotresult()
{
    if(!plotLayer)
    {
        return;
    }
    ConfigOptionsCOMLib::ILayerOptionsPtr opt = plotLayer->GetLayerResult();
    std::string DataSourceTypeName = opt->GetConfigValueByKey("DataSourceTypeName");//获取数据源类型
    if(DataSourceTypeName == "as_plot")
    {
        CString Points = opt->GetConfigValueByKey("Points");//获取标绘坐标
        MessageBox(L"Points:"+ Points);
    }
}

//删除标绘
void Cf3c1PlotDlg::OnBnClickedclearplot()
{
    if(!plotLayer)
    {
        return;
    }
    map->RemoveLayer(plotLayer);//删除标绘
    plotLayer = NULL;
}

C#调用

ILayerObject[] layerMap = {null, null, null, null, null, null, null, null, null, 
null, null, null, null, null, null, null, null, null, null};//标绘对象
//获取标绘类型
private void GetPlotType()
{
    Console.WriteLine("Text:" + comboBox1.SelectedItem.ToString());
    switch (comboBox1.SelectedItem.ToString())
    {
        case "点":
            plotType = 1000;
            plotIndex = 0;
            break;
        case "圆":
            plotType = 2000;
            plotIndex = 1;
            break;
        case "椭圆":
            plotType = 2001;
            plotIndex = 2;
            break;
        case "弓形":
            plotType = 2002;
            plotIndex = 3;
            break;
        case "扇形":
            plotType = 2003;
            plotIndex = 4;
            break;
        case "曲线面":
            plotType = 2004;
            plotIndex = 5;
            break;
        case "多边形":
            plotType = 2005;
            plotIndex = 6;
            break;
        case "矩形":
            plotType = 2006;
            plotIndex = 7;
            break;
        case "聚集地":
            plotType = 2008;
            plotIndex = 8;
            break;
        case "钳击":
            plotType = 2100;
            plotIndex = 9;
            break;
        case "直箭头":
            plotType = 2101;
            plotIndex = 10;
            break;
        case "细直箭头":
            plotType = 2102;
            plotIndex = 11;
            break;
        case "突击方向":
            plotType = 2103;
            plotIndex = 12;
            break;
        case "进攻方向":
            plotType = 2104;
            plotIndex = 13;
            break;
        case "进攻方向(尾)":
            plotType = 2105;
            plotIndex = 14;
            break;
        case "分队战斗行动":
            plotType = 2106;
            plotIndex = 15;
            break;
        case "分队战斗行动(尾)":
            plotType = 2107;
            plotIndex = 16;
            break;
    }
}

//加载态势标绘
private void loadPlot()
{
    if (layerMap[plotIndex] == null)
    {
        var mlo = map.CreateLayerOptions("plot");//创建图层配置对象,任意名称
        mlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//图层配置对象名称, AnalysisLayerOptions代表分析图层数据配置
        mlo.AddConfig("DataSourceTypeName", "as_plot");//数据源类型,as_plot代表态势标绘
        mlo.AddConfig("PointColor", "1,0,0,0.6");//点颜色
        mlo.AddConfig("PointSize", "6");//点大小
        mlo.AddConfig("LineColor", "0,1,0,0.5");//线框颜色
        mlo.AddConfig("LineWidth", "10.0");//线宽(0-10)
        mlo.AddConfig("LineStyle", "0");//线样式。0-实线;1-虚线
        mlo.AddConfig("PlaneColor", "1,1,0.5,0.5");//面颜色
        mlo.AddConfig("LiftUp", "15");//抬高高度
        mlo.AddConfig("BlockHeight", "5");//体块拉升高度。默认0
        mlo.AddConfig("PlotType", plotType.ToString());//标绘类型
        mlo.AddConfig("PlotMode", "MODE_DRAW");//MODE_EDIT-编辑模式;MODE_DRAW-绘制模式;MODE_NULL-默认配置
        //以下6个参数对钳击、进攻方向、进攻方向(尾)、分队战斗行动和分队战斗行动(尾)起效
        mlo.AddConfig("HeadHeightCtrl", "0.18");//进攻方向箭头长度控制因子,默认值0.18
        mlo.AddConfig("HeadWidthCtrl", "0.3");//进攻方向箭头宽度控制因子,默认值0.3
        mlo.AddConfig("NeckHeightCtrl", "0.85");//进攻方向脖子长度控制因子,默认值0.85
        mlo.AddConfig("NeckWidthCtrl", "0.15");//进攻方向脖子宽度控制因子,默认值0.15
        mlo.AddConfig("TailHeightCtrl", "0.8");//进攻方向箭头尾部长度控制因子,默认值0.8
        mlo.AddConfig("TailWidthCtrl", "0.1");//进攻方向箭头尾部宽度控制因子,默认值0.1
        if (false)
        {
            mlo.AddConfig("IsActive", "false");//是否激活分析。初始化加载点时,需要关闭激活
            mlo.AddConfig("IsLoad", "true");//点是否预先设置
            mlo.AddConfig("Points", "120.218110432,30.2112257799,19.7037040638;120.218085454,30.2113541745,14.7999680499;120.218015835,30.2114286891,14.7999725109;120.217953149,30.2113819949,14.7999559436;|");//|表示单个图层中多个同类型点集分隔,注意标绘所有关键点的高度均一致,不可设置不同的高度值
        }
        var plot = map.CreateLayer("AnalysisLayer", mlo);//创建分析图层,第一项参数必须为AnalysisLayer
        map.AddLayer(plot);//添加分析图层
        layerMap[plotIndex] = plot;
    }
    else
    {
        MessageBox.Show("已存在相同图层,请勿重复添加!");
    }
}

//创建标绘
private void createPlot_Click(object sender, EventArgs e)
{
    GetPlotType();
    loadPlot();
}
//更新标绘--添加模式
private void modifyPlot_Click(object sender, EventArgs e)
{
    GetPlotType();
    ILayerOptions mlo = map.CreateLayerOptions("plot");//创建图层配置对象,任意名称
    if (layerMap[plotIndex] != null)
    {
        mlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//图层配置对象名称, AnalysisLayerOptions代表分析图层数据配置
        mlo.AddConfig("DataSourceTypeName", "as_plot");//数据源类型,as_plot代表态势标绘
        mlo.AddConfig("PointColor", "1,0,0,0.6");//点颜色
        mlo.AddConfig("PointSize", "6");//点大小
        mlo.AddConfig("LineColor", "0,1,0,0.5");//线框颜色
        mlo.AddConfig("LineWidth", "10.0");//线宽(0-10)
        mlo.AddConfig("LineStyle", "0");//线样式。0-实线;1-虚线
        mlo.AddConfig("PlaneColor", "1,1,0.5,0.5");//面颜色
        mlo.AddConfig("LiftUp", "15");//抬高高度
        mlo.AddConfig("BlockHeight", "10");//体块拉升高度。默认0
        mlo.AddConfig("PlotType", plotType.ToString());//标绘类型
        mlo.AddConfig("PlotMode", "MODE_DRAW");//MODE_EDIT-编辑模式;MODE_DRAW-绘制模式;MODE_NULL-默认配置
        layerMap[plotIndex].UpdateLayerOptions(mlo);//更新标绘
    }
    else
    {
        MessageBox.Show("图层不存在,无法更新!");
    }
}
//开启标绘编辑模式
private void editPlot_Click(object sender, EventArgs e)
{
    GetPlotType();
    if (layerMap[plotIndex] != null)
    {
        var mlo = map.CreateLayerOptions("plot");//创建图层配置对象,任意名称
        mlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//图层配置对象名称, AnalysisLayerOptions代表分析图层数据配置
        mlo.AddConfig("DataSourceTypeName", "as_plot");//数据源类型,as_plot代表态势标绘
        mlo.AddConfig("PointColor", "1,1,1,0.6");//点颜色
        mlo.AddConfig("PointSize", "5");//点大小
        mlo.AddConfig("LineColor", "0,0,0,0.5");//线框颜色
        mlo.AddConfig("LineWidth", "10.0");//线宽(0-10)
        //mlo.AddConfig("LineStyle", "3");//线样式 1 2 3 4 5
        mlo.AddConfig("PlaneColor", "1,1,0.5,0.5");//面颜色
        mlo.AddConfig("LiftUp", "30");//抬高高度
        mlo.AddConfig("BlockHeight", "50");//体块拉升高度。默认0
        mlo.AddConfig("PlotType", plotType.ToString());//标绘类型
        mlo.AddConfig("PlotMode", "MODE_EDIT");//MODE_EDIT-编辑模式;MODE_DRAW-绘制模式;MODE_NULL-默认配置
        layerMap[plotIndex].UpdateLayerOptions(mlo);//更新标绘
    }
    else
    {
        MessageBox.Show("图层不存在,无法更新!");
    }
}
//获取标绘结果
private void getPlotResult_Click(object sender, EventArgs e)
{
    GetPlotType();
    if (layerMap[plotIndex] != null)
    {
        ILayerOptions result = layerMap[plotIndex].GetLayerResult();//获取图层结果
        if (result.GetConfigValueByKey("DataSourceTypeName") == "as_plot")
        {
            string points = result.GetConfigValueByKey("Points");//获取标绘结果
            MessageBox.Show("Points:" + points);
        }
    }
    else
    {
        MessageBox.Show("图层不存在,无法获取结果!");
    }
}
//删除标绘
private void clearPlot_Click(object sender, EventArgs e)
{
    GetPlotType();
    if (layerMap[plotIndex] != null)
    {
        map.RemoveLayer(layerMap[plotIndex]);//删除标绘
        layerMap[plotIndex] = null;
    }
    else
    {
        MessageBox.Show("图层不存在,无需删除!");
    }
}

results matching ""

    No results matching ""