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 ""