图层标注

private void BiaoZhu(int LayIndex, string Field)//图层标注
        {
            IFeatureCursor pFeatCursor;
            IFeatureClass pfeatClass;
            IFeatureLayer pfeatlayer;
            IFeature pfeature;
            IEnvelope pEnv;
            IRgbColor pColor;
            stdole.Font pFont;
            IPoint pt;
            ITextSymbol pTextSymbol;
            IElement pEle;
            ITextElement pTextEle;
            IActiveView pActiveView;

            pfeatlayer = (IFeatureLayer)axMapControl1.get_Layer(LayIndex );
            pfeatClass = pfeatlayer.FeatureClass;
            pFeatCursor = pfeatClass.Search(null, false);//获取要素类的游标对象
            pfeature = pFeatCursor.NextFeature();//获取第一个标注对象
            int fieldIdx;
            //int i;
            //得到name字段的Index
            fieldIdx = pfeature.Fields.FindField(Field );
            //设置颜色
            pColor = new RgbColorClass();
            if (Field == "NAME" && LayIndex == 1)
            {
                pColor.Red = 255;
            }
            else
            {
                pColor.Green  = 255;
            }
            //创建字体
            pFont = new stdole.StdFontClass();
            pFont.Name = "楷体";
            //创建标注样式
            pTextSymbol = new TextSymbolClass();
            pTextSymbol.Color = pColor;
            pTextSymbol.Font = pFont as stdole.IFontDisp;
            pTextSymbol.Size = 25;
            pGraphicsContainer = axMapControl1.Map as IGraphicsContainer;
            pActiveView = axMapControl1.Map as IActiveView;
            //循环遍历标注每一个要素
            while (pfeature != null)
            {
                pEnv = pfeature.Extent;
                pt = new PointClass();
                //使用地理对象的包络线中心作为标注位置
                pt.PutCoords(pEnv.XMin + pEnv.Width * 0.5, pEnv.YMin + pEnv.Height * 0.5);
                //创建标注文本
                pTextEle = new TextElementClass();
                pTextEle.Symbol = pTextSymbol;
                pTextEle.Text = pfeature.get_Value(fieldIdx).ToString();
                //设置标注位置
                pEle = pTextEle as IElement;
                pEle.Geometry = pt;
                //绘制标注
                pGraphicsContainer.AddElement(pEle, 0);
                pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, pEnv);
                pt = null;
                pTextEle = null;
                pfeature = pFeatCursor.NextFeature();
            }
        }
时间: 2024-10-12 20:49:02

图层标注的相关文章

ArcEngine 图层标注 (根据字段、角度)

转自chanyinhelv原文 ArcEngine 图层标注 (根据字段.角度) 今天做了一个用AE来控制图层是否显示标注,以及已哪一个字段作为标注的字段,以哪一个字段作为标注的角度,现将代码写下来,以备以后差用. public void EnableFeatureLayerLabel(IFeatureLayer pFeaturelayer, string sLableField, IRgbColor pRGB, int size, string angleField) { //判断图层是否为空

SharpMap开发教程——图层标注

在GIS开发中,根据图层属性字段对要素进行标注(图层标注)是一项常规的.必备的功能.在基于SharpMap开发GIS应用时,也可以方便的实现该功能. 1.加载Shapefile图层数据 SharpMap.Layers.VectorLayer vLayer = new SharpMap.Layers.VectorLayer("States"); vLayer.DataSource = new SharpMap.Data.Providers.ShapeFile("ShpData\

百度地图 自定义结果面板+分页+图层标注(标注点+搜索)

示例一: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> <script type="text/java

arcmap分类标注问题

在给图层标注的时候,经常出现冲突后有些标注出不来,需要将某些个别的点要素进行标注位置调整,如下图: 处理步骤如下, (1)打开Maplex标注引擎.从ToolBars中打开Labeling工具,勾选Use Maplex Label Enginge. (2)打开图层属性: (3)设定默认标注 (4)添加新标注css1,将“莱山区”放到点要素符号的正下方. (5)按照上述步骤,添加css2标注样式,可以把“福山区”.“罘山区”标注到点要素的正上方.

arcpy.mapping常用四大件-Layer

by 李远祥 图层是地图里面非常重要的组成,几乎所有的制图显示都与图层有关.首先它是连接数据与符号渲染的重要桥梁,其次在出版地图中,图层又与图例关联在一起,当然,图层最重要的就是组织数据,数据的分类.上下叠加.标注的显示等等,全部都跟图层扯上关系.在arcpy.mapping 中,Layer是一个非常重要的类型,如果说MapDocument 是arcpy.mapping 的首要入口,那么Layer就是坐在mapping里面的VIP了. 在arcpy.mapping 中,Layer有两个地方可以进

用ArcMap打开MXD文件报One or more layers failed to draw错误!

错误信息: One or more layers failed to draw: FDO error: 0General function failure [PW_X]参数不足,期待是 1. 原因: PW_X图层标注采用了表达式Label方式,数据源改成mdb后,shape.area及shape.length等字段不存在. 解决方法: 将label表达式中的字段替换为shape_area和shape_length! 用ArcMap打开MXD文件报One or more layers failed

ArcGIS地图文档MXD效率慢的一点建议(二)

经常有用户询问,我的MXD图层比较多,而且配置好了相关的符号,但是我的服务器更换了一下,而且两个服务器的要素类名称都是一样的,我想配置一下新的数据源,而且我的这个MXD已经连接不到原来的数据源了,打开这个MXD,要花费很长时间,请问有什么可以避免的么? 因为这种情况下,打开MXD的时候,会查询数据源,特别是SDE数据源,如果找不到MXD记录的相关参数信息,系统会默认一直在找相应的IP(也可以理解一直在Ping),而且也会寻找你们局域网里面的所有机器,那么如果数据图层比较多,这个时间肯定会比较长的

外业数据采集平台(GPS+Android Studio+Arcgis for android 100.2.1)

欢迎加入QQ沟通交流群:186178114(群名:外业数据采集(GIS+GPS)) 外业数据采集平台 1. 综述 在室外,通过平板或者手机接收GPS坐标,实时绘制点.线.面数据,以便为后续进行海域监测.土地确权.地图绘图提供有效数据和依据. 2. 技术路线 Android studio3.0.1+Arcgis for android 100.2.1+GPS 2.1 Android studio工具: 2.2 Android studio工具下载地址: http://www.android-stu

寻找西北—东南线(类黑河—腾冲线)

西北—东南线(类黑河—腾冲线) 黑河—腾冲线 黑河—腾冲线,即瑷珲-腾冲线,或胡焕庸线(英文:Hu Line),是一条贯穿中国版图的假想直线段.是我国著名地理学家胡焕庸(1901-1998)在1935年提出的划分我国人口密度的对比线.该线从中国东北边境的黑龙江省黑河市(原名“瑷珲”)一直延伸到中国西南边境的云南省腾冲市(地级市),大致地划分出了中国人口在区域上的分布,体现了中国人口东南和西北的分布区域之悬殊差异.瑷珲—腾冲一线,在中国人口地理上起着画龙点睛的作用,在地理学(特别是人口地理学与人文