Esempio n. 1
0
        private IFeatureClass method_2(IFeatureWorkspaceAnno ifeatureWorkspaceAnno_0, IFeatureDataset ifeatureDataset_0,
                                       IFeatureClass ifeatureClass_0, double double_1, esriUnits esriUnits_0,
                                       IAnnotateLayerPropertiesCollection iannotateLayerPropertiesCollection_0,
                                       ISymbolCollection isymbolCollection_0, string string_0)
        {
            IObjectClassDescription description = new AnnotationFeatureClassDescriptionClass();
            IFields requiredFields = description.RequiredFields;
            int     index          = requiredFields.FindField((description as IFeatureClassDescription).ShapeFieldName);

            if (index != -1)
            {
                IField            field            = requiredFields.get_Field(index);
                IGeometryDef      geometryDef      = field.GeometryDef;
                ISpatialReference spatialReference = geometryDef.SpatialReference;
                SpatialReferenctOperator.ChangeCoordinateSystem(ifeatureWorkspaceAnno_0 as IGeodatabaseRelease,
                                                                spatialReference, false);
                (geometryDef as IGeometryDefEdit).SpatialReference_2 = spatialReference;
                (field as IFieldEdit).GeometryDef_2 = geometryDef;
            }
            IFeatureClassDescription description2   = description as IFeatureClassDescription;
            IGraphicsLayerScale      referenceScale = new GraphicsLayerScaleClass
            {
                ReferenceScale = double_1,
                Units          = esriUnits_0
            };
            UID instanceCLSID       = description.InstanceCLSID;
            UID classExtensionCLSID = description.ClassExtensionCLSID;

            return(ifeatureWorkspaceAnno_0.CreateAnnotationClass(string_0, requiredFields, instanceCLSID,
                                                                 classExtensionCLSID, description2.ShapeFieldName, "", ifeatureDataset_0, ifeatureClass_0,
                                                                 iannotateLayerPropertiesCollection_0, referenceScale, isymbolCollection_0, true));
        }
Esempio n. 2
0
        private void AddLabel(string StrDisplayField)
        {
            pGeoFeatLayer.DisplayAnnotation = false;
            pMapControl.ActiveView.Refresh();

            pGeoFeatLayer.DisplayField = StrDisplayField;

            IAnnotateLayerPropertiesCollection pAnnoProps = null;

            pAnnoProps = pGeoFeatLayer.AnnotationProperties;

            ILineLabelPosition pPosition = null;

            pPosition          = new LineLabelPositionClass();
            pPosition.Parallel = true;
            pPosition.Above    = true;

            ILineLabelPlacementPriorities    pPlacement = new LineLabelPlacementPrioritiesClass();
            IBasicOverposterLayerProperties4 pBasic     = new BasicOverposterLayerPropertiesClass();

            pBasic.FeatureType = esriBasicOverposterFeatureType.esriOverposterPolyline;
            pBasic.LineLabelPlacementPriorities = pPlacement;
            pBasic.LineLabelPosition            = pPosition;
            pBasic.BufferRatio     = 0;
            pBasic.FeatureWeight   = esriBasicOverposterWeight.esriHighWeight;
            pBasic.NumLabelsOption = esriBasicNumLabelsOption.esriOneLabelPerPart;
            //pBasic.PlaceOnlyInsidePolygon = true;//仅在地物内部显示标注  deleted by chulili s20111018 界面上并没有这项设置,这句话应注释掉,否则像是错误

            ILabelEngineLayerProperties pLabelEngine = null;

            pLabelEngine = new LabelEngineLayerPropertiesClass();
            pLabelEngine.BasicOverposterLayerProperties = pBasic as IBasicOverposterLayerProperties;
            pLabelEngine.Expression = "[" + StrDisplayField + "]";
            ITextSymbol pTextSymbol = null;

            pTextSymbol = pLabelEngine.Symbol;
            System.Drawing.Font pFont = null;
            pFont = LabelText.Font;
            IFontDisp pFontDisp = ESRI.ArcGIS.ADF.Converter.ToStdFont(pFont);

            pTextSymbol.Font = pFontDisp;

            IRgbColor pColor = new RgbColorClass();

            pColor.Red          = Convert.ToInt32(LabelText.ForeColor.R);
            pColor.Green        = Convert.ToInt32(LabelText.ForeColor.G);
            pColor.Blue         = Convert.ToInt32(LabelText.ForeColor.B);
            pTextSymbol.Color   = pColor as IColor;
            pLabelEngine.Symbol = pTextSymbol;

            IAnnotateLayerProperties pAnnoLayerProps = null;

            pAnnoLayerProps = pLabelEngine as IAnnotateLayerProperties;
            pAnnoLayerProps.LabelWhichFeatures = esriLabelWhichFeatures.esriAllFeatures;
            pAnnoProps.Clear();

            pAnnoProps.Add(pAnnoLayerProps);
            pGeoFeatLayer.DisplayAnnotation = true;
            pMapControl.ActiveView.Refresh();
        }
Esempio n. 3
0
        private void LabelHighWay(ILayer pLayer)
        {
            IGeoFeatureLayer pGeoFeatureLayer = pLayer as IGeoFeatureLayer;

            if (pGeoFeatureLayer != null)
            {
                IAnnotateLayerPropertiesCollection panAnnotateLayerPropertiesCollection =
                    pGeoFeatureLayer.AnnotationProperties;
                panAnnotateLayerPropertiesCollection.Clear();


                IRgbColor pColor = new RgbColor();
                pColor.Red   = 0;
                pColor.Blue  = 0;
                pColor.Green = 0;
                IFormattedTextSymbol pTextSymbol = new TextSymbol();
                //ITextSymbol pTextSymbol = new TextSymbol();
                pTextSymbol.Background = CreateBalloonCallout() as ITextBackground;
                pTextSymbol.Color      = pColor;
                pTextSymbol.Size       = 10;
                pTextSymbol.Direction  = esriTextDirection.esriTDHorizontal;
                Font font = new System.Drawing.Font("宋体", 10);
                pTextSymbol.Font = ESRI.ArcGIS.ADF.COMSupport.OLE.GetIFontDispFromFont(font) as stdole.IFontDisp;
                IBasicOverposterLayerProperties properties = new BasicOverposterLayerProperties();
                IFeatureLayer pFeatureLayer = pLayer as IFeatureLayer;

                switch (pFeatureLayer.FeatureClass.ShapeType)
                {
                case esriGeometryType.esriGeometryPolygon:
                    properties.FeatureType = esriBasicOverposterFeatureType.esriOverposterPolygon;
                    break;

                case esriGeometryType.esriGeometryPoint:
                    properties.FeatureType = esriBasicOverposterFeatureType.esriOverposterPoint;
                    break;

                case esriGeometryType.esriGeometryPolyline:
                    properties.FeatureType = esriBasicOverposterFeatureType.esriOverposterPolyline;
                    break;
                }
                ILabelEngineLayerProperties2 properties2 =
                    new LabelEngineLayerProperties() as ILabelEngineLayerProperties2;
                if (properties2 != null)
                {
                    properties2.Expression = "[LXDM]";
                    properties2.Symbol     = pTextSymbol;
                    properties2.BasicOverposterLayerProperties = properties;

                    IAnnotateLayerProperties p = properties2 as IAnnotateLayerProperties;
//                    p.AnnotationMaximumScale = maxScale;
//                    p.AnnotationMinimumScale = minScale;
                    panAnnotateLayerPropertiesCollection.Add(p);
                }
            }
            if (pGeoFeatureLayer != null)
            {
                pGeoFeatureLayer.DisplayAnnotation = true;
            }
            _mxDocument.ActivatedView.Refresh();
        }
Esempio n. 4
0
        public void labeling(IGeoFeatureLayer _iGeoFLayer, string _labelFuc, double _maxScale, double _minScale, bool _showMapTips, bool _displayAnnotation, IActiveView _aView)
        {
            RgbColor _labelColor = new RgbColor();

            _labelColor.RGB = Microsoft.VisualBasic.Information.RGB(0, 0, 0);
            IAnnotateLayerPropertiesCollection propertiesColl        = _iGeoFLayer.AnnotationProperties;
            IAnnotateLayerProperties           labelEngineProperties = new LabelEngineLayerProperties() as IAnnotateLayerProperties;
            IElementCollection placedElements   = new ElementCollection();
            IElementCollection unplacedElements = new ElementCollection();

            propertiesColl.QueryItem(0, out labelEngineProperties, out placedElements, out unplacedElements);
            ILabelEngineLayerProperties lpLabelEngine = labelEngineProperties as ILabelEngineLayerProperties;

            lpLabelEngine.Expression   = _labelFuc;
            lpLabelEngine.Symbol.Color = _labelColor;
            labelEngineProperties.AnnotationMaximumScale = _maxScale; // closer
            labelEngineProperties.AnnotationMinimumScale = _minScale; // further
            IFeatureLayer  thisFeatureLayer         = _iGeoFLayer as IFeatureLayer;
            IDisplayString displayString            = thisFeatureLayer as IDisplayString;
            IDisplayExpressionProperties properties = displayString.ExpressionProperties;

            properties.Expression         = _labelFuc; //example: "[OWNER_NAME] & vbnewline & \"$\" & [TAX_VALUE]";
            _iGeoFLayer.DisplayAnnotation = _displayAnnotation;

            // refresh map window
            _aView.Refresh();
        }
