2.2.10 退让分析


退让分析

退让分析是指在场景中绘制一条道路中心线,然后根据设置的道路退让信息和建筑退让信息,绘制整个退让分析绘制体,并渲染违规建筑。

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

注意:可创建空的分析图层,也可创建预设的分析图层,如需创建预设分析图层,则IsLoad ,IsActive ,StartPointEndPoint 四个参数需要同时配置。

下图是退让分析效果:

  

参数说明

退让分析可配置的参数如下表所示:

配置项 配置说明 值类型 备注
LayerOptionsName 图层配置对象名称 string 分析图层需配置为:AnalysisLayerOptions
DataSourceTypeName 数据源类型 string as_concession代表退让分析
PointColor 点颜色 R,G,B,A 颜色取值范围在0-1.0之间,如 "0.9,0.8,0.8,1.0"
PointSize 点大小 float 点大小取值范围在1-10之间
StartPointName 中心线起点名称 x,y,z 中心线起点名称。默认:起点
EndPointName 中心线目标点名称 x,y,z 中心线目标点名称。默认:终点
CenterLineColor 中心线颜色 R,G,B,A 颜色取值范围在0-1.0之间,如 "0.9,0.8,0.8,1.0"
CenterLineWidth 中心线宽度 float 线宽度取值范围在1-10之间
CenterLineStipple 中心线样式 short 线显示样式,可控制实线/虚线显示。取值范围-32768-32767之间。-1-实线,其他-虚线。默认-1
DisplayType 退让类型 int 退让分析类型。0:同时启用,1:道路面退让,2:建筑退让。默认为0
DisplayDirection 退让方向 int 沿着退让中心线进行退让的方向。0:两边退让;1:向左退让;2:向右退让。默认为0
BottomSurfaceColor 底面颜色 R,G,B,A 退让底面显示颜色。颜色取值范围在0-1.0之间,如 "0.9,0.8,0.8,1.0"
TextVisible 是否显示文字 bool 默认为false。如为false,则TextLiftUpStyle配置都无效
TextLiftUp 文字抬高高度 float 默认为0.0
Style 添加样式 string 配置文字样式,配置信息参考文字样式配置
ModelLayersID 图层ID列表 int列表 -1则代表分析所有图层,若为多个图层,可使用xx,xx,xx
此种格式
RCLineColor 道路退让线颜色 R,G,B,A 道路退让线颜色。颜色取值范围在0-1.0之间,如 "0.9,0.8,0.8,1.0"。默认:红色
RCLineWidth 道路退让线宽度 float 线宽度取值范围在1-10之间。默认:2
RCLineStipple 道路退让线样式 short 道路退让线显示样式,可控制实线/虚线显示。取值范围-32768-32767之间。-1-实线,其他-虚线。默认-1
LRCDistance 左侧道路退让距离 float 左侧道路退让到中心线的距离。默认:10m
RRCDistance 右侧道路退让距离 float 右侧道路退让到中心线的距离。默认:10m
LRCRenderingColor 左侧违规道路显示颜色 R,G,B,A 左侧违规道路显示颜色。颜色取值范围在0-1.0之间,如 "0.9,0.8,0.8,1.0"。默认:红色
RRCRenderingColor 右侧违规道路显示颜色 R,G,B,A 右侧违规道路显示颜色。颜色取值范围在0-1.0之间,如 "0.9,0.8,0.8,1.0"。默认:红色
BCLineColor 建筑退让线颜色 R,G,B,A 建筑退让线颜色。颜色取值范围在0-1.0之间,如 "0.9,0.8,0.8,1.0"。默认:红色
RCLineWidth 建筑退让线宽度 float 线宽度取值范围在1-10之间。默认:2
BCSurfaceColor 建筑退让面颜色 R,G,B,A 建筑退让面颜色。颜色取值范围在0-1.0之间,如 "0.0,0.0,1.0,1.0"。默认:蓝色
LBCDistance 左侧建筑退让距离 float 左侧建筑退让到中心线的距离。默认:8m
RBCDistance 右侧建筑退让距离 float 右侧建筑退让到中心线的距离。默认:8m
LBCHeight 左侧建筑退让高度 float 左侧建筑退让面高度。默认:3m
RBCHeight 右侧建筑退让高度 float 右侧建筑退让面高度。默认:3m
LBCRenderingColor 左侧违规建筑显示颜色 R,G,B,A 左侧违规建筑显示颜色。颜色取值范围在0-1.0之间,如 "0.9,0.8,0.8,1.0"。默认:红色
RBCRenderingColor 右侧违规建筑显示颜色 R,G,B,A 右侧违规建筑显示颜色。颜色取值范围在0-1.0之间,如 "0.9,0.8,0.8,1.0"。默认:红色
LOverLapColor 左侧重叠部分显示类型 int 左侧道路退让和建筑退让重叠部分颜色显示类型。0-融合显示;1-显示道路退让颜色;2-显示建筑退让颜色,默认:0
ROverLapColor 右侧重叠部分显示类型 int 左侧道路退让和建筑退让重叠部分颜色显示类型。0-融合显示;1-显示道路退让颜色;2-显示建筑退让颜色,默认:0
IsLoad 是否初始化加载点 bool 默认为false
IsActive 是否激活分析 bool 默认为true,表示是否可操作场景进行绘制
StartPoint 中心线起点坐标 x,y,z 需传入经度,纬度,高程坐标
EndPoint 中心线目标点坐标 x,y,z 需传入经度,纬度,高程坐标
IsWorld 是否世界坐标点 bool 传入的坐标是否是世界坐标。true-世界坐标,false-经纬度坐标。默认为true
NonIntersect 非相交图层 int列表 该分析与场景哪些类型图层不相交。1-分析,2-地形,3-模型,4-矢量(未贴地),5-矢量模板阴影体,6-矢量(贴地),7-倾斜摄影。默认为1,即与除分析之外所有图层都相交

