zoukankan      html  css  js  c++  java
  • 为图层增加注记表达式

    从注记表达式的文本文件中程序里读取并动态地增加注记。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 + "
    " + text;
    
                }
    
                return annoExpression;
    
            }
  • 相关阅读:
    前端面试题总结(js、html、小程序、React、ES6、Vue、算法、全栈热门视频资源)
    steps 步骤条、时间轴
    碰撞检测经典解决方案
    延迟渲染(Deferred Shading)技术详解
    配备透明触摸屏 看3D全息投影概念手机
    预渲染技术
    APK改之理(APK IDE)修改APK简单的入门教程
    如何获取显卡的GPU占用率和显存占用情况
    图像编辑之对比度调整 亮度对比度的算法公式
    别被你的双眼所欺骗 100张神奇的视觉欺骗图
  • 原文地址:https://www.cnblogs.com/jhlong/p/5394340.html
Copyright © 2011-2022 走看看