为图层增加注记表达式
2016-04-15 10:26
344 查看
从注记表达式的文本文件中程序里读取并动态地增加注记。label expression 可以为简单的或vb脚本等
/// <summary> /// 图层增加注记表达式 /// </summary> /// <param name="map">The map.</param> /// <param name="tcname">The tcname.</param> public static void AddAnno(ILayer plyr , string tcname) { if (!System.IO.File.Exists(注记文件存储路径)) return; IGeoFeatureLayer pGeoFeaLayer = (plyr as IFeatureLayer) as IGeoFeatureLayer; IAnnotateLayerPropertiesCollection pAnoLayPC = pGeoFeaLayer.AnnotationProperties; pAnoLayPC.Clear(); ILabelEngineLayerProperties pAnnoLayerProps = new LabelEngineLayerPropertiesClass(); (pAnnoLayerProps.BasicOverposterLayerProperties as IOverposterLayerProperties2).TagUnplaced = false; ////是否覆盖,对应Arcmap:layer properties-》labels-》placement properties-》conflict detection ::place overlapping labels pAnnoLayerProps.SymbolID = 0; IBasicOverposterLayerProperties4 blp = pAnnoLayerProps.BasicOverposterLayerProperties as IBasicOverposterLayerProperties4; //blp.PointPlacementMethod = esriOverposterPointPlacementMethod.esriAroundPoint; blp.NumLabelsOption = esriBasicNumLabelsOption.esriOneLabelPerShape; ////每个图形只标注一个 label properties--palcement properties--duplicate labels blp.PolygonPlacementMethod = esriOverposterPolygonPlacementMethod.esriAlwaysHorizontal; //// label properties--palcement properties--polygon settings // blp.PlaceOnlyInsidePolygon = true; ////保证在图形内部 label properties--palcement properties--only place label inside polygon string annoExpression = GetAnnoExpression(注记文件存储路径); if (annoExpression.ToUpper().IndexOf("FUNCTION") >= 0) pAnnoLayerProps.IsExpressionSimple = false; else pAnnoLayerProps.IsExpressionSimple = true; //对应aArcMap的advanced选项 pAnnoLayerProps.Expression = annoExpression; pAnnoLayerProps.Symbol = CreateTextSymbol(); pGeoFeaLayer.DisplayAnnotation = true; } /// <summary> /// 根据注记文件存储路径获取标注表达式 /// </summary> /// <param name="tcname">The tcname.</param> /// <returns></returns> public static string GetAnnoExpression(string注记文件存储路径) { StreamReader sr = new StreamReader(注记文件存储路径); string annoExpression = string.Empty; while (!sr.EndOfStream) { string text = sr.ReadLine(); if (annoExpression == string.Empty) annoExpression = text; else annoExpression = annoExpression + "\r\n" + text; } return annoExpression; }
相关文章推荐
- 赫夫曼树的构建
- HDU1231 最大连续子序列 DP
- tcpdump统计http请求
- Velocity 模板使用指南
- centos svn的配置使用
- 创建注记图层要素
- RabbitMQ与Redis队列对比
- sqlalchemy中文问题解决方案
- 在Html中使用Requirejs进行模块化开发实例详解
- PHP不报错,显示500
- PHP不报错,显示500
- WARNING: The first attempt to start Xvnc failed, possibly because the font
- 复选框(checkbox)多个选中问题
- 说说JSON和JSONP,也许你会豁然开朗
- 分布式(集群)与集群的联系与区别
- newcapec
- svn如何切换用户
- jquery操作数组
- Pku oj 2027 No Brainer(水题)
- 创建文本注记TextElement