获取结果说明

退让分析可以通过图层对象的GetLayerResult() 方法获取结果。获取的结果值对象参数如下表所示:

配置项 配置说明 值类型 备注
DataSourceTypeName 数据源类型 string as_concession代表退让分析
IsSuccess 是否创建成功 bool 默认为false
StartPoint 中心线起点坐标 x,y,z 起始点的经度,纬度,高程坐标
EndPoint 中心线目标点坐标 x,y,z列表 目标点的经度,纬度,高程坐标
LRCDistance 左侧道路退让距离 float 左侧道路退让到中心线的距离
RRCDistance 右侧道路退让距离 float 右侧道路退让到中心线的距离
LBCDistance 左侧建筑退让距离 float 左侧建筑退让到中心线的距离
RBCDistance 右侧建筑退让距离 float 右侧建筑退让到中心线的距离
LBCHeight 左侧建筑退让高度 float 左侧建筑退让面高度
RBCHeight 右侧建筑退让高度 float 右侧建筑退让面高度
LRCIllegalInfo 左侧违规建筑信息 float 左侧违规建筑的中心点坐标。多个建筑中间以";:"隔开
RRCIllegalInfo 右侧违规建筑信息 float 左侧违规建筑的中心点坐标。多个建筑中间以";:"隔开

代码调用示例

Javascript调用

var concessionLayer;
function createConcession(){
    if(concessionLayer == null)
    {
        var tlo = map.CreateLayerOptions("concession");//创建分析图层配置,给配置起个名称,任意名称
        tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions"); // 创建配置类型, AnalysisLayerOptions代表分析图层数据配置
        tlo.AddConfig("DataSourceTypeName", "as_concession");//数据源类型,as_concession代表退让分析
        tlo.AddConfig("PointColor","1,0,0,1.0");//中心线两端点的颜色,默认红色
        tlo.AddConfig("PointSize","5");//中心线两端点的大小,默认为5
        tlo.AddConfig("StartPointName","起点");//中心线起点名称,默认名为"起点"
        tlo.AddConfig("EndPointName","终点");//中心线终点名称,默认名为"终点"
        tlo.AddConfig("CenterLineColor","0,1,0,1");//中心线颜色,默认绿色
        tlo.AddConfig("CenterLineWidth","2.0");//中心线线宽,默认为1
        tlo.AddConfig("CenterLineStipple","-1");//线类型,-1为虚线,1为实线
        tlo.AddConfig("DisplayType","0");//退让类型。0:同时启用,1:道路面退让,2:建筑退让。默认为0
        tlo.AddConfig("DisplayDirection","0");//显示的退让方向:0:两边;1:左边;2:右边。默认为0,以中心线的起点到终点的方向来划分左右

        tlo.AddConfig("BottomSurfaceColor","1.0,1.0,0.0,0.5");//地面颜色
        tlo.AddConfig("TextVisible","true");//文字是否可见
        tlo.AddConfig("TextLiftUp","0");//文字抬高

        //道路退让属性,只有DisplayType为0或者1时生效
        tlo.AddConfig("RCLineColor","1,0,0,1");//道路退让线颜色,默认红色
        tlo.AddConfig("RCLineWidth","2");//道路退让线宽度,默认2
        tlo.AddConfig("RCLineStipple","1");//道路退让线线型,-1:虚线,1:实线
        tlo.AddConfig("LRCDistance","20");//左侧道路退让距离,默认10m
        tlo.AddConfig("RRCDistance","20");//右侧道路退让距离,默认10m
        tlo.AddConfig("LRCRenderingColor","1.0,0.0,0.0,0.5");//左侧道路退让违规建筑渲染颜色,默认红色
        tlo.AddConfig("RRCRenderingColor","1.0,0.0,0.0,0.5");//右侧道路退让违规建筑渲染颜色,默认红色

        //建筑退让属性,只有DisplayType为0或者2时生效
        tlo.AddConfig("BCLineColor","0,0,1,1");//建筑退让线框颜色。默认红色
        tlo.AddConfig("BCSurfaceColor","0,0,1,0.5");//建筑退让面颜色。默认蓝色
        tlo.AddConfig("BCLineWidth","2");//建筑退让面线框宽度。默认2
        tlo.AddConfig("LBCDistance","10");//左侧建筑退让距离。默认8m
        tlo.AddConfig("RBCDistance","10");//右侧建筑退让距离。默认8m
        tlo.AddConfig("LBCHeight","3");//左侧建筑退让高度。默认3m
        tlo.AddConfig("RBCHeight","3");//右侧建筑退让高度。默认3m
        tlo.AddConfig("LBCRenderingColor","0.0,1.0,0.0,0.5");//左侧违规建筑渲染颜色,默认绿色
        tlo.AddConfig("RBCRenderingColor","0.0,1.0,0.0,0.5");//右侧违规建筑渲染颜色,默认绿色

        //渲染重叠部分的建筑设置,DisplayType为0时,建筑退让违规建筑与道路退让违规建筑重合时渲染设置
        tlo.AddConfig("LOverLapColor","2");//左侧重叠部分渲染颜色设置:0-融合;1-显示道路退让颜色;2-显示建筑退让颜色,默认:0
        tlo.AddConfig("ROverLapColor","2");//右侧重叠部分渲染颜色设置:0-融合-1-显示道路退让颜色;2-显示建筑退让颜色,默认:0

        //参与退让分析的模型ID
        tlo.AddConfig("ModelLayersID","-1");//参与退让分析的模型图层ID,默认所有模型

        //创建文字符号
        var pSymbol = map.CreateSymbol("AnalysisTextSymbol"); //创建文字符号,分析文字为:AnalysisTextSymbol
        pSymbol.AddConfig("FillingColor", "1.0, 0.0, 0.0, 1.0"); //设置文字颜色(RGBA)
        pSymbol.AddConfig("Font", "C:\\WINDOWS\\Fonts\\STXIHEI.TTF"); //设置字体类型,字体文件一定要存在           
        pSymbol.AddConfig("Size", "40");//字体精度大小
        pSymbol.AddConfig("CharacterSize", "7");//文字大小
        pSymbol.AddConfig("CharacterMode", "1");//取值 1 -- 始终朝向相机
        pSymbol.AddConfig("AlignmentMode", "5");//文字对齐方式
        pSymbol.AddConfig("AxisAlignment", "6");//旋转轴 0 - 7 , 6: 自动
        pSymbol.AddConfig("RemoveDuplicateLabels", "false"); //去重复            
        pSymbol.AddConfig("IsEmbolden", "false");//字体是否加粗
        pSymbol.AddConfig("IsTransform", "true");//字体是否为斜体
        pSymbol.AddConfig("IsUnderline", "false");//字体是否有下划线
        pSymbol.AddConfig("IsBack", "false");//是否设置背景色
        pSymbol.AddConfig("BackColor", "0,1.0,1.0,1"); //背景颜色,是否设置背景色为true有效
        pSymbol.AddConfig("FieldPrecision", "2");//字段精度,最高为小数点后18位
        pSymbol.AddConfig("IsDepthTest","true");//是否开启深度测试。默认为true
        //创建样式
        var pStyle = map.CreateStyle("Text"); //创建Style,名字可以任意
        pStyle.AddSymbol("AnalysisTextSymbol", pSymbol.GetConfig()); //将符号对象添加到样式,第一参数为符号类型

        //将样式添加到图层配置里
        tlo.AddConfig("Style", pStyle.GetConfig()); //第一参必须为Style字符串,第二参为上面创建的Style的配置信息
        concessionLayer= map.CreateLayer("AnalysisLayer", tlo); ////创建分析图层,第一项参数必须为AnalysisLayer
        map.AddLayer(concessionLayer); ///添加分析图层
    }else{
        alert("请勿重复创建!");
    }
}