Esempio n. 5
0
        public static void SetLayerInfoFromXml(IGeoFeatureLayer pGeaFeatureLayer)
        {
            IAnnotateLayerPropertiesCollection pAnnoLayerProperCol = pGeaFeatureLayer.AnnotationProperties;

            pAnnoLayerProperCol.Clear();

            ILabelEngineLayerProperties pLabelEngineLayerPro = new LabelEngineLayerPropertiesClass();
            IAnnotateLayerProperties    pAnnoLayerProperties = pLabelEngineLayerPro as IAnnotateLayerProperties;

            //从图层节点的XML中读取标注设置(会覆盖上面语句的设置结果)
            try
            {
                XmlNode nodeLayerXml = GetSelectNodeXml(pGeaFeatureLayer);
                if (nodeLayerXml != null)
                {
                    ReadLabelConfigFromXML(ref pAnnoLayerProperties, nodeLayerXml, pGeaFeatureLayer.FeatureClass.ShapeType.ToString());
                }
                pAnnoLayerProperCol.Add(pAnnoLayerProperties);

                //shduan 20110623 添加
                pGeaFeatureLayer.DisplayAnnotation = true;
            }
            catch
            {
            }
        }
Esempio n. 6
0
        /// <summary>
        /// 显示指定图层指定字段的标注
        /// </summary>
        /// <param name="geoLayer">要设置注标注的图层(IFeatureLayer as IGeoFeatureLayer)</param>
        /// <param name="fieldName">显示标注的字段</param>
        /// <param name="fontName">标注的字体</param>
        /// <param name="size">标注的大小</param>
        public static void ShowLabel(this IGeoFeatureLayer geoLayer, string fieldName, string fontName = "宋体", int size = 12)
        {
            //标注属性集
            IAnnotateLayerPropertiesCollection annotateLyrProColl = geoLayer.AnnotationProperties;

            annotateLyrProColl.Clear();

            //普通标准属性(另一个是Maplex标准属性)
            ILabelEngineLayerProperties labelEngine = new LabelEngineLayerPropertiesClass();

            labelEngine.Expression = $"[{fieldName}]";

            //字体
            IFontDisp fontDisp = new StdFont()
            {
                Name = fontName, Bold = false
            } as IFontDisp;

            //标注符号
            ITextSymbol textSymbol = new TextSymbolClass();

            textSymbol.Color   = ColorCreate.GetIColor(0, 0, 0);
            textSymbol.Font    = fontDisp;
            textSymbol.Size    = size;
            labelEngine.Symbol = textSymbol;

            //设置同名标注:默认为移除同名标注,应设为每个要素放置一个标注
            IBasicOverposterLayerProperties basicOverpLyrPro = labelEngine.BasicOverposterLayerProperties as IBasicOverposterLayerProperties;

            basicOverpLyrPro.NumLabelsOption = esriBasicNumLabelsOption.esriOneLabelPerShape;//每个要素放置一个标注

            annotateLyrProColl.Add(labelEngine as IAnnotateLayerProperties);
            geoLayer.DisplayAnnotation = true;
        }
Esempio n. 7
0
 public AnnotationClass(IFeatureLayer pFeatureLayer)
 {
     if (pFeatureLayer != null)
     {
         if (pFeatureLayer is IGeoFeatureLayer)
         {
             IGeoFeatureLayer objGFL = pFeatureLayer as IGeoFeatureLayer;
             IAnnotateLayerPropertiesCollection annoPropsColl = objGFL.AnnotationProperties;
             if (objGFL.DisplayAnnotation && annoPropsColl.Count > 0)
             {
                 IAnnotateLayerProperties             annoLayerProps = null;
                 ESRI.ArcGIS.Carto.IElementCollection null_ESRIArcGISCartoIElementCollection  = null;
                 ESRI.ArcGIS.Carto.IElementCollection null_ESRIArcGISCartoIElementCollection2 = null;
                 annoPropsColl.QueryItem(0, out annoLayerProps, out null_ESRIArcGISCartoIElementCollection, out null_ESRIArcGISCartoIElementCollection2);
                 if (annoLayerProps is ILabelEngineLayerProperties && annoLayerProps.DisplayAnnotation)
                 {
                     ILabelEngineLayerProperties labelProps = annoLayerProps as ILabelEngineLayerProperties;
                     if (annoLayerProps.WhereClause == "" && labelProps.IsExpressionSimple)
                     {
                         IsSingleProperty = true;
                         PropertyName     = labelProps.Expression.Replace("[", "").Replace("]", "");
                         TextSymbol       = new TextSymbolClass(labelProps.Symbol as ISymbol);
                     }
                 }
             }
         }
     }
 }
Esempio n. 8
0
        /// <summary>
        /// Annotate Layer
        /// </summary>
        /// <param name="layer"></param>
        /// <param name="labelField"></param>
        /// <author>Shen Yongyuan</author>
        /// <date>20091111</date>
        public static void AnnotateLayer(ILayer layer, string labelField)
        {
            IFeatureLayer    feaLayer    = layer as IFeatureLayer;
            IGeoFeatureLayer geoFeaLayer = layer as IGeoFeatureLayer;
            IAnnotateLayerPropertiesCollection pAnnoProps = geoFeaLayer.AnnotationProperties;

            pAnnoProps.Clear();

            ITextSymbol pTextSyl = new TextSymbolClass();
            Font        fnt      = new System.Drawing.Font("宋体", 10f, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);

            pTextSyl.Size = 10;
            //pTextSyl.Font = ESRI.ArcGIS.ADF.COMSupport.OLE.GetIFontDispFromFont(fnt) as stdole.IFontDisp;
            pTextSyl.Color = Town.ArcGIS.Color.ToEsriColor(System.Drawing.Color.Black);

            IBasicOverposterLayerProperties pBasic = new BasicOverposterLayerPropertiesClass();

            if (feaLayer.FeatureClass.ShapeType == esriGeometryType.esriGeometryPolygon)
            {
                ILineLabelPosition            pPosition      = new LineLabelPositionClass();
                ILineLabelPlacementPriorities pPlacementLine = new LineLabelPlacementPrioritiesClass();

                pBasic.FeatureType = esriBasicOverposterFeatureType.esriOverposterPolygon;
                pBasic.LineLabelPlacementPriorities = pPlacementLine;
                pBasic.LineLabelPosition            = pPosition;
            }
            else if (feaLayer.FeatureClass.ShapeType == esriGeometryType.esriGeometryPoint)
            {
                IPointPlacementPriorities pPlacementPoint = new PointPlacementPrioritiesClass();
                pBasic.FeatureType = esriBasicOverposterFeatureType.esriOverposterPoint;
                pBasic.PointPlacementPriorities = pPlacementPoint;
                pBasic.PointPlacementOnTop      = false;
                pBasic.PointPlacementMethod     = esriOverposterPointPlacementMethod.esriAroundPoint;
            }
            else if (feaLayer.FeatureClass.ShapeType == esriGeometryType.esriGeometryPolyline)
            {
                ILineLabelPosition            pPosition      = new LineLabelPositionClass();
                ILineLabelPlacementPriorities pPlacementLine = new LineLabelPlacementPrioritiesClass();

                pBasic.FeatureType = esriBasicOverposterFeatureType.esriOverposterPolyline;
                pBasic.LineLabelPlacementPriorities = pPlacementLine;
                pBasic.LineLabelPosition            = pPosition;
            }

            pBasic.LabelWeight   = esriBasicOverposterWeight.esriHighWeight;
            pBasic.FeatureWeight = esriBasicOverposterWeight.esriNoWeight;

            ILabelEngineLayerProperties pLabelEngine = new LabelEngineLayerPropertiesClass();

            pLabelEngine.Symbol = pTextSyl;
            pLabelEngine.BasicOverposterLayerProperties = pBasic;
            pLabelEngine.Expression = "[" + labelField + "]";

            IAnnotateLayerProperties pAnnoLayerProps = pLabelEngine as IAnnotateLayerProperties;

            pAnnoProps.Add(pAnnoLayerProps);
            geoFeaLayer.DisplayAnnotation = true;
        }
