2.2.10 退让分析
退让分析
退让分析是指在场景中绘制一条道路中心线,然后根据设置的道路退让信息和建筑退让信息,绘制整个退让分析绘制体,并渲染违规建筑。
主要包括添加(创建)、更新、显隐、删除和获取结果操作。
注意:可创建空的分析图层,也可创建预设的分析图层,如需创建预设分析图层,则IsLoad
,IsActive
,StartPoint
,EndPoint
四个参数需要同时配置。
下图是退让分析效果:
参数说明
退让分析可配置的参数如下表所示:
配置项 | 配置说明 | 值类型 | 备注 |
---|---|---|---|
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,则TextLiftUp 和Style 配置都无效 |
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);
}
}