//更新退让分析
function UpdateConcession(){
    var tlo = map.CreateLayerOptions("concession");//创建分析图层配置,给配置起个名称,任意名称
    tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");// 创建配置类型, AnalysisLayerOptions代表分析图层数据配置
    tlo.AddConfig("DataSourceTypeName", "as_concession");//数据源类型,as_concession代表退让分析
    tlo.AddConfig("PointColor","1,0,0,1.0");//中心线两端点的颜色,默认红色
    tlo.AddConfig("PointSize","5");//中心线两端点的大小,默认为5
    tlo.AddConfig("StartPointName","起点");//中心线第一个点的名称--默认起点
    tlo.AddConfig("EndPointName","终点");//中心线第二个点的名称--默认终点
    tlo.AddConfig("CenterLineColor","0,1,0,1");//中心线颜色--默认绿色
    tlo.AddConfig("CenterLineWidth","2.0");//中心线线宽--默认1
    tlo.AddConfig("CenterLineStipple","-1");//中心线线型--“-1--虚线 ;1--实线”
    tlo.AddConfig("DisplayType","0");//退让类型:0-混合;1-道路;2-建筑。-- 默认:0-混合
    tlo.AddConfig("DisplayDirection","0");//显示的退让方向:0-两边;1-左边;2-右边。-- 默认:0-两边都显示(注:左右是以中心线的起点到终点的方向为正方向分的左右)

    tlo.AddConfig("BottomSurfaceColor","1.0,1.0,0.0,0.5");//中心线所在底面颜色配置,,新增
    tlo.AddConfig("TextVisible","true");//文字可见性
    tlo.AddConfig("TextLiftUp","0");//文字抬高

    //道路退让属性
    tlo.AddConfig("RCLineColor","1,0,0,1");//道路退让线颜色--默认红色
    tlo.AddConfig("RCLineWidth","2");//道路退让线宽度--默认2
    tlo.AddConfig("RCLineStipple","1");//道路退让线线型--“-1--虚线 ;1--实线”
    tlo.AddConfig("LRCDistance","10");//左侧道路退让距离--默认10m
    tlo.AddConfig("RRCDistance","10");//右侧道路退让距离--默认10m
    tlo.AddConfig("LRCRenderingColor","0.0,0.0,0.0,0.5");//左侧道路退让违规建筑渲染颜色--默认红色
    tlo.AddConfig("RRCRenderingColor","0.0,0.0,0.0,0.5");//右侧道路退让违规建筑渲染颜色--默认红色

    //建筑退让属性
    tlo.AddConfig("BCLineColor","0,0,1,1");//建筑退让面线框颜色--默认红色
    tlo.AddConfig("BCSurfaceColor","0,0,1,0.5");//建筑退让面颜色--默认蓝色
    tlo.AddConfig("BCLineWidth","2");//建筑退让面线框宽度--默认2
    tlo.AddConfig("LBCDistance","5");//左侧建筑退让距离--默认8m
    tlo.AddConfig("RBCDistance","5");//右侧建筑退让距离--默认8m
    tlo.AddConfig("LBCHeight","3");//左侧建筑退让高度--默认3m
    tlo.AddConfig("RBCHeight","3");//右侧建筑退让高度--默认3m
    tlo.AddConfig("LBCRenderingColor","0.0,1.0,1.0,0.5");//左侧建筑退让违规建筑渲染颜色--默认绿色
    tlo.AddConfig("RBCRenderingColor","0.0,1.0,1.0,0.5");//右侧建筑退让违规建筑渲染颜色--默认绿色

    //渲染重叠部分的建筑设置
    tlo.AddConfig("LOverLapColor","2");//左侧重叠部分渲染颜色设置:0-融合、1-道路退让在前、2-建筑退让在前;--默认:0-融合
    tlo.AddConfig("ROverLapColor","2");//右侧重叠部分渲染颜色设置:0-融合、1-道路退让在前、2-建筑退让在前;--默认:0-融合
    concessionLayer.UpdateLayerOptions(tlo);
}