Esempio n. 9
0
        /// <summary>
        /// 标注图层
        /// </summary>
        /// <param name="pLayer">需要标注的图层</param>
        /// <param name="fontSize">字体大小</param>
        /// <param name="labelField">标注字段</param>
        /// <param name="minScale">显示标注的最小比例尺</param>
        /// <param name="maxScale">显示标注的最大比例尺</param>
        /// 注意:一问最后两个参数是比例尺的分母,所有minScale的值应该比maxSacle的值大
        private void LabelLayer(ILayer pLayer, int fontSize, string labelField, double minScale, double maxScale)
        {
            IGeoFeatureLayer pGeoFeatureLayer = pLayer as IGeoFeatureLayer;

            if (pGeoFeatureLayer != null)
            {
                IAnnotateLayerPropertiesCollection panAnnotateLayerPropertiesCollection =
                    pGeoFeatureLayer.AnnotationProperties;
                panAnnotateLayerPropertiesCollection.Clear();
                IRgbColor pColor = new RgbColor();
                pColor.Red   = 0;
                pColor.Blue  = 0;
                pColor.Green = 0;
                ITextSymbol pTextSymbol = new TextSymbol();
                pTextSymbol.Color = pColor;
                pTextSymbol.Size  = fontSize;
                Font font = new System.Drawing.Font("宋体", fontSize);
                pTextSymbol.Font = ESRI.ArcGIS.ADF.COMSupport.OLE.GetIFontDispFromFont(font) as stdole.IFontDisp;
                IBasicOverposterLayerProperties properties = new BasicOverposterLayerProperties();
                IFeatureLayer pFeatureLayer = pLayer as IFeatureLayer;

                switch (pFeatureLayer.FeatureClass.ShapeType)
                {
                case esriGeometryType.esriGeometryPolygon:
                    properties.FeatureType = esriBasicOverposterFeatureType.esriOverposterPolygon;
                    break;

                case esriGeometryType.esriGeometryPoint:
                    properties.FeatureType = esriBasicOverposterFeatureType.esriOverposterPoint;
                    break;

                case esriGeometryType.esriGeometryPolyline:
                    properties.FeatureType = esriBasicOverposterFeatureType.esriOverposterPolyline;
                    break;
                }
                ILabelEngineLayerProperties2 properties2 =
                    new LabelEngineLayerProperties() as ILabelEngineLayerProperties2;
                if (properties2 != null)
                {
                    properties2.Expression = "[" + labelField + "]";
                    properties2.Symbol     = pTextSymbol;
                    properties2.BasicOverposterLayerProperties = properties;

                    IAnnotateLayerProperties p = properties2 as IAnnotateLayerProperties;
                    p.AnnotationMaximumScale = maxScale;
                    p.AnnotationMinimumScale = minScale;
                    panAnnotateLayerPropertiesCollection.Add(p);
                }
            }

            if (pGeoFeatureLayer != null)
            {
                pGeoFeatureLayer.DisplayAnnotation = true;
            }
            _mxDocument.ActiveView.Refresh();
        }
Esempio n. 10
0
        private void btnLabel_Click(object sender, RoutedEventArgs e)
        {
            //The FeatureLayer for labelling


            IFeatureLayer    labelLayer  = this.m_map.Map.get_Layer(0) as IFeatureLayer;
            IGeoFeatureLayer gLabelLayer = labelLayer as IGeoFeatureLayer;
            IAnnotateLayerPropertiesCollection annoPropCol = gLabelLayer.AnnotationProperties;

            annoPropCol.Clear();
            //ITextSymbol uasage
            ITextSymbol pTextSyl = new TextSymbol();
            //Font fnt = new System.Drawing.Font("宋体", 10f, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
            //using stdole
            IFontDisp font = new StdFont() as IFontDisp;

            font.Size   = 20;
            font.Italic = true;
            // pTextSyl.Size = 20;
            pTextSyl.Font = font;
            //IRgbColor fromColor = new RgbColor(255,0, 0);
            //ESRI.ArcGIS.Display.RgbColorClass()
            RgbColor color = new RgbColor();

            color.Red      = 255;
            color.Green    = 0;
            color.Blue     = 0;
            pTextSyl.Color = color;
            //Position
            IBasicOverposterLayerProperties pBasic = new BasicOverposterLayerProperties();

            //   if (labelLayer.FeatureClass.ShapeType == esriGeometryType.esriGeometryPoint)
            //   {
            IPointPlacementPriorities pPlacementPoint = new PointPlacementPriorities();

            pBasic.FeatureType = esriBasicOverposterFeatureType.esriOverposterPoint;
            pBasic.PointPlacementPriorities = pPlacementPoint;
            pBasic.PointPlacementOnTop      = false;
            pBasic.PointPlacementMethod     = esriOverposterPointPlacementMethod.esriOnTopPoint;// esriAroundPoint;
            //      }

            //Point a field as a label
            ILabelEngineLayerProperties labelField = new LabelEngineLayerProperties() as ILabelEngineLayerProperties;

            labelField.Expression = "[name]";
            //set postion
            labelField.BasicOverposterLayerProperties = pBasic;
            //set  symbol
            labelField.Symbol = pTextSyl;
            IAnnotateLayerProperties annoProp = labelField as IAnnotateLayerProperties;

            annoPropCol.Add(annoProp);
            gLabelLayer.DisplayAnnotation = true;
            m_map.Refresh();
        }
Esempio n. 11
0
        private void _AddLabel(IFeatureLayer featureLayer, string fieldName)
        {
            IGeoFeatureLayer geoFeatureLayer = featureLayer as IGeoFeatureLayer;
            IAnnotateLayerPropertiesCollection annoPropsCollection = geoFeatureLayer.AnnotationProperties;
            IAnnotateLayerProperties           annoProps;
            IElementCollection placedElements, unplacedElements;

            annoPropsCollection.QueryItem(0, out annoProps, out placedElements, out unplacedElements);
            ((ILabelEngineLayerProperties)annoProps).Expression = string.Format("[{0}]", fieldName);
            geoFeatureLayer.DisplayAnnotation = true;
        }
Esempio n. 12
0
        private void ShowLabel()
        {
            if (labelOn)
            {
                if (!this.cbxActiveMap.HasItems || !this.cbxFeatureLayer.HasItems || !this.cbxField.HasItems)
                {
                    return;
                }
                if (annoPropCol != null)
                {
                    annoPropCol.Clear();
                }
                labelLayer  = this.m_map.Map.get_Layer(this.cbxFeatureLayer.SelectedIndex) as IFeatureLayer;
                gLabelLayer = labelLayer as IGeoFeatureLayer;
                annoPropCol = gLabelLayer.AnnotationProperties;

                ITextSymbol pTextSyl = new TextSymbol();
                IFontDisp   font     = new StdFont() as IFontDisp;
                font.Size     = 20;
                font.Italic   = true;
                pTextSyl.Font = font;
                RgbColor color = new RgbColor();
                color.Red      = LabelColor.R;
                color.Green    = LabelColor.G;
                color.Blue     = LabelColor.B;
                pTextSyl.Color = color;

                IBasicOverposterLayerProperties pBasic          = new BasicOverposterLayerProperties();
                IPointPlacementPriorities       pPlacementPoint = new PointPlacementPriorities();
                pBasic.FeatureType = esriBasicOverposterFeatureType.esriOverposterPoint;
                pBasic.PointPlacementPriorities = pPlacementPoint;
                pBasic.PointPlacementOnTop      = false;
                pBasic.PointPlacementMethod     = esriOverposterPointPlacementMethod.esriOnTopPoint;

                ILabelEngineLayerProperties labelField = new LabelEngineLayerProperties() as ILabelEngineLayerProperties;

                //IFeatureClass fClass = ((IFeatureLayer)labelLayer).FeatureClass;
                //IFields fields = fClass.Fields;
                //String fieldName = fields.get_Field(this.cbxField.SelectedIndex).Name;

                string fieldName = (string)cbxField.SelectedItem;
                //Console.WriteLine(fields.FindField(fieldName));
                labelField.Expression = "[" + fieldName + "]";
                //set postion
                labelField.BasicOverposterLayerProperties = pBasic;
                //set  symbol
                labelField.Symbol = pTextSyl;
                IAnnotateLayerProperties annoProp = labelField as IAnnotateLayerProperties;
                annoPropCol.Add(annoProp);
                gLabelLayer.DisplayAnnotation = true;
                m_map.Refresh();
            }
        }