//获取退让分析结果
function GetConcessionLayer() {
    var opt = concessionLayer.GetLayerResult();//获取图层结果
    //判断当前图层数据源类型
    if(opt.GetConfigValueByKey("DataSourceTypeName") == "as_concession")
    {
        var IsSuccess = opt.GetConfigValueByKey("IsSuccess");//是否绘制成功
        var StartPoint = opt.GetConfigValueByKey("StartPoint");//中心线起点坐标
        var EndPoint = opt.GetConfigValueByKey("EndPoint");//中心线终点坐标
        var LRCDistance = opt.GetConfigValueByKey("LRCDistance");//左侧道路退让距离
        var RRCDistance = opt.GetConfigValueByKey("RRCDistance");//右侧道路退让距离
        var LBCDistance = opt.GetConfigValueByKey("LBCDistance");//左侧建筑退让距离
        var RBCDistance = opt.GetConfigValueByKey("RBCDistance");//右侧建筑退让距离
        var LBCHeight = opt.GetConfigValueByKey("LBCHeight");//左侧建筑退让高度
        var RBCHeight = opt.GetConfigValueByKey("LBCHeight");//左侧建筑退让高度
        var LRCIllegalInfo = opt.GetConfigValueByKey("LRCIllegalInfo");//左侧道路退让违规建筑信息--建筑名称和建筑中心点坐标;
        var RRCIllegalInfo = opt.GetConfigValueByKey("RRCIllegalInfo"); //右侧道路退让违规建筑信息--建筑名称和建筑中心点坐标
        alert("IsSuccess:" + IsSuccess + "; StartPoint:" + StartPoint + "; EndPoint:" + EndPoint);
        alert("LRCDistance:" + LRCDistance + "; RRCDistance:" + RRCDistance + "; LBCDistance:" + LBCDistance  + "; RBCDistance:" + RBCDistance);
        alert("LBCHeight:" + LBCHeight + "RBCHeight:" + RBCHeight +"; LRCIllegalInfo:" + LRCIllegalInfo + "; RRCIllegalInfo:" + RRCIllegalInfo);
    }
}

//移除退让分析
function RemoveConcession(){
    map.RemoveLayer(concessionLayer);
    concessionLayer=null;
}

C++调用

BaseObjectCOMLib::ILayerObjectPtr concessionLayer;//退让分析图层对象
//创建退让分析
void Cas_concessionDlg::OnBnClickedcreateconcession()
{
    if(concessionLayer == NULL)
    {
        ConfigOptionsCOMLib::ILayerOptionsPtr tlo = map->CreateLayerOptions("concession");//创建分析图层配置,给配置起个名称,任意名称
        tlo->AddConfig("LayerOptionsName", "AnalysisLayerOptions"); // 创建配置类型, AnalysisLayerOptions代表分析图层数据配置
        tlo->AddConfig("DataSourceTypeName", "as_concession");//数据源类型,as_concession代表退让分析
        tlo->AddConfig("PointColor","1,0,0,1.0");//中心线两端点的颜色,默认红色
        tlo->AddConfig("PointSize","5");//中心线两端点的大小,默认为5
        tlo->AddConfig("StartPointName","起点");//中心线起点名称,默认名为"起点"
        tlo->AddConfig("EndPointName","终点");//中心线终点名称,默认名为"终点"
        tlo->AddConfig("CenterLineColor","0,1,0,1");//中心线颜色,默认绿色
        tlo->AddConfig("CenterLineWidth","2.0");//中心线线宽,默认为1
        tlo->AddConfig("CenterLineStipple","-1");//线类型,-1为虚线,1为实线
        tlo->AddConfig("DisplayType","0");//退让类型。0:同时启用,1:道路面退让,2:建筑退让。默认为0
        tlo->AddConfig("DisplayDirection","0");//显示的退让方向:0:两边;1:左边;2:右边。默认为0,以中心线的起点到终点的方向来划分左右

        tlo->AddConfig("BottomSurfaceColor","1.0,1.0,0.0,0.5");//地面颜色
        tlo->AddConfig("TextVisible","true");//文字是否可见
        tlo->AddConfig("TextLiftUp","0");//文字抬高

        //道路退让属性,只有DisplayType为0或者1时生效
        tlo->AddConfig("RCLineColor","1,0,0,1");//道路退让线颜色,默认红色
        tlo->AddConfig("RCLineWidth","2");//道路退让线宽度,默认2
        tlo->AddConfig("RCLineStipple","1");//道路退让线线型,-1:虚线,1:实线
        tlo->AddConfig("LRCDistance","20");//左侧道路退让距离,默认10m
        tlo->AddConfig("RRCDistance","20");//右侧道路退让距离,默认10m
        tlo->AddConfig("LRCRenderingColor","1.0,0.0,0.0,0.5");//左侧道路退让违规建筑渲染颜色,默认红色
        tlo->AddConfig("RRCRenderingColor","1.0,0.0,0.0,0.5");//右侧道路退让违规建筑渲染颜色,默认红色

        //建筑退让属性,只有DisplayType为0或者2时生效
        tlo->AddConfig("BCLineColor","0,0,1,1");//建筑退让线框颜色。默认红色
        tlo->AddConfig("BCSurfaceColor","0,0,1,0.5");//建筑退让面颜色。默认蓝色
        tlo->AddConfig("BCLineWidth","2");//建筑退让面线框宽度。默认2
        tlo->AddConfig("LBCDistance","10");//左侧建筑退让距离。默认8m
        tlo->AddConfig("RBCDistance","10");//右侧建筑退让距离。默认8m
        tlo->AddConfig("LBCHeight","3");//左侧建筑退让高度。默认3m
        tlo->AddConfig("RBCHeight","3");//右侧建筑退让高度。默认3m
        tlo->AddConfig("LBCRenderingColor","0.0,1.0,0.0,0.5");//左侧违规建筑渲染颜色,默认绿色
        tlo->AddConfig("RBCRenderingColor","0.0,1.0,0.0,0.5");//右侧违规建筑渲染颜色,默认绿色

        //渲染重叠部分的建筑设置,DisplayType为0时,建筑退让违规建筑与道路退让违规建筑重合时渲染设置
        tlo->AddConfig("LOverLapColor","2");//左侧重叠部分渲染颜色设置:0-融合;1-显示道路退让颜色;2-显示建筑退让颜色,默认:0
        tlo->AddConfig("ROverLapColor","2");//右侧重叠部分渲染颜色设置:0-融合-1-显示道路退让颜色;2-显示建筑退让颜色,默认:0

        //参与退让分析的模型ID
        tlo->AddConfig("ModelLayersID","-1");//参与退让分析的模型图层ID,默认所有模型

        //创建文字符号
        ConfigOptionsCOMLib::ISymbolObjectPtr pSymbol = map->CreateSymbol("AnalysisTextSymbol"); //创建文字符号,分析文字为:AnalysisTextSymbol
        pSymbol->AddConfig("FillingColor", "1.0, 0.0, 0.0, 1.0"); //设置文字颜色(RGBA)
        pSymbol->AddConfig("Font", "C:\\WINDOWS\\Fonts\\STXIHEI.TTF"); //设置字体类型,字体文件一定要存在           
        pSymbol->AddConfig("Size", "40");//字体精度大小
        pSymbol->AddConfig("CharacterSize", "7");//文字大小
        pSymbol->AddConfig("CharacterMode", "1");//取值 1 -- 始终朝向相机
        pSymbol->AddConfig("AlignmentMode", "5");//文字对齐方式
        pSymbol->AddConfig("AxisAlignment", "6");//旋转轴 0 - 7 , 6: 自动
        pSymbol->AddConfig("RemoveDuplicateLabels", "false"); //去重复            
        pSymbol->AddConfig("IsEmbolden", "false");//字体是否加粗
        pSymbol->AddConfig("IsTransform", "true");//字体是否为斜体
        pSymbol->AddConfig("IsUnderline", "false");//字体是否有下划线
        pSymbol->AddConfig("IsBack", "false");//是否设置背景色
        pSymbol->AddConfig("BackColor", "0,1.0,1.0,1"); //背景颜色,是否设置背景色为true有效
        pSymbol->AddConfig("FieldPrecision", "2");//字段精度,最高为小数点后18位
        pSymbol->AddConfig("IsDepthTest","true");//是否开启深度测试。默认为true
        //创建样式
        ConfigOptionsCOMLib::IStylePtr pStyle = map->CreateStyle("Text"); //创建Style,名字可以任意
        pStyle->AddSymbol("AnalysisTextSymbol", pSymbol->GetConfig()); //将符号对象添加到样式,第一参数为符号类型

        //将样式添加到图层配置里
        tlo->AddConfig("Style", pStyle->GetConfig()); //第一参必须为Style字符串,第二参为上面创建的Style的配置信息
        concessionLayer= map->CreateLayer("AnalysisLayer", tlo); ////创建分析图层,第一项参数必须为AnalysisLayer
        map->AddLayer(concessionLayer); ///添加分析图层
    }else{
        return;
    }
}


void Cas_concessionDlg::OnBnClickedUpdateconcession()
{
    ConfigOptionsCOMLib::ILayerOptionsPtr tlo = map->CreateLayerOptions("concession");//创建分析图层配置,给配置起个名称,任意名称
    tlo->AddConfig("LayerOptionsName", "AnalysisLayerOptions");// 创建配置类型, AnalysisLayerOptions代表分析图层数据配置
    tlo->AddConfig("DataSourceTypeName", "as_concession");//数据源类型,as_concession代表退让分析
    tlo->AddConfig("PointColor","1,0,0,1.0");//中心线两端点的颜色,默认红色
    tlo->AddConfig("PointSize","5");//中心线两端点的大小,默认为5
    tlo->AddConfig("StartPointName","起点");//中心线第一个点的名称--默认起点
    tlo->AddConfig("EndPointName","终点");//中心线第二个点的名称--默认终点
    tlo->AddConfig("CenterLineColor","0,1,0,1");//中心线颜色--默认绿色
    tlo->AddConfig("CenterLineWidth","2.0");//中心线线宽--默认1
    tlo->AddConfig("CenterLineStipple","-1");//中心线线型--“-1--虚线 ;1--实线”
    tlo->AddConfig("DisplayType","0");//退让类型:0-混合;1-道路;2-建筑。-- 默认:0-混合
    tlo->AddConfig("DisplayDirection","0");//显示的退让方向:0-两边;1-左边;2-右边。-- 默认:0-两边都显示(注:左右是以中心线的起点到终点的方向为正方向分的左右)

    tlo->AddConfig("BottomSurfaceColor","1.0,1.0,0.0,0.5");//中心线所在底面颜色配置,,新增
    tlo->AddConfig("TextVisible","true");//文字可见性
    tlo->AddConfig("TextLiftUp","0");//文字抬高

    //道路退让属性
    tlo->AddConfig("RCLineColor","1,0,0,1");//道路退让线颜色--默认红色
    tlo->AddConfig("RCLineWidth","2");//道路退让线宽度--默认2
    tlo->AddConfig("RCLineStipple","1");//道路退让线线型--“-1--虚线 ;1--实线”
    tlo->AddConfig("LRCDistance","10");//左侧道路退让距离--默认10m
    tlo->AddConfig("RRCDistance","10");//右侧道路退让距离--默认10m
    tlo->AddConfig("LRCRenderingColor","0.0,0.0,0.0,0.5");//左侧道路退让违规建筑渲染颜色--默认红色
    tlo->AddConfig("RRCRenderingColor","0.0,0.0,0.0,0.5");//右侧道路退让违规建筑渲染颜色--默认红色

    //建筑退让属性
    tlo->AddConfig("BCLineColor","0,0,1,1");//建筑退让面线框颜色--默认红色
    tlo->AddConfig("BCSurfaceColor","0,0,1,0.5");//建筑退让面颜色--默认蓝色
    tlo->AddConfig("BCLineWidth","2");//建筑退让面线框宽度--默认2
    tlo->AddConfig("LBCDistance","5");//左侧建筑退让距离--默认8m
    tlo->AddConfig("RBCDistance","5");//右侧建筑退让距离--默认8m
    tlo->AddConfig("LBCHeight","3");//左侧建筑退让高度--默认3m
    tlo->AddConfig("RBCHeight","3");//右侧建筑退让高度--默认3m
    tlo->AddConfig("LBCRenderingColor","0.0,1.0,1.0,0.5");//左侧建筑退让违规建筑渲染颜色--默认绿色
    tlo->AddConfig("RBCRenderingColor","0.0,1.0,1.0,0.5");//右侧建筑退让违规建筑渲染颜色--默认绿色

    //渲染重叠部分的建筑设置
    tlo->AddConfig("LOverLapColor","2");//左侧重叠部分渲染颜色设置:0-融合、1-道路退让在前、2-建筑退让在前;--默认:0-融合
    tlo->AddConfig("ROverLapColor","2");//右侧重叠部分渲染颜色设置:0-融合、1-道路退让在前、2-建筑退让在前;--默认:0-融合
    concessionLayer->UpdateLayerOptions(tlo);
}