Esempio n. 13
0
        private void mnuAnnotation_Click(object sender, EventArgs e)
        {
            IGraphicsContainer pGraphicsContainer = MainMap.Map as IGraphicsContainer;
            ILayer             pLayer             = MainMap.get_Layer(0);
            IGeoFeatureLayer   pGeoFeatureLayer   = pLayer as IGeoFeatureLayer;

            // 清空当前图层标注集合
            IAnnotateLayerPropertiesCollection pAnnoProps = pGeoFeatureLayer.AnnotationProperties;

            pAnnoProps.Clear();

            // 建立标注文本符号
            stdole.IFontDisp pFont = new stdole.StdFontClass() as stdole.IFontDisp;
            pFont.Name = "宋体";
            pFont.Size = 9;

            IRgbColor pColor = new RgbColorClass();

            pColor.Red   = 250;
            pColor.Blue  = 10;
            pColor.Green = 50;

            ITextSymbol pTextSymbol = new TextSymbolClass();

            pTextSymbol.Font  = pFont;
            pTextSymbol.Color = pColor as IColor;

            // 设置标注位置
            ILineLabelPosition pPosition = new LineLabelPositionClass();

            pPosition.Parallel      = false;
            pPosition.Perpendicular = false;

            ILineLabelPlacementPriorities   pPlacement = new LineLabelPlacementPrioritiesClass();
            IBasicOverposterLayerProperties pBasic     = new BasicOverposterLayerProperties();

            pBasic.FeatureType       = esriBasicOverposterFeatureType.esriOverposterPolyline;
            pBasic.LineLabelPosition = pPosition;

            // 新建一个图层标注引擎对象
            ILabelEngineLayerProperties pLabelEngine = new LabelEngineLayerPropertiesClass();

            pLabelEngine.Symbol = pTextSymbol;
            pLabelEngine.BasicOverposterLayerProperties = pBasic;
            pLabelEngine.IsExpressionSimple             = true;
            pLabelEngine.Expression = "[ADCODE93]";
            IAnnotateLayerProperties pAnnoLayerProps = pLabelEngine as IAnnotateLayerProperties;

            pAnnoProps.Add(pAnnoLayerProps);
            pGeoFeatureLayer.DisplayAnnotation = true;

            MainMap.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null);
        }
Esempio n. 14
0
        private void ConvertLabelsToAnnotationSingleLayerMapAnno(IMap pMap, int layerIndex)
        {
            //label features by OBJECTID FEILD

            IGeoFeatureLayer pGeoFeatLayer;

            pGeoFeatLayer = pMap.Layer[layerIndex] as IGeoFeatureLayer;
            IAnnotateLayerPropertiesCollection pAnnotationLayerProColl = pGeoFeatLayer.AnnotationProperties;

            pGeoFeatLayer.DisplayAnnotation = true;
            IAnnotateLayerProperties pAnnoLayPro;
            IElementCollection       pElecol1;
            IElementCollection       pElecol2;

            pAnnotationLayerProColl.QueryItem(0, out pAnnoLayPro, out pElecol1, out pElecol2);
            ILabelEngineLayerProperties pLabelEngineLayerPro;

            pLabelEngineLayerPro            = pAnnoLayPro as ILabelEngineLayerProperties;
            pLabelEngineLayerPro.Expression = "[OBJECTID]";
            pAnnoLayPro.DisplayAnnotation   = true;

            //convert to annotation

            IConvertLabelsToAnnotation pConvertLabelsToAnnotation = new
                                                                    ConvertLabelsToAnnotationClass();
            ITrackCancel pTrackCancel = new CancelTrackerClass();

            //Change global level options for the conversion by sending in different parameters to the next line.
            pConvertLabelsToAnnotation.Initialize(pMap,
                                                  esriAnnotationStorageType.esriMapAnnotation,
                                                  esriLabelWhichFeatures.esriVisibleFeatures, true, pTrackCancel, null);
            ILayer           pLayer           = pMap.get_Layer(layerIndex);
            IGeoFeatureLayer pGeoFeatureLayer = pLayer as IGeoFeatureLayer;

            if (pGeoFeatureLayer != null)
            {
                IFeatureClass pFeatureClass = pGeoFeatureLayer.FeatureClass;
                //Add the layer information to the converter object. Specify the parameters of the output annotation feature class here as well.
                pConvertLabelsToAnnotation.AddFeatureLayer(pGeoFeatureLayer,
                                                           pGeoFeatureLayer.Name + "_Anno", null, null, false, false, false, false,
                                                           false, "");
                //Do the conversion.
                pConvertLabelsToAnnotation.ConvertLabels();
                //Turn off labeling for the layer converted.
                pGeoFeatureLayer.DisplayAnnotation = false;
                //Refresh the map to update the display.
                IActiveView pActiveView = pMap as IActiveView;
                pActiveView.Refresh();
            }
        }
Esempio n. 15
0
        /// <summary>
        /// 设置标注大小
        /// </summary>
        /// <param name="geoLayer">要设置标注的图层(IFeatureLayer as IGeoFeatureLayer)</param>
        /// <param name="size">标注的大小</param>
        public static void SetLabelSize(this IGeoFeatureLayer geoLayer, int size)
        {
            IAnnotateLayerPropertiesCollection annotateLyrProColl = geoLayer.AnnotationProperties;
            IAnnotateLayerProperties           annoPros           = null;
            IElementCollection placeElements   = null;
            IElementCollection unplaceElements = null;

            for (int i = 0; i < annotateLyrProColl.Count; i++)
            {
                annotateLyrProColl.QueryItem(i, out annoPros, out placeElements, out unplaceElements);
                if (annoPros is ILabelEngineLayerProperties labelEngine)
                {
                    labelEngine.Symbol.Size = size;
                    break;
                }
            }
        }
        private void SetLabelExpressionOnFeatureLayer(IFeatureLayer FeatLayer, out bool LabelExcluded)
        {
            string s = "";

            LabelExcluded = false;
            if (FeatLayer is IGeoFeatureLayer)
            {
                IGeoFeatureLayer pGeoFeatLyr = (IGeoFeatureLayer)FeatLayer;
                IAnnotateLayerPropertiesCollection pAnnoLyrPropsColl = pGeoFeatLyr.AnnotationProperties;
                IAnnotateLayerProperties           pAnnoLyrProps; IElementCollection obj1; IElementCollection obj2;
                pAnnoLyrPropsColl.QueryItem(0, out pAnnoLyrProps, out obj1, out obj2);
                ILabelEngineLayerProperties LblEngProp = (ILabelEngineLayerProperties)pAnnoLyrProps;

                s = LblEngProp.Expression.ToLower();
                if (FeatLayer.FeatureClass.LengthField.Name.ToLower().Contains("st_length"))
                { //exclude the label on function generated field shape_length
                    if (s.Contains("shape_length"))
                    {
                        LblEngProp.IsExpressionSimple = true;
                        LblEngProp.Expression         = "";
                        LabelExcluded = true;
                        return;
                    }
                }

                LblEngProp.Expression = s.Replace("shape_length", FeatLayer.FeatureClass.LengthField.Name);

                IFeatureClass pFC = FeatLayer.FeatureClass;
                int           iFld1 = pFC.Fields.FindField("shapestderrore");
                if (iFld1 > -1)
                {
                    string s1 = pFC.Fields.get_Field(iFld1).Name;
                    s = LblEngProp.Expression;
                    LblEngProp.Expression = s.Replace("shapestderrore", s1);
                }

                int iFld2 = pFC.Fields.FindField("shapestderrorn");
                if (iFld2 > -1)
                {
                    s = LblEngProp.Expression;
                    string s2 = pFC.Fields.get_Field(iFld2).Name;
                    LblEngProp.Expression = s.Replace("shapestderrorn", s2);
                }
            }
        }
Esempio n. 17
0
        /// <summary>
        /// 根据参考注记层新建注记层
        /// </summary>
        /// <param name="targetName">创建注记图层的名称</param>
        /// <param name="pTargetWrksps">目标工作空间</param>
        /// <param name="pTargetDs">所属目标数据集</param>
        /// <param name="pRefAnnoFtCls">参考图层</param>
        /// <returns></returns>
        private static IFeatureClass CreateAnnotationClass(string targetName, IFeatureWorkspace pTargetWrksps, IFeatureDataset pTargetDs, IFeatureClass pRefAnnoFtCls, out string msg)
        {
            msg = "";
            try
            {
                IFeatureWorkspaceAnno pAnnoWrksps = pTargetWrksps as IFeatureWorkspaceAnno;
                if (pAnnoWrksps == null || pRefAnnoFtCls == null)
                {
                    return(null);
                }
                if (pRefAnnoFtCls.Extension is IAnnotationClassExtension pAnnoExten)
                {
                    IClone pClone = pAnnoExten.AnnoProperties as IClone;
                    IAnnotateLayerPropertiesCollection pAnnoProCol = (IAnnotateLayerPropertiesCollection)pClone.Clone();

                    esriUnits           eUnits    = pAnnoExten.ReferenceScaleUnits;
                    double              dbScale   = pAnnoExten.ReferenceScale;
                    IGraphicsLayerScale pGraScale = new GraphicsLayerScaleClass
                    {
                        ReferenceScale = dbScale,
                        Units          = eUnits
                    };
                    pClone = pAnnoExten.SymbolCollection as IClone;
                    ISymbolCollection pSymbolCol = (ISymbolCollection)pClone.Clone();

                    pClone = pRefAnnoFtCls.Fields as IClone;
                    IFields pFields = (IFields)pClone.Clone();

                    IObjectClassDescription pOCDesc = new AnnotationFeatureClassDescriptionClass();

                    IDataset pDs = (IDataset)pRefAnnoFtCls;
                    return(pAnnoWrksps.CreateAnnotationClass(targetName, pFields, pOCDesc.InstanceCLSID, pOCDesc.ClassExtensionCLSID, pRefAnnoFtCls.ShapeFieldName,
                                                             null, pTargetDs, null, pAnnoProCol, pGraScale, pSymbolCol, false));
                }
                return(null);
            }
            catch (Exception ex)
            {
                msg = ex.Message;
                return(null);
            }
        }
        protected override void OnClick()
        {
            IMap             map             = ArcMap.Document.ActiveView as IMap;
            IGeoFeatureLayer geoFeatureLayer = map.get_Layer(0) as IGeoFeatureLayer;
            IAnnotateLayerPropertiesCollection annotateLayerPropertiesCollection = geoFeatureLayer.AnnotationProperties;

            LabelEngineLayerProperties labelEngineLayerProperties = new LabelEngineLayerProperties();
            IAnnotateLayerProperties   annotateLayerProperties    = labelEngineLayerProperties as IAnnotateLayerProperties;

            IElementCollection placedElements   = new ElementCollection();
            IElementCollection unplacedElements = new ElementCollection();

            annotateLayerPropertiesCollection.QueryItem(1, out annotateLayerProperties, out placedElements, out unplacedElements); // 0 = default, 1 = 1st Class

            string className = annotateLayerProperties.Class;

            System.Diagnostics.Debug.WriteLine("Class Name: " + className);

            ArcMap.Application.CurrentTool = null;
        }
Esempio n. 19
0
        private void ExportSLD(bool labelStatus)
        {
            if (labelStatus == true)
            {
                annotateLPC = geoFeatureLayer.AnnotationProperties;
                annotateLPC.QueryItem(0, out annotateLP, out elementCol, out elementCol2);
                leProps         = (ILabelEngineLayerProperties)annotateLP;
                labelField      = leProps.Expression.Replace(@"[", "").Replace(@"]", "");
                textSymbol      = leProps.Symbol;
                labelFont       = textSymbol.Font;
                labelFontFamily = labelFont.Name;
                labelSize       = textSymbol.Size.ToString().Replace(",", ".");

                simpleSldXmlWithLabel = String.Format(SLDExporterResource.SimpleSLDwithLabel, textBoxGSsldName.Text, fillColorHEX, outlineColorHEX, outlineWidth, labelField, labelFontFamily, labelSize);
            }
            else
            {
                simpleSldXmlWithoutLabel = String.Format(SLDExporterResource.SimpleSLDwithoutLabel, textBoxGSsldName.Text, fillColorHEX, outlineColorHEX, outlineWidth);
            }
        }
Esempio n. 20
0
        //更换数据库时,重新初始化地图控件
        private void initAxMapCtrl(IWorkspace indataWS)
        {
            axMapControlR.ClearLayers();
            IFeatureWorkspace pFW = indataWS as IFeatureWorkspace;
            IFeatureClass     pFC = null;

            if ((indataWS as IWorkspace2).get_NameExists(esriDatasetType.esriDTFeatureClass, "METADATA_MAP"))
            {
                pFC = pFW.OpenFeatureClass("METADATA_MAP");
                IFeatureLayer pFL = new FeatureLayerClass();
                pFL.FeatureClass = pFC;
                pFL.Name         = pFC.AliasName;
                IGeoFeatureLayer pGFL = pFL as IGeoFeatureLayer;
                DefineUniqueValueRenderer(pGFL, "数据生产时间");
                //IAnnotationExpressionEngine pAEE = new AnnotationVBScriptEngineClass();
                //pAEE.SetExpression();
                ILabelEngineLayerProperties pLELP = new LabelEngineLayerPropertiesClass();
                pLELP.Expression = "\"数据生产单位:\" & [数据生产单位] & chr(13) & \"数据生产时间:\" & [数据生产时间] & chr(13)";//"[producedate]";
                IAnnotateLayerPropertiesCollection pALPC = pGFL.AnnotationProperties;
                pALPC.Clear();
                pALPC.Add(pLELP as IAnnotateLayerProperties);
                pGFL.DisplayAnnotation = true;

                axMapControlR.Map.AddLayer(pFL);
            }

            if ((indataWS as IWorkspace2).get_NameExists(esriDatasetType.esriDTFeatureClass, "XZQH_XIAN"))
            {
                pFC = pFW.OpenFeatureClass("XZQH_XIAN");
                IFeatureLayer pFL = new FeatureLayerClass();
                pFL.FeatureClass = pFC;
                pFL.Name         = pFC.AliasName;
                ILayerEffects pLE = pFL as ILayerEffects;
                if (pLE.SupportsTransparency)
                {
                    pLE.Transparency = 60;//设置图层透明
                }
                axMapControlR.AddLayer(pFL);
            }
        }
Esempio n. 21
0
        //注记复制
        private void CopyAnnoPropertyToFC(IFeatureClass pSourceFeatureClass, IFeatureClass pToFeatureClass)
        {
            IAnnoClass pSourceAnnoClass = (IAnnoClass)pSourceFeatureClass.Extension;
            IAnnoClass pTargerAnnoClass = (IAnnoClass)pToFeatureClass.Extension;

            IAnnotateLayerPropertiesCollection pSourceAnnoProperCollection = pSourceAnnoClass.AnnoProperties;
            IClone pAnnoCollection = (IClone)pSourceAnnoProperCollection;

            ISymbolCollection pSourceSymbolCollection = pSourceAnnoClass.SymbolCollection;
            IClone            pAnnoSymbol             = (IClone)pSourceSymbolCollection;

            IAnnoClassAdmin2 pAnnoClassAdmin = (IAnnoClassAdmin2)pTargerAnnoClass;

            pAnnoClassAdmin.ReferenceScale      = pSourceAnnoClass.ReferenceScale;
            pAnnoClassAdmin.ReferenceScaleUnits = pSourceAnnoClass.ReferenceScaleUnits;

            pAnnoClassAdmin.AnnoProperties   = (IAnnotateLayerPropertiesCollection)pAnnoCollection;
            pAnnoClassAdmin.SymbolCollection = (ISymbolCollection)pAnnoSymbol;

            pAnnoClassAdmin.UpdateProperties();
            pAnnoClassAdmin.UpdateOnShapeChange = true;
        }