void Cas_concessionDlg::OnBnClickedRemoveconcession()
{
    map->RemoveLayer(concessionLayer);
    concessionLayer=NULL;
}


void Cas_concessionDlg::OnBnClickedGetconcessionlayer()
{
    ConfigOptionsCOMLib::ILayerOptionsPtr opt = concessionLayer->GetLayerResult();                        //获取图层结果
    //判断当前图层数据源类型
    std::string DataSourceTypeName = opt->GetConfigValueByKey("DataSourceTypeName");//获得数据源类型
    if(DataSourceTypeName == "as_concession")
    {
        CString IsSuccess = opt->GetConfigValueByKey("IsSuccess");//是否绘制成功
        CString StartPoint = opt->GetConfigValueByKey("StartPoint");//中心线起点坐标
        CString EndPoint = opt->GetConfigValueByKey("EndPoint");//中心线终点坐标
        CString LRCDistance = opt->GetConfigValueByKey("LRCDistance");//左侧道路退让距离
        CString RRCDistance = opt->GetConfigValueByKey("RRCDistance");//右侧道路退让距离
        CString LBCDistance = opt->GetConfigValueByKey("LBCDistance");//左侧建筑退让距离
        CString RBCDistance = opt->GetConfigValueByKey("RBCDistance");//右侧建筑退让距离
        CString LBCHeight = opt->GetConfigValueByKey("LBCHeight");//左侧建筑退让高度
        CString RBCHeight = opt->GetConfigValueByKey("LBCHeight");//左侧建筑退让高度
        CString LRCIllegalInfo = opt->GetConfigValueByKey("LRCIllegalInfo");//左侧道路退让违规建筑信息--建筑名称和建筑中心点坐标;
        CString RRCIllegalInfo = opt->GetConfigValueByKey("RRCIllegalInfo"); //右侧道路退让违规建筑信息--建筑名称和建筑中心点坐标
        MessageBox(L"IsSuccess:" + IsSuccess + L"; StartPoint:" + StartPoint + L"; EndPoint:" + EndPoint);
        MessageBox(L"LRCDistance:" + LRCDistance + L"; RRCDistance:" + RRCDistance + L"; LBCDistance:" + LBCDistance  + L"; RBCDistance:" + RBCDistance);
        MessageBox(L"LBCHeight:" + LBCHeight + L"RBCHeight:" + RBCHeight +L"; LRCIllegalInfo:" + LRCIllegalInfo + L"; RRCIllegalInfo:" + RRCIllegalInfo);
    }
}

C#调用