Esempio n. 22
0
        /// <summary>
        /// ÉèÖÃÊôÐÔ±ê×¢
        /// </summary>
        /// <param name="pGeoFeatureLayer">ͼ²ã</param>
        /// <param name="vLabelField">ÊôÐÔ×Ö¶Î</param>
        /// <param name="vMapFrameScale">ͼ²ã±ÈÀý³ß</param>
        /// <param name="vMapRefrenceScale">²Î¿¼±ÈÀý³ß</param>
        private void SetLableToGeoFeatureLayer(IGeoFeatureLayer pGeoFeatureLayer, string vLabelField, int vMapFrameScale, double vMapRefrenceScale)
        {
            IAnnotateLayerPropertiesCollection pAnnoLayerProperCol = pGeoFeatureLayer.AnnotationProperties;
            IAnnotateLayerProperties           pAnnoLayerProper;
            IElementCollection placedElements;
            IElementCollection unplacedElements;

            //µÃµ½µ±Ç°²ãµÄµ±Ç°±ê×¢ÊôÐÔ
            pAnnoLayerProperCol.QueryItem(0, out pAnnoLayerProper, out placedElements, out unplacedElements);
            ILabelEngineLayerProperties      pLabelEngineLayerProper     = (ILabelEngineLayerProperties)pAnnoLayerProper;
            IBasicOverposterLayerProperties4 pBasicOverposterLayerProper = (IBasicOverposterLayerProperties4)pLabelEngineLayerProper.BasicOverposterLayerProperties;
            //±ê×¢µÄ×ÖÌå
            ITextSymbol pTextSymbol = pLabelEngineLayerProper.Symbol;
            IRgbColor   pRGBColor   = new RgbColorClass();

            pRGBColor.Red     = 0;
            pRGBColor.Blue    = 255;
            pRGBColor.Green   = 0;
            pTextSymbol.Color = pRGBColor;
            stdole.StdFont pStdFont = new stdole.StdFontClass();
            IFontDisp      pFont    = (IFontDisp)pStdFont;

            pFont.Name = "ËÎÌå";
            if (vMapRefrenceScale != 0)
            {
                double size = (vMapFrameScale / 3) * vMapFrameScale / vMapRefrenceScale;
                pFont.Size = (decimal)size;
            }
            pTextSymbol.Font = pFont;
            //±ê×¢ÄÚÈÝ
            pLabelEngineLayerProper.Expression          = "[" + vLabelField + "]";
            pBasicOverposterLayerProper.NumLabelsOption = esriBasicNumLabelsOption.esriOneLabelPerPart;
            //±ê×¢µÄ·½ÏòÐÅÏ¢
            pBasicOverposterLayerProper.PolygonPlacementMethod = esriOverposterPolygonPlacementMethod.esriAlwaysHorizontal;
            //±ê×¢µÄÓ뼸ºÎͼÐεĴóС¹Øϵ
            pBasicOverposterLayerProper.PlaceOnlyInsidePolygon = false;
            //¿ªÆô±ê×¢
            pGeoFeatureLayer.DisplayAnnotation = true;
        }
Esempio n. 23
0
        private void Annotation()
        {
            string           fieldname    = cbxField.SelectedItem.ToString();
            IFeatureLayer    featureLayer = getlayerbyname(cbxLayer.SelectedItem.ToString());
            IGeoFeatureLayer pGeoFeatLyr  = featureLayer as IGeoFeatureLayer;

            stdole.IFontDisp pFont = new stdole.StdFontClass() as stdole.IFontDisp;
            pFont.Name = comboBox2.SelectedItem.ToString();
            ITextSymbol pTextSymbol = new TextSymbolClass();

            pTextSymbol.Size = Convert.ToInt16(comboBox3.SelectedItem.ToString());
            pTextSymbol.Font = pFont;
            if (pRGB.NullColor)
            {
                pRGB.Red   = 255;
                pRGB.Blue  = 0;
                pRGB.Green = 0;
            }
            pTextSymbol.Color = pRGB;
            IAnnotateLayerPropertiesCollection pAnnoProps = pGeoFeatLyr.AnnotationProperties;

            pAnnoProps.Clear();
            ILabelEngineLayerProperties pLabelEngine = new LabelEngineLayerPropertiesClass();

            pLabelEngine.Symbol     = pTextSymbol;
            pLabelEngine.Expression = "[" + fieldname + "]";
            IAnnotateLayerProperties pAnnoLayerProps = pLabelEngine as IAnnotateLayerProperties;

            pAnnoLayerProps.DisplayAnnotation  = true;
            pAnnoLayerProps.LabelWhichFeatures = esriLabelWhichFeatures.esriAllFeatures;
            pAnnoProps.Add(pAnnoLayerProps);
            pGeoFeatLyr.DisplayField      = fieldname;
            pGeoFeatLyr.DisplayAnnotation = true;
            IActiveView pActiveView = pMap as IActiveView;

            pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null);
        }
Esempio n. 24
0
        private void btnSetLabel_Click(object sender, EventArgs e)
        {
            IList <string>   fdLst = new List <string>();
            IFeatureClass    pFC   = null;
            IGeoFeatureLayer pGFL  = null;

            for (int i = 0; i < axMapControlR.LayerCount; i++)
            {
                if (axMapControlR.get_Layer(i).Name == "元数据地图")
                {
                    pFC  = (axMapControlR.get_Layer(i) as IFeatureLayer).FeatureClass;
                    pGFL = axMapControlR.get_Layer(i) as IGeoFeatureLayer;
                }
            }
            if (pFC == null)
            {
                return;
            }
            for (int i = 0; i < pFC.Fields.FieldCount; i++)
            {
                IField pField = pFC.Fields.get_Field(i);
                fdLst.Add(pField.Name);
            }
            frmMetaMapSetLabel fmMMSL = new frmMetaMapSetLabel(fdLst);

            if (fmMMSL.ShowDialog(this) == DialogResult.OK && axMapControlR.LayerCount > 0)
            {
                ILabelEngineLayerProperties pLELP = new LabelEngineLayerPropertiesClass();
                pLELP.Expression = fmMMSL.LabelExpression;
                IAnnotateLayerPropertiesCollection pALPC = pGFL.AnnotationProperties;
                pALPC.Clear();
                pALPC.Add(pLELP as IAnnotateLayerProperties);
                pGFL.DisplayAnnotation = true;
                axMapControlR.Refresh();
            }
        }
Esempio n. 25
0
        public static IFeatureClass CreateAnnoFeatureClass(IFeatureWorkspaceAnno ifeatureWorkspaceAnno_0,
                                                           IFeatureDataset ifeatureDataset_0, IFeatureClass ifeatureClass_0, double double_0, esriUnits esriUnits_0,
                                                           IAnnotateLayerPropertiesCollection iannotateLayerPropertiesCollection_0,
                                                           ISymbolCollection isymbolCollection_0, string string_0)
        {
            IObjectClassDescription annotationFeatureClassDescriptionClass = new AnnotationFeatureClassDescription();
            IFields requiredFields = annotationFeatureClassDescriptionClass.RequiredFields;
            int     num            =
                requiredFields.FindField(
                    (annotationFeatureClassDescriptionClass as IFeatureClassDescription).ShapeFieldName);

            if (num != -1)
            {
                IField            field            = requiredFields.Field[num];
                IGeometryDef      geometryDef      = field.GeometryDef;
                ISpatialReference spatialReference = geometryDef.SpatialReference;
                LayerOp.ChangeCoordinateSystem(ifeatureWorkspaceAnno_0 as IGeodatabaseRelease, spatialReference, false);
                (geometryDef as IGeometryDefEdit).SpatialReference_2 = spatialReference;
                (field as IFieldEdit).GeometryDef_2 = geometryDef;
            }
            IFeatureClassDescription featureClassDescription =
                annotationFeatureClassDescriptionClass as IFeatureClassDescription;
            IGraphicsLayerScale graphicsLayerScaleClass = new GraphicsLayerScale()
            {
                ReferenceScale = double_0,
                Units          = esriUnits_0
            };
            UID           instanceCLSID       = annotationFeatureClassDescriptionClass.InstanceCLSID;
            UID           classExtensionCLSID = annotationFeatureClassDescriptionClass.ClassExtensionCLSID;
            IFeatureClass featureClass        = ifeatureWorkspaceAnno_0.CreateAnnotationClass(string_0, requiredFields,
                                                                                              instanceCLSID, classExtensionCLSID, featureClassDescription.ShapeFieldName, "", ifeatureDataset_0,
                                                                                              ifeatureClass_0, iannotateLayerPropertiesCollection_0, graphicsLayerScaleClass, isymbolCollection_0,
                                                                                              true);

            return(featureClass);
        }
Esempio n. 26
0
 public GeoFeatureLayerWrap(IGeoFeatureLayer igeoFeatureLayer_1)
 {
     this.igeoFeatureLayer_0 = igeoFeatureLayer_1;
     this.iannotateLayerPropertiesCollection_0 = this.igeoFeatureLayer_0.AnnotationProperties;
 }
Esempio n. 27
0
        /// <summary>
        /// Adds the layer lable.
        /// </summary>
        /// <param name="pMap">The p map.</param>
        /// <param name="layer">The layer.</param>
        /// <param name="fieldName">Name of the field.</param>
        /// <param name="pTextSymbol">The p text symbol.</param>
        /// <param name="dRefScale">The d reference scale.</param>
        public static void AddLayerLable(IMap pMap, ILayer layer, string fieldName, ITextSymbol pTextSymbol, double dRefScale)
        {
            IGeoFeatureLayer geoFeatureLayer = layer as IGeoFeatureLayer;
            IAnnotateLayerPropertiesCollection annotationProperties = geoFeatureLayer.AnnotationProperties;

            annotationProperties.Clear();
            ILineLabelPosition lineLabelPosition = new LineLabelPositionClass
            {
                Parallel      = false,
                Perpendicular = false,
                InLine        = true,
                OnTop         = true,
                Above         = false,
                Horizontal    = true
            };
            LineLabelPlacementPrioritiesClass lineLabelPlacementPrioritiesClass = new LineLabelPlacementPrioritiesClass();

            lineLabelPlacementPrioritiesClass.AboveStart = 5;
            lineLabelPlacementPrioritiesClass.BelowAfter = 4;
            IBasicOverposterLayerProperties basicOverposterLayerProperties = new BasicOverposterLayerPropertiesClass
            {
                LineLabelPosition = lineLabelPosition
            };
            ILabelEngineLayerProperties labelEngineLayerProperties;

            if (pMap.AnnotationEngine.Name.Equals("Esri Maplex Label Engine", System.StringComparison.CurrentCultureIgnoreCase))
            {
                labelEngineLayerProperties = new MaplexLabelEngineLayerPropertiesClass();
                IMaplexOverposterLayerProperties maplexOverposterLayerProperties = new MaplexOverposterLayerPropertiesClass();
                IFeatureLayer featureLayer = layer as IFeatureLayer;
                switch (featureLayer.FeatureClass.ShapeType)
                {
                case esriGeometryType.esriGeometryPoint:
                    maplexOverposterLayerProperties.FeatureType          = esriBasicOverposterFeatureType.esriOverposterPoint;
                    maplexOverposterLayerProperties.PointPlacementMethod = esriMaplexPointPlacementMethod.esriMaplexAroundPoint;
                    break;

                case esriGeometryType.esriGeometryPolyline:
                    maplexOverposterLayerProperties.FeatureType         = esriBasicOverposterFeatureType.esriOverposterPolyline;
                    maplexOverposterLayerProperties.LinePlacementMethod = esriMaplexLinePlacementMethod.esriMaplexCenteredStraightOnLine;
                    break;

                case esriGeometryType.esriGeometryPolygon:
                    maplexOverposterLayerProperties.FeatureType            = esriBasicOverposterFeatureType.esriOverposterPolygon;
                    maplexOverposterLayerProperties.PolygonPlacementMethod = esriMaplexPolygonPlacementMethod.esriMaplexHorizontalInPolygon;
                    break;
                }
                maplexOverposterLayerProperties.CanRemoveOverlappingLabel = false;
                maplexOverposterLayerProperties.RepeatLabel = false;
                (labelEngineLayerProperties as ILabelEngineLayerProperties2).OverposterLayerProperties = (maplexOverposterLayerProperties as IOverposterLayerProperties);
                IMapOverposter              mapOverposter              = pMap as IMapOverposter;
                IOverposterProperties       overposterProperties       = mapOverposter.OverposterProperties;
                IMaplexOverposterProperties maplexOverposterProperties = overposterProperties as IMaplexOverposterProperties;
                maplexOverposterProperties.LabelLargestPolygon = false;
            }
            else
            {
                labelEngineLayerProperties = new LabelEngineLayerPropertiesClass();
                labelEngineLayerProperties.BasicOverposterLayerProperties = basicOverposterLayerProperties;
            }
            labelEngineLayerProperties.Symbol             = pTextSymbol;
            labelEngineLayerProperties.IsExpressionSimple = true;
            labelEngineLayerProperties.Expression         = "[" + fieldName + "]";
            IAnnotateLayerProperties item = labelEngineLayerProperties as IAnnotateLayerProperties;

            if (dRefScale != -1.0)
            {
                IAnnotateLayerTransformationProperties annotateLayerTransformationProperties = labelEngineLayerProperties as IAnnotateLayerTransformationProperties;
                annotateLayerTransformationProperties.ReferenceScale = dRefScale;
            }
            annotationProperties.Add(item);
            geoFeatureLayer.DisplayAnnotation = true;
        }
        private void btn_OK_Click(object sender, EventArgs e)
        {
            IGeoFeatureLayer pGeoFeatureLayer = (IGeoFeatureLayer)m_FeatureLayer;

            //清除原有注记
            pGeoFeatureLayer.DisplayAnnotation = false;
            m_MapControl.Refresh(esriViewDrawPhase.esriViewBackground, null, null);


            //得到图层的标注属性集合对象
            IAnnotateLayerPropertiesCollection pAnnoProps = pGeoFeatureLayer.AnnotationProperties;

            //清空这个集合内的对象
            pAnnoProps.Clear();

            IAnnotateLayerProperties        pAnnoLayerProps;
            ILineLabelPlacementPriorities   pPlacement;
            ILineLabelPosition              pPosition;
            IBasicOverposterLayerProperties pBasic;
            ILabelEngineLayerProperties     pLabelEngine;


            //设置文本属性
            stdole.IFontDisp pFont;
            pFont = new stdole.StdFontClass() as stdole.IFontDisp;

            pFont.Name          = lbl_PreviewFont.Font.Name;
            pFont.Italic        = lbl_PreviewFont.Font.Italic;
            pFont.Underline     = lbl_PreviewFont.Font.Underline;
            pFont.Bold          = lbl_PreviewFont.Font.Bold;
            pFont.Size          = (decimal)lbl_PreviewFont.Font.Size;
            pFont.Strikethrough = lbl_PreviewFont.Font.Strikeout;

            IRgbColor pRGB = new RgbColorClass();

            pRGB.Red   = (int)lbl_PreviewFont.ForeColor.R;
            pRGB.Green = (int)lbl_PreviewFont.ForeColor.G;
            pRGB.Blue  = (int)lbl_PreviewFont.ForeColor.B;

            ITextSymbol pTextSymbol = new TextSymbolClass();

            pTextSymbol.Size  = lbl_PreviewFont.Font.Size;
            pTextSymbol.Font  = pFont;
            pTextSymbol.Color = pRGB;

            //设置注记文本的位置
            pPosition               = new LineLabelPositionClass();
            pPosition.Parallel      = false;
            pPosition.Perpendicular = true;

            pPlacement = new LineLabelPlacementPrioritiesClass();

            pBasic                   = new BasicOverposterLayerPropertiesClass();
            pBasic.FeatureType       = esriBasicOverposterFeatureType.esriOverposterPolyline;
            pBasic.LineLabelPosition = pPosition;

            //新建一个图层注记引擎对象,并设置它的属性
            pLabelEngine        = new LabelEngineLayerPropertiesClass();
            pLabelEngine.Symbol = pTextSymbol;
            pLabelEngine.BasicOverposterLayerProperties = pBasic;

            //设置注记字段
            pLabelEngine.Expression = "[" + cbx_Field.SelectedItem.ToString() + "]";

            pAnnoLayerProps = (IAnnotateLayerProperties)pLabelEngine;
            pAnnoProps.Add(pAnnoLayerProps);
            pGeoFeatureLayer.DisplayAnnotation = true;

            m_MapControl.Refresh(esriViewDrawPhase.esriViewBackground, null, null);
        }
Esempio n. 29
0
        public static void ConvertLabels2StandardAnno(IMap imap_0, ILayer ilayer_0, string string_0, double double_0,
                                                      IWorkspace iworkspace_0, bool bool_0, bool bool_1, esriLabelWhichFeatures esriLabelWhichFeatures_0)
        {
            int i;
            IAnnotateLayerProperties     bool0;
            IElementCollection           elementCollection;
            IElementCollection           elementCollection1;
            ILabelEngineLayerProperties2 d;
            ISymbolIdentifier2           symbolIdentifier2;
            IAnnotationLayer             annotationLayer;

            if (iworkspace_0.Type != esriWorkspaceType.esriFileSystemWorkspace && ilayer_0 is IGeoFeatureLayer)
            {
                IGeoFeatureLayer        ilayer0      = ilayer_0 as IGeoFeatureLayer;
                IFeatureClass           featureClass = ilayer0.FeatureClass;
                IAnnotationLayerFactory fDOGraphicsLayerFactoryClass =
                    new FDOGraphicsLayerFactory() as IAnnotationLayerFactory;
                ISymbolCollection2 symbolCollectionClass = new SymbolCollection() as ISymbolCollection2;
                IAnnotateLayerPropertiesCollection annotateLayerPropertiesCollectionClass =
                    new AnnotateLayerPropertiesCollection();
                IAnnotateLayerPropertiesCollection annotationProperties = ilayer0.AnnotationProperties;
                for (i = 0; i < annotationProperties.Count; i++)
                {
                    annotationProperties.QueryItem(i, out bool0, out elementCollection, out elementCollection1);
                    if (bool0 != null)
                    {
                        annotateLayerPropertiesCollectionClass.Add(bool0);
                        d = bool0 as ILabelEngineLayerProperties2;
                        IClone symbol = d.Symbol as IClone;
                        symbolCollectionClass.AddSymbol(symbol.Clone() as ISymbol,
                                                        string.Concat(bool0.Class, " ", i.ToString()), out symbolIdentifier2);
                        d.SymbolID = symbolIdentifier2.ID;
                    }
                }
                bool0 = null;
                d     = null;
                IGraphicsLayerScale graphicsLayerScaleClass = new GraphicsLayerScale()
                {
                    ReferenceScale = double_0,
                    Units          = imap_0.MapUnits
                };
                IFeatureClassDescription annotationFeatureClassDescriptionClass =
                    new AnnotationFeatureClassDescription() as IFeatureClassDescription;
                IFields requiredFields =
                    (annotationFeatureClassDescriptionClass as IObjectClassDescription).RequiredFields;
                IField field =
                    requiredFields.Field[requiredFields.FindField(annotationFeatureClassDescriptionClass.ShapeFieldName)
                    ];
                (field.GeometryDef as IGeometryDefEdit).SpatialReference_2 =
                    (featureClass as IGeoDataset).SpatialReference;
                IOverposterProperties overposterProperties = (imap_0 as IMapOverposter).OverposterProperties;
                if (!bool_1)
                {
                    LayerOp.CreateAnnoFeatureClass(iworkspace_0 as IFeatureWorkspaceAnno, featureClass.FeatureDataset,
                                                   null, graphicsLayerScaleClass.ReferenceScale, graphicsLayerScaleClass.Units,
                                                   annotateLayerPropertiesCollectionClass, symbolCollectionClass as ISymbolCollection, string_0);
                    annotationLayer = fDOGraphicsLayerFactoryClass.OpenAnnotationLayer(
                        iworkspace_0 as IFeatureWorkspace, featureClass.FeatureDataset, string_0);
                }
                else
                {
                    LayerOp.CreateAnnoFeatureClass(iworkspace_0 as IFeatureWorkspaceAnno, featureClass.FeatureDataset,
                                                   featureClass, graphicsLayerScaleClass.ReferenceScale, graphicsLayerScaleClass.Units,
                                                   annotateLayerPropertiesCollectionClass, symbolCollectionClass as ISymbolCollection, string_0);
                    annotationLayer = fDOGraphicsLayerFactoryClass.OpenAnnotationLayer(
                        iworkspace_0 as IFeatureWorkspace, featureClass.FeatureDataset, string_0);
                }
                IActiveView imap0 = imap_0 as IActiveView;
                (annotationLayer as IGraphicsLayer).Activate(imap0.ScreenDisplay);
                for (i = 0; i < annotateLayerPropertiesCollectionClass.Count; i++)
                {
                    annotateLayerPropertiesCollectionClass.QueryItem(i, out bool0, out elementCollection,
                                                                     out elementCollection1);
                    if (bool0 != null)
                    {
                        bool0.FeatureLayer      = ilayer0;
                        bool0.GraphicsContainer = annotationLayer as IGraphicsContainer;
                        bool0.AddUnplacedToGraphicsContainer = bool_0;
                        bool0.CreateUnplacedElements         = true;
                        bool0.DisplayAnnotation  = true;
                        bool0.FeatureLinked      = bool_1;
                        bool0.LabelWhichFeatures = esriLabelWhichFeatures_0;
                        bool0.UseOutput          = true;
                        d                   = bool0 as ILabelEngineLayerProperties2;
                        d.SymbolID          = i;
                        d.AnnotationClassID = i;
                        (d.OverposterLayerProperties as IOverposterLayerProperties2).TagUnplaced = true;
                    }
                }
                annotateLayerPropertiesCollectionClass.Sort();
                IAnnotateMapProperties annotateMapPropertiesClass = new AnnotateMapProperties()
                {
                    AnnotateLayerPropertiesCollection = annotateLayerPropertiesCollectionClass
                };
                ITrackCancel cancelTrackerClass = new CancelTracker();
                (imap_0.AnnotationEngine as IAnnotateMap2).Label(overposterProperties, annotateMapPropertiesClass,
                                                                 imap_0, cancelTrackerClass);
                for (i = 0; i < annotateLayerPropertiesCollectionClass.Count; i++)
                {
                    annotateLayerPropertiesCollectionClass.QueryItem(i, out bool0, out elementCollection,
                                                                     out elementCollection1);
                    if (bool0 != null)
                    {
                        bool0.FeatureLayer = null;
                    }
                }
                imap_0.AddLayer(annotationLayer as ILayer);
                ilayer0.DisplayAnnotation = false;
                imap0.Refresh();
            }
        }
Esempio n. 30
0
        public static void ConvertLabels2Anno(IMap imap_0, IGeoFeatureLayer igeoFeatureLayer_0, string string_0,
                                              double double_0)
        {
            int i;
            IAnnotateLayerProperties igeoFeatureLayer0;
            IElementCollection       elementCollection;
            IElementCollection       elementCollection1;
            IElementCollection       elementCollection2;
            IElement    element;
            int         num;
            IActiveView imap0 = imap_0 as IActiveView;
            int         j     = 0;
            int         count = 0;
            IAnnotateLayerPropertiesCollection annotateLayerPropertiesCollectionClass =
                new AnnotateLayerPropertiesCollection();
            IAnnotateLayerPropertiesCollection annotationProperties = igeoFeatureLayer_0.AnnotationProperties;

            for (i = 0; i < annotationProperties.Count; i++)
            {
                annotationProperties.QueryItem(i, out igeoFeatureLayer0, out elementCollection, out elementCollection1);
                if (igeoFeatureLayer0 != null)
                {
                    annotateLayerPropertiesCollectionClass.Add(
                        (igeoFeatureLayer0 as IClone).Clone() as IAnnotateLayerProperties);
                }
            }
            igeoFeatureLayer0 = null;
            IOverposterProperties overposterProperties = (imap_0 as IMapOverposter).OverposterProperties;
            IGraphicsLayer        double0 = (imap_0.BasicGraphicsLayer as ICompositeGraphicsLayer).AddLayer(string_0,
                                                                                                            igeoFeatureLayer_0);

            (double0 as IGraphicsLayerScale).ReferenceScale = double_0;
            double0.Activate(imap0.ScreenDisplay);
            for (i = 0; i < annotateLayerPropertiesCollectionClass.Count; i++)
            {
                annotateLayerPropertiesCollectionClass.QueryItem(i, out igeoFeatureLayer0, out elementCollection,
                                                                 out elementCollection1);
                if (igeoFeatureLayer0 != null)
                {
                    igeoFeatureLayer0.FeatureLayer      = igeoFeatureLayer_0;
                    igeoFeatureLayer0.GraphicsContainer = double0 as IGraphicsContainer;
                    igeoFeatureLayer0.AddUnplacedToGraphicsContainer = false;
                    igeoFeatureLayer0.CreateUnplacedElements         = true;
                    igeoFeatureLayer0.DisplayAnnotation  = true;
                    igeoFeatureLayer0.FeatureLinked      = false;
                    igeoFeatureLayer0.LabelWhichFeatures = esriLabelWhichFeatures.esriAllFeatures;
                    igeoFeatureLayer0.UseOutput          = true;
                    ((igeoFeatureLayer0 as ILabelEngineLayerProperties2).OverposterLayerProperties as
                     IOverposterLayerProperties2).TagUnplaced = true;
                }
            }
            annotateLayerPropertiesCollectionClass.Sort();
            IAnnotateMapProperties annotateMapPropertiesClass = new AnnotateMapProperties()
            {
                AnnotateLayerPropertiesCollection = annotateLayerPropertiesCollectionClass
            };
            ITrackCancel cancelTrackerClass = new CancelTracker();

            (imap_0.AnnotationEngine as IAnnotateMap2).Label(overposterProperties, annotateMapPropertiesClass, imap_0,
                                                             cancelTrackerClass);
            for (i = 0; i < annotateLayerPropertiesCollectionClass.Count; i++)
            {
                annotateLayerPropertiesCollectionClass.QueryItem(i, out igeoFeatureLayer0, out elementCollection,
                                                                 out elementCollection2);
                if (igeoFeatureLayer0 != null)
                {
                    count = count + elementCollection2.Count;
                    if (elementCollection2.Count > 0)
                    {
                        IOverflowGraphicsContainer overflowGraphicsContainer = double0 as IOverflowGraphicsContainer;
                        for (j = 0; j < elementCollection2.Count; j++)
                        {
                            elementCollection2.QueryItem(j, out element, out num);
                            overflowGraphicsContainer.AddOverflowElement(element);
                        }
                    }
                    igeoFeatureLayer0.FeatureLayer = null;
                }
            }
            igeoFeatureLayer_0.DisplayAnnotation = false;
            imap0.ContentsChanged();
            imap0.Refresh();
        }