ILayerObject concessionLayer;
private void createConcession_Click(object sender, EventArgs e)
{
    if (concessionLayer == null)
    {
        ILayerOptions tlo = map.CreateLayerOptions("concession");//创建分析图层配置,给配置起个名称,任意名称
        tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions"); // 创建配置类型, AnalysisLayerOptions代表分析图层数据配置
        tlo.AddConfig("DataSourceTypeName", "as_concession");//数据源类型,as_concession代表退让分析
        tlo.AddConfig("PointColor", "1,0,0,1.0");//中心线两端点的颜色,默认红色
        tlo.AddConfig("PointSize", "5");//中心线两端点的大小,默认为5
        tlo.AddConfig("StartPointName", "起点");//中心线起点名称,默认名为"起点"
        tlo.AddConfig("EndPointName", "终点");//中心线终点名称,默认名为"终点"
        tlo.AddConfig("CenterLineColor", "0,1,0,1");//中心线颜色,默认绿色
        tlo.AddConfig("CenterLineWidth", "2.0");//中心线线宽,默认为1
        tlo.AddConfig("CenterLineStipple", "-1");//线类型,-1为虚线,1为实线
        tlo.AddConfig("DisplayType", "0");//退让类型。0:同时启用,1:道路面退让,2:建筑退让。默认为0
        tlo.AddConfig("DisplayDirection", "0");//显示的退让方向:0:两边;1:左边;2:右边。默认为0,以中心线的起点到终点的方向来划分左右

        tlo.AddConfig("BottomSurfaceColor", "1.0,1.0,0.0,0.5");//地面颜色
        tlo.AddConfig("TextVisible", "true");//文字是否可见
        tlo.AddConfig("TextLiftUp", "0");//文字抬高

        //道路退让属性,只有DisplayType为0或者1时生效
        tlo.AddConfig("RCLineColor", "1,0,0,1");//道路退让线颜色,默认红色
        tlo.AddConfig("RCLineWidth", "2");//道路退让线宽度,默认2
        tlo.AddConfig("RCLineStipple", "1");//道路退让线线型,-1:虚线,1:实线
        tlo.AddConfig("LRCDistance", "20");//左侧道路退让距离,默认10m
        tlo.AddConfig("RRCDistance", "20");//右侧道路退让距离,默认10m
        tlo.AddConfig("LRCRenderingColor", "1.0,0.0,0.0,0.5");//左侧道路退让违规建筑渲染颜色,默认红色
        tlo.AddConfig("RRCRenderingColor", "1.0,0.0,0.0,0.5");//右侧道路退让违规建筑渲染颜色,默认红色

        //建筑退让属性,只有DisplayType为0或者2时生效
        tlo.AddConfig("BCLineColor", "0,0,1,1");//建筑退让线框颜色。默认红色
        tlo.AddConfig("BCSurfaceColor", "0,0,1,0.5");//建筑退让面颜色。默认蓝色
        tlo.AddConfig("BCLineWidth", "2");//建筑退让面线框宽度。默认2
        tlo.AddConfig("LBCDistance", "10");//左侧建筑退让距离。默认8m
        tlo.AddConfig("RBCDistance", "10");//右侧建筑退让距离。默认8m
        tlo.AddConfig("LBCHeight", "3");//左侧建筑退让高度。默认3m
        tlo.AddConfig("RBCHeight", "3");//右侧建筑退让高度。默认3m
        tlo.AddConfig("LBCRenderingColor", "0.0,1.0,0.0,0.5");//左侧违规建筑渲染颜色,默认绿色
        tlo.AddConfig("RBCRenderingColor", "0.0,1.0,0.0,0.5");//右侧违规建筑渲染颜色,默认绿色

        //渲染重叠部分的建筑设置,DisplayType为0时,建筑退让违规建筑与道路退让违规建筑重合时渲染设置
        tlo.AddConfig("LOverLapColor", "2");//左侧重叠部分渲染颜色设置:0-融合;1-显示道路退让颜色;2-显示建筑退让颜色,默认:0
        tlo.AddConfig("ROverLapColor", "2");//右侧重叠部分渲染颜色设置:0-融合-1-显示道路退让颜色;2-显示建筑退让颜色,默认:0

        //参与退让分析的模型ID
        tlo.AddConfig("ModelLayersID", "-1");//参与退让分析的模型图层ID,默认所有模型

        //创建文字符号
        ISymbolObject pSymbol = map.CreateSymbol("AnalysisTextSymbol"); //创建文字符号,分析文字为:AnalysisTextSymbol
        pSymbol.AddConfig("FillingColor", "1.0, 0.0, 0.0, 1.0"); //设置文字颜色(RGBA)
        pSymbol.AddConfig("Font", "C:\\WINDOWS\\Fonts\\STXIHEI.TTF"); //设置字体类型,字体文件一定要存在           
        pSymbol.AddConfig("Size", "40");//字体精度大小
        pSymbol.AddConfig("CharacterSize", "7");//文字大小
        pSymbol.AddConfig("CharacterMode", "1");//取值 1 -- 始终朝向相机
        pSymbol.AddConfig("AlignmentMode", "5");//文字对齐方式
        pSymbol.AddConfig("AxisAlignment", "6");//旋转轴 0 - 7 , 6: 自动
        pSymbol.AddConfig("RemoveDuplicateLabels", "false"); //去重复            
        pSymbol.AddConfig("IsEmbolden", "false");//字体是否加粗
        pSymbol.AddConfig("IsTransform", "true");//字体是否为斜体
        pSymbol.AddConfig("IsUnderline", "false");//字体是否有下划线
        pSymbol.AddConfig("IsBack", "false");//是否设置背景色
        pSymbol.AddConfig("BackColor", "0,1.0,1.0,1"); //背景颜色,是否设置背景色为true有效
        pSymbol.AddConfig("FieldPrecision", "2");//字段精度,最高为小数点后18位
        pSymbol.AddConfig("IsDepthTest","true");//是否开启深度测试。默认为true
        //创建样式
        IStyle pStyle = map.CreateStyle("Text"); //创建Style,名字可以任意
        pStyle.AddSymbol("AnalysisTextSymbol", pSymbol.GetConfig()); //将符号对象添加到样式,第一参数为符号类型

        //将样式添加到图层配置里
        tlo.AddConfig("Style", pStyle.GetConfig()); //第一参必须为Style字符串,第二参为上面创建的Style的配置信息
        concessionLayer = map.CreateLayer("AnalysisLayer", tlo); ////创建分析图层,第一项参数必须为AnalysisLayer
        map.AddLayer(concessionLayer); ///添加分析图层
    }
    else
    {
        MessageBox.Show("请勿重复创建!");
    }
}

//更新退让分析
private void UpdateConcession_Click(object sender, EventArgs e)
{
    ILayerOptions tlo = map.CreateLayerOptions("concession");//创建分析图层配置,给配置起个名称,任意名称
    tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");// 创建配置类型, AnalysisLayerOptions代表分析图层数据配置
    tlo.AddConfig("DataSourceTypeName", "as_concession");//数据源类型,as_concession代表退让分析
    tlo.AddConfig("PointColor", "1,0,0,1.0");//中心线两端点的颜色,默认红色
    tlo.AddConfig("PointSize", "5");//中心线两端点的大小,默认为5
    tlo.AddConfig("StartPointName", "起点");//中心线第一个点的名称--默认起点
    tlo.AddConfig("EndPointName", "终点");//中心线第二个点的名称--默认终点
    tlo.AddConfig("CenterLineColor", "0,1,0,1");//中心线颜色--默认绿色
    tlo.AddConfig("CenterLineWidth", "2.0");//中心线线宽--默认1
    tlo.AddConfig("CenterLineStipple", "-1");//中心线线型--“-1--虚线 ;1--实线”
    tlo.AddConfig("DisplayType", "0");//退让类型:0-混合;1-道路;2-建筑。-- 默认:0-混合
    tlo.AddConfig("DisplayDirection", "0");//显示的退让方向:0-两边;1-左边;2-右边。-- 默认:0-两边都显示(注:左右是以中心线的起点到终点的方向为正方向分的左右)

    tlo.AddConfig("BottomSurfaceColor", "1.0,1.0,0.0,0.5");//中心线所在底面颜色配置,,新增
    tlo.AddConfig("TextVisible", "true");//文字可见性
    tlo.AddConfig("TextLiftUp", "0");//文字抬高

    //道路退让属性
    tlo.AddConfig("RCLineColor", "1,0,0,1");//道路退让线颜色--默认红色
    tlo.AddConfig("RCLineWidth", "2");//道路退让线宽度--默认2
    tlo.AddConfig("RCLineStipple", "1");//道路退让线线型--“-1--虚线 ;1--实线”
    tlo.AddConfig("LRCDistance", "10");//左侧道路退让距离--默认10m
    tlo.AddConfig("RRCDistance", "10");//右侧道路退让距离--默认10m
    tlo.AddConfig("LRCRenderingColor", "0.0,0.0,0.0,0.5");//左侧道路退让违规建筑渲染颜色--默认红色
    tlo.AddConfig("RRCRenderingColor", "0.0,0.0,0.0,0.5");//右侧道路退让违规建筑渲染颜色--默认红色

    //建筑退让属性
    tlo.AddConfig("BCLineColor", "0,0,1,1");//建筑退让面线框颜色--默认红色
    tlo.AddConfig("BCSurfaceColor", "0,0,1,0.5");//建筑退让面颜色--默认蓝色
    tlo.AddConfig("BCLineWidth", "2");//建筑退让面线框宽度--默认2
    tlo.AddConfig("LBCDistance", "5");//左侧建筑退让距离--默认8m
    tlo.AddConfig("RBCDistance", "5");//右侧建筑退让距离--默认8m
    tlo.AddConfig("LBCHeight", "3");//左侧建筑退让高度--默认3m
    tlo.AddConfig("RBCHeight", "3");//右侧建筑退让高度--默认3m
    tlo.AddConfig("LBCRenderingColor", "0.0,1.0,1.0,0.5");//左侧建筑退让违规建筑渲染颜色--默认绿色
    tlo.AddConfig("RBCRenderingColor", "0.0,1.0,1.0,0.5");//右侧建筑退让违规建筑渲染颜色--默认绿色

    //渲染重叠部分的建筑设置
    tlo.AddConfig("LOverLapColor", "2");//左侧重叠部分渲染颜色设置:0-融合、1-道路退让在前、2-建筑退让在前;--默认:0-融合
    tlo.AddConfig("ROverLapColor", "2");//右侧重叠部分渲染颜色设置:0-融合、1-道路退让在前、2-建筑退让在前;--默认:0-融合
    concessionLayer.UpdateLayerOptions(tlo);
}

//移除退让分析
private void button1_Click(object sender, EventArgs e)
{
    map.RemoveLayer(concessionLayer);
    concessionLayer = null;
}

//获取退让分析结果
private void GetConcessionLayer_Click(object sender, EventArgs e)
{
    ILayerOptions opt = concessionLayer.GetLayerResult();                        //获取图层结果
    //判断当前图层数据源类型
    if (opt.GetConfigValueByKey("DataSourceTypeName") == "as_concession")
    {
        string IsSuccess = opt.GetConfigValueByKey("IsSuccess");//是否绘制成功
        string StartPoint = opt.GetConfigValueByKey("StartPoint");//中心线起点坐标
        string EndPoint = opt.GetConfigValueByKey("EndPoint");//中心线终点坐标
        string LRCDistance = opt.GetConfigValueByKey("LRCDistance");//左侧道路退让距离
        string RRCDistance = opt.GetConfigValueByKey("RRCDistance");//右侧道路退让距离
        string LBCDistance = opt.GetConfigValueByKey("LBCDistance");//左侧建筑退让距离
        string RBCDistance = opt.GetConfigValueByKey("RBCDistance");//右侧建筑退让距离
        string LBCHeight = opt.GetConfigValueByKey("LBCHeight");//左侧建筑退让高度
        string RBCHeight = opt.GetConfigValueByKey("LBCHeight");//左侧建筑退让高度
        string LRCIllegalInfo = opt.GetConfigValueByKey("LRCIllegalInfo");//左侧道路退让违规建筑信息--建筑名称和建筑中心点坐标;
        string RRCIllegalInfo = opt.GetConfigValueByKey("RRCIllegalInfo"); //右侧道路退让违规建筑信息--建筑名称和建筑中心点坐标
        MessageBox.Show("IsSuccess:" + IsSuccess + "; StartPoint:" + StartPoint + "; EndPoint:" + EndPoint);
        MessageBox.Show("LRCDistance:" + LRCDistance + "; RRCDistance:" + RRCDistance + "; LBCDistance:" + LBCDistance + "; RBCDistance:" + RBCDistance);
        MessageBox.Show("LBCHeight:" + LBCHeight + "RBCHeight:" + RBCHeight + "; LRCIllegalInfo:" + LRCIllegalInfo + "; RRCIllegalInfo:" + RRCIllegalInfo);
    }
}

results matching ""

    No results matching ""