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 { } }
/// <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; }
public void EnableFeatureLayerLabel(IFeatureLayer pFeaturelayer, string sLableField, IRgbColor pRGB, int size, string angleField) { //判断图层是否为空 if (pFeaturelayer == null) { return; } IGeoFeatureLayer pGeoFeaturelayer = (IGeoFeatureLayer)pFeaturelayer; IAnnotateLayerPropertiesCollection pAnnoLayerPropsCollection; pAnnoLayerPropsCollection = pGeoFeaturelayer.AnnotationProperties; pAnnoLayerPropsCollection.Clear(); stdole.IFontDisp pFont = new stdole.StdFont() as stdole.IFontDisp;; //字体 ITextSymbol pTextSymbol; pFont.Name = "黑体"; pFont.Size = 4; //未指定字体颜色则默认为黑色 if (pRGB == null) { pRGB = new RgbColorClass(); pRGB.Red = 0; pRGB.Green = 0; pRGB.Blue = 0; } pTextSymbol = new TextSymbolClass(); pTextSymbol.Color = (IColor)pRGB; pTextSymbol.Size = size; //标注大小 IBasicOverposterLayerProperties4 pBasicOverposterlayerProps4 = new BasicOverposterLayerPropertiesClass(); switch (pFeaturelayer.FeatureClass.ShapeType)//判断图层类型 { case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolygon: pBasicOverposterlayerProps4.FeatureType = esriBasicOverposterFeatureType.esriOverposterPolygon; break; case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPoint: pBasicOverposterlayerProps4.FeatureType = esriBasicOverposterFeatureType.esriOverposterPoint; break; case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolyline: pBasicOverposterlayerProps4.FeatureType = esriBasicOverposterFeatureType.esriOverposterPolyline; break; } pBasicOverposterlayerProps4.PointPlacementMethod = esriOverposterPointPlacementMethod.esriRotationField; //pBasicOverposterlayerProps4.RotationField = angleField; ILabelEngineLayerProperties pLabelEnginelayerProps = new LabelEngineLayerPropertiesClass(); pLabelEnginelayerProps.Expression = "[" + sLableField + "]"; pLabelEnginelayerProps.Symbol = pTextSymbol; pLabelEnginelayerProps.BasicOverposterLayerProperties = pBasicOverposterlayerProps4 as IBasicOverposterLayerProperties; pAnnoLayerPropsCollection.Add((IAnnotateLayerProperties)pLabelEnginelayerProps); pGeoFeaturelayer.DisplayAnnotation = true;//很重要,必须设置 //刷新地图 axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null); }
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(); }
/// <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; }
/// <summary> /// 创建标注 /// </summary> /// <param name="feaName"></param> /// <param name="featureDataset"></param> /// <param name="feaworkspace"></param> /// <param name="fsEditAnno"></param> /// <param name="intScale"></param> public void createAnnoFeatureClass(string feaName, IFeatureDataset featureDataset, IFeatureWorkspace feaworkspace, IFieldsEdit fsEditAnno, int intScale) { //创建注记的特殊字段 try { //注记的workSpace IFeatureWorkspaceAnno pFWSAnno = feaworkspace as IFeatureWorkspaceAnno; //标注操作空间 IGraphicsLayerScale pGLS = new GraphicsLayerScaleClass(); //图形比例接口 pGLS.Units = esriUnits.esriMeters; //图形比例设定 pGLS.ReferenceScale = Convert.ToDouble(intScale); //创建注记必须要设置比例尺 IFormattedTextSymbol myTextSymbol = new TextSymbolClass(); //文本格式接口 ISymbol pSymbol = (ISymbol)myTextSymbol; //标记 //Anno要素类必须有的缺省符号 ISymbolCollection2 pSymbolColl = new SymbolCollectionClass(); ISymbolIdentifier2 pSymID = new SymbolIdentifierClass(); pSymbolColl.AddSymbol(pSymbol, "Default", out pSymID); //Anno要素类的必要属性 IAnnotateLayerProperties pAnnoProps = new LabelEngineLayerPropertiesClass(); pAnnoProps.CreateUnplacedElements = true; pAnnoProps.CreateUnplacedElements = true; pAnnoProps.DisplayAnnotation = true; pAnnoProps.UseOutput = true; ILabelEngineLayerProperties pLELayerProps = (ILabelEngineLayerProperties)pAnnoProps; pLELayerProps.Symbol = pSymbol as ITextSymbol; pLELayerProps.SymbolID = 0; pLELayerProps.IsExpressionSimple = true; pLELayerProps.Offset = 0; pLELayerProps.SymbolID = 0; IAnnotationExpressionEngine aAnnoVBScriptEngine = new AnnotationVBScriptEngineClass(); pLELayerProps.ExpressionParser = aAnnoVBScriptEngine; pLELayerProps.Expression = "[DESCRIPTION]"; IAnnotateLayerTransformationProperties pATP = (IAnnotateLayerTransformationProperties)pAnnoProps; pATP.ReferenceScale = pGLS.ReferenceScale; pATP.ScaleRatio = 1; IAnnotateLayerPropertiesCollection pAnnoPropsColl = new AnnotateLayerPropertiesCollectionClass(); pAnnoPropsColl.Add(pAnnoProps); IObjectClassDescription pOCDesc = new AnnotationFeatureClassDescription(); IFields fields = pOCDesc.RequiredFields; IFeatureClassDescription pFDesc = pOCDesc as IFeatureClassDescription; for (int j = 0; j < pOCDesc.RequiredFields.FieldCount; j++) { fsEditAnno.AddField(pOCDesc.RequiredFields.get_Field(j)); } fields = fsEditAnno as IFields; pFWSAnno.CreateAnnotationClass(feaName, fields, pOCDesc.InstanceCLSID, pOCDesc.ClassExtensionCLSID, pFDesc.ShapeFieldName, "", featureDataset, null, pAnnoPropsColl, pGLS, pSymbolColl, true); } catch { } }
private IFeatureClass method_1(IFeatureWorkspace ifeatureWorkspace_0, string string_4, double double_0, ITextSymbol itextSymbol_0, IFields ifields_0) { IObjectClassDescription description = new AnnotationFeatureClassDescriptionClass(); IFeatureClassDescription description2 = description as IFeatureClassDescription; IClone requiredFields = description.RequiredFields as IClone; IFields fields = requiredFields.Clone() as IFields; IFieldEdit edit = null; int index = fields.FindField(description2.ShapeFieldName); edit = fields.get_Field(index) as IFieldEdit; IGeometryDefEdit geometryDef = edit.GeometryDef as IGeometryDefEdit; IFeatureWorkspaceAnno anno = ifeatureWorkspace_0 as IFeatureWorkspaceAnno; IGraphicsLayerScale referenceScale = new GraphicsLayerScaleClass { ReferenceScale = double_0, Units = esriUnits.esriMeters }; UID instanceCLSID = description.InstanceCLSID; UID classExtensionCLSID = description.ClassExtensionCLSID; ISymbolCollection symbolCollection = new SymbolCollectionClass(); symbolCollection.set_Symbol(0, itextSymbol_0 as ISymbol); IAnnotateLayerPropertiesCollection2 annoProperties = new AnnotateLayerPropertiesCollectionClass(); IAnnotateLayerProperties item = new LabelEngineLayerPropertiesClass { Class = "要素类 1", FeatureLinked = false, AddUnplacedToGraphicsContainer = false, CreateUnplacedElements = true, DisplayAnnotation = true, UseOutput = true }; ILabelEngineLayerProperties properties2 = item as ILabelEngineLayerProperties; properties2.Offset = 0.0; properties2.SymbolID = 0; properties2.Symbol = itextSymbol_0; annoProperties.Add(item); for (int i = 0; i < ifields_0.FieldCount; i++) { if (fields.FindField(ifields_0.get_Field(i).Name) == -1) { (fields as IFieldsEdit).AddField(ifields_0.get_Field(i)); } } try { return(anno.CreateAnnotationClass(string_4, fields, instanceCLSID, classExtensionCLSID, description2.ShapeFieldName, "", null, null, annoProperties, referenceScale, symbolCollection, false)); } catch (Exception exception) { Logger.Current.Error("", exception, ""); } return(null); }
private void btnNew_Click(object sender, EventArgs e) { frmInput input = new frmInput("名称:", "") { Text = "输入" }; if (input.ShowDialog() == DialogResult.OK) { if (input.InputValue.Trim().Length == 0) { MessageBox.Show("非法类名!"); } else { ISymbolIdentifier2 identifier; for (int i = 0; i < this.listBoxControl1.Items.Count; i++) { SymbolIdentifierWrap wrap = this.listBoxControl1.Items[i] as SymbolIdentifierWrap; if (wrap.AnnotateLayerProperties.Class == input.InputValue) { MessageBox.Show("类名必须唯一!"); return; } } ITextSymbol symbol = new TextSymbolClass(); int symbolID = this.method_4(NewObjectClassHelper.m_pObjectClassHelper.m_pSymbolColl); NewObjectClassHelper.m_pObjectClassHelper.m_pSymbolColl.set_Symbol(symbolID, symbol as ISymbol); IAnnotateLayerProperties item = new LabelEngineLayerPropertiesClass { Class = input.InputValue, FeatureLinked = NewObjectClassHelper.m_pObjectClassHelper.IsRelatedFeature, AddUnplacedToGraphicsContainer = false, CreateUnplacedElements = true, DisplayAnnotation = true, UseOutput = true }; ILabelEngineLayerProperties properties2 = item as ILabelEngineLayerProperties; if (NewObjectClassHelper.m_pObjectClassHelper.IsRelatedFeature) { new AnnotationVBScriptEngineClass(); IFeatureClass relatedFeatureClass = NewObjectClassHelper.m_pObjectClassHelper.RelatedFeatureClass; properties2.Expression = "[" + relatedFeatureClass.ObjectClassID + "]"; properties2.IsExpressionSimple = true; } properties2.Offset = 0.0; properties2.SymbolID = symbolID; properties2.Symbol = symbol; NewObjectClassHelper.m_pObjectClassHelper.m_pAnnoPropertiesColn.Add(item); NewObjectClassHelper.m_pObjectClassHelper.m_pSymbolColl.GetSymbolIdentifier(symbolID, out identifier); this.listBoxControl1.Items.Add(new SymbolIdentifierWrap(item, identifier)); } } }
public static void InitLabel(IGeoFeatureLayer pGeoFeaturelayer, string sFieldName) //重新标注整个图层 { /*IAnnotateLayerPropertiesCollection作用于一个要素图层的所有注记设置的集合,控制要素图层的一系列注记对象*/ IAnnotateLayerPropertiesCollection pAnnoLayerPropsCollection; //定义标注类 pAnnoLayerPropsCollection = pGeoFeaturelayer.AnnotationProperties; /*将要素图层注记集合中的所有项都移除*/ pAnnoLayerPropsCollection.Clear(); IBasicOverposterLayerProperties pBasicOverposterlayerProps = new BasicOverposterLayerPropertiesClass(); switch (pGeoFeaturelayer.FeatureClass.ShapeType) { case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolygon: pBasicOverposterlayerProps.FeatureType = esriBasicOverposterFeatureType.esriOverposterPolygon; break; case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPoint: pBasicOverposterlayerProps.FeatureType = esriBasicOverposterFeatureType.esriOverposterPoint; break; case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolyline: pBasicOverposterlayerProps.FeatureType = esriBasicOverposterFeatureType.esriOverposterPolyline; break; } ITextSymbol pTextSymbol = new TextSymbolClass(); stdole.IFontDisp pFont = (stdole.IFontDisp) new stdole.StdFont(); IRgbColor pRGB = null; pFont.Name = "Arial"; pFont.Size = 9; pFont.Bold = false; pFont.Italic = false; pFont.Underline = false; pTextSymbol.Font = pFont; if (pRGB == null) { pRGB = new RgbColorClass(); pRGB.Red = 0; pRGB.Green = 0; pRGB.Blue = 0; pTextSymbol.Color = (IColor)pRGB; } ILabelEngineLayerProperties pLabelEnginelayerProps = new LabelEngineLayerPropertiesClass(); pLabelEnginelayerProps.Expression = "[" + sFieldName + "]"; pLabelEnginelayerProps.Symbol = pTextSymbol; pLabelEnginelayerProps.BasicOverposterLayerProperties = pBasicOverposterlayerProps; /*将一项标注属性(LayerEngineLayerProperties对象)增加到要素图层的注记集合当中*/ /*IAnnotateLayerProperties接口用于获取和修改要素图层注记类的注记属性,定义要素图层动态注记(文本)的显示*/ pAnnoLayerPropsCollection.Add((IAnnotateLayerProperties)pLabelEnginelayerProps); }
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); }
private void btnAddClass_Click(object sender, EventArgs e) { frmInput input = new frmInput("类名称:", ""); if (input.ShowDialog() == DialogResult.OK) { if (input.InputValue.Trim().Length == 0) { MessageBox.Show("非法类名!"); } else { for (int i = 0; i < this.cboClass.Properties.Items.Count; i++) { AnnotateLayerPropertiesWrap wrap = this.cboClass.Properties.Items[i] as AnnotateLayerPropertiesWrap; if (wrap.AnnotateLayerProperties.Class == input.InputValue) { MessageBox.Show("类名必须唯一!"); return; } } IAnnotateLayerProperties properties = new LabelEngineLayerPropertiesClass { Class = input.InputValue, FeatureLinked = this.iannotateLayerProperties_0.FeatureLinked, FeatureLayer = this.iannotateLayerProperties_0.FeatureLayer, AddUnplacedToGraphicsContainer = this.iannotateLayerProperties_0.AddUnplacedToGraphicsContainer, AnnotationMaximumScale = this.iannotateLayerProperties_0.AnnotationMaximumScale, AnnotationMinimumScale = this.iannotateLayerProperties_0.AnnotationMinimumScale, CreateUnplacedElements = this.iannotateLayerProperties_0.CreateUnplacedElements, DisplayAnnotation = this.iannotateLayerProperties_0.DisplayAnnotation, LabelWhichFeatures = this.iannotateLayerProperties_0.LabelWhichFeatures, Priority = this.iannotateLayerProperties_0.Priority, UseOutput = this.iannotateLayerProperties_0.UseOutput, WhereClause = this.iannotateLayerProperties_0.WhereClause }; ILabelEngineLayerProperties properties2 = properties as ILabelEngineLayerProperties; ILabelEngineLayerProperties properties3 = this.iannotateLayerProperties_0 as ILabelEngineLayerProperties; properties2.Expression = properties3.Expression; properties2.IsExpressionSimple = properties3.IsExpressionSimple; int num2 = this.method_2(); properties2.SymbolID = num2; properties2.Symbol = (properties3.Symbol as IClone).Clone() as ITextSymbol; this.cboClass.Properties.Items.Add(new AnnotateLayerPropertiesWrap(properties, num2, true)); this.bool_3 = true; } } }
public void Init() { if (NewObjectClassHelper.m_pObjectClassHelper.IsRelatedFeature) { this.panel1.Visible = false; this.panel2.Visible = true; } else { this.panel2.Visible = false; this.panel1.Visible = true; } if (NewObjectClassHelper.m_pObjectClassHelper.m_pSymbolColl.Count == 0) { ITextSymbol symbol = new TextSymbolClass(); NewObjectClassHelper.m_pObjectClassHelper.m_pSymbolColl.set_Symbol(0, symbol as ISymbol); IAnnotateLayerProperties item = new LabelEngineLayerPropertiesClass { Class = "要素类 1", FeatureLinked = NewObjectClassHelper.m_pObjectClassHelper.IsRelatedFeature, AddUnplacedToGraphicsContainer = false, CreateUnplacedElements = true, DisplayAnnotation = true, UseOutput = true }; ILabelEngineLayerProperties properties2 = item as ILabelEngineLayerProperties; if (NewObjectClassHelper.m_pObjectClassHelper.IsRelatedFeature) { new AnnotationVBScriptEngineClass(); IFeatureClass relatedFeatureClass = NewObjectClassHelper.m_pObjectClassHelper.RelatedFeatureClass; properties2.Expression = "[" + relatedFeatureClass.ObjectClassID + "]"; properties2.IsExpressionSimple = true; } properties2.Offset = 0.0; properties2.SymbolID = 0; properties2.Symbol = symbol; NewObjectClassHelper.m_pObjectClassHelper.m_pAnnoPropertiesColn.Add(item); } this.listBoxControl1.Items.Clear(); for (int i = 0; i < NewObjectClassHelper.m_pObjectClassHelper.m_pAnnoPropertiesColn.Count; i++) { IAnnotateLayerProperties properties3; int num2; ISymbolIdentifier2 identifier; NewObjectClassHelper.m_pObjectClassHelper.m_pAnnoPropertiesColn.QueryItem(i, out properties3, out num2); NewObjectClassHelper.m_pObjectClassHelper.m_pSymbolColl.GetSymbolIdentifier(num2, out identifier); this.listBoxControl1.Items.Add(new SymbolIdentifierWrap(properties3, identifier)); } this.listBoxControl1.SelectedIndex = 0; }
/// <summary> /// 设置图层注释 /// </summary> /// <param name="pFeaturelayer"></param> /// <param name="expression"></param> /// <param name="textSymbol"></param> public static void setLayerAnnotation(IFeatureLayer pFeaturelayer, string expression, ITextSymbol textSymbol) { //判断图层是否为空 if (pFeaturelayer == null) { return; } IGeoFeatureLayer pGeoFeaturelayer = (IGeoFeatureLayer)pFeaturelayer; IAnnotateLayerPropertiesCollection pAnnoLayerPropsCollection; pAnnoLayerPropsCollection = pGeoFeaturelayer.AnnotationProperties; if (pAnnoLayerPropsCollection == null) { return; } pAnnoLayerPropsCollection.Clear(); IBasicOverposterLayerProperties4 pBasicOverposterlayerProps = new BasicOverposterLayerPropertiesClass(); switch (pFeaturelayer.FeatureClass.ShapeType)//判断图层类型 { case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolygon: pBasicOverposterlayerProps.FeatureType = esriBasicOverposterFeatureType.esriOverposterPolygon; pBasicOverposterlayerProps.PolygonPlacementMethod = esriOverposterPolygonPlacementMethod.esriAlwaysHorizontal; break; case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPoint: pBasicOverposterlayerProps.FeatureType = esriBasicOverposterFeatureType.esriOverposterPoint; pBasicOverposterlayerProps.PointPlacementMethod = esriOverposterPointPlacementMethod.esriAroundPoint; break; case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolyline: pBasicOverposterlayerProps.FeatureType = esriBasicOverposterFeatureType.esriOverposterPolyline; break; } pBasicOverposterlayerProps.PlaceOnlyInsidePolygon = true; pBasicOverposterlayerProps.NumLabelsOption = esriBasicNumLabelsOption.esriOneLabelPerShape; ILabelEngineLayerProperties pLabelEnginelayerProps = new LabelEngineLayerPropertiesClass(); pLabelEnginelayerProps.Expression = expression; pLabelEnginelayerProps.Symbol = textSymbol; pLabelEnginelayerProps.BasicOverposterLayerProperties = pBasicOverposterlayerProps as IBasicOverposterLayerProperties; pAnnoLayerPropsCollection.Add((IAnnotateLayerProperties)pLabelEnginelayerProps); pGeoFeaturelayer.DisplayAnnotation = true;//很重要,必须设置 }
public static void SetLayerAnnotation(IGeoFeatureLayer geolyr, string field) { geolyr.AnnotationProperties.Clear(); IBasicOverposterLayerProperties pBasic = new BasicOverposterLayerPropertiesClass(); ILabelEngineLayerProperties pLableEngine = new LabelEngineLayerPropertiesClass(); ITextSymbol textSymbol = new TextSymbolClass(); string lable = "[" + field + "]"; pLableEngine.Expression = lable; pLableEngine.IsExpressionSimple = true; pBasic.NumLabelsOption = esriBasicNumLabelsOption.esriOneLabelPerShape; pLableEngine.BasicOverposterLayerProperties = pBasic; pLableEngine.Symbol = textSymbol; geolyr.AnnotationProperties.Add(pLableEngine as IAnnotateLayerProperties); }
private void CreateLabels() { if (Layer is IGeoFeatureLayer geoFeatureLayer) { const double TextSizePt = 9.0; const double GoodLookingScale = 500.0; double referenceScale = ArcmapUtils.GetReferenceScale(GoodLookingScale); string tableName = ArcobjWorkspaceUtils.UnqualifyTableName(ArcobjWorkspaceUtils.GetTableName(geoFeatureLayer.FeatureClass as IDataset)); string oidFieldName = geoFeatureLayer.FeatureClass.OIDFieldName; string globalIdFieldName = ArcobjWorkspaceUtils.GetGlobalIdFieldName(geoFeatureLayer.FeatureClass as ITable); string expression = FormatLabelExpression(tableName, oidFieldName, globalIdFieldName); ITextSymbol textSymbol = new TextSymbolClass(); textSymbol.Color = ArcmapLayerUtils.DetectLayerMainColor(geoFeatureLayer); textSymbol.Size = TextSizePt / referenceScale * GoodLookingScale; // Remove existing annotations geoFeatureLayer.DisplayAnnotation = false; geoFeatureLayer.AnnotationProperties.Clear(); IAnnotateLayerProperties annotateLayerProperties = new LabelEngineLayerPropertiesClass(); annotateLayerProperties.UseOutput = true; annotateLayerProperties.LabelWhichFeatures = esriLabelWhichFeatures.esriVisibleFeatures; annotateLayerProperties.CreateUnplacedElements = true; ILabelEngineLayerProperties2 labelEngineProperties = (ILabelEngineLayerProperties2)annotateLayerProperties; labelEngineProperties.ExpressionParser = new AnnotationVBScriptEngineClass(); labelEngineProperties.Expression = expression; labelEngineProperties.Symbol = textSymbol; IBasicOverposterLayerProperties overposterProperties = labelEngineProperties.BasicOverposterLayerProperties; overposterProperties.GenerateUnplacedLabels = true; overposterProperties.NumLabelsOption = esriBasicNumLabelsOption.esriOneLabelPerShape; overposterProperties.PointPlacementOnTop = true; overposterProperties.PointPlacementMethod = esriOverposterPointPlacementMethod.esriSpecifiedAngles; overposterProperties.PointPlacementAngles = new[] { 30.0 }; overposterProperties.LineLabelPosition = CreateLineLabelPosition(); if (labelEngineProperties.OverposterLayerProperties is IOverposterLayerProperties2 overposterProperties2) { overposterProperties2.TagUnplaced = false; // The "place overlapping labels" option } // Show new annotation in map geoFeatureLayer.AnnotationProperties.Add(annotateLayerProperties); geoFeatureLayer.DisplayAnnotation = true; ArcmapUtils.InvalidateMap(ArcmapUtils.GetFocusMap()); } }
/// <summary> /// 改变一个图层的标注符号和标注字段 /// </summary> /// <param name="feaLayer"></param> private void ChangeLayerAnno(IFeatureLayer feaLayer) { IGeoFeatureLayer geoLayer = feaLayer as IGeoFeatureLayer; if (geoLayer == null) { return; } geoLayer.AnnotationProperties.Clear(); RgbColorClass color = new RgbColorClass(); color.Red = 255; color.Blue = 0; color.Green = 0; TextSymbolClass txtSymbol = new TextSymbolClass(); stdole.StdFontClass font = new stdole.StdFontClass(); font.Name = "黑体"; font.Size = 12; txtSymbol.Font = font as stdole.IFontDisp; txtSymbol.Color = color; LineLabelPositionClass linePos = new LineLabelPositionClass(); linePos.Parallel = false; linePos.Perpendicular = true; linePos.Above = true; LineLabelPlacementPrioritiesClass linePlac = new LineLabelPlacementPrioritiesClass(); BasicOverposterLayerPropertiesClass basOve = new BasicOverposterLayerPropertiesClass(); //不屏蔽这句有些线图层的标注不显示 //basOve.FeatureType = esriBasicOverposterFeatureType.esriOverposterPolyline; basOve.LineLabelPosition = linePos; basOve.LineLabelPlacementPriorities = linePlac; LabelEngineLayerPropertiesClass labelProp = new LabelEngineLayerPropertiesClass(); labelProp.BasicOverposterLayerProperties = basOve; labelProp.Symbol = txtSymbol; labelProp.Expression = "[" + feaLayer.DisplayField + "]"; geoLayer.AnnotationProperties.Add(labelProp); }
private void btnAdd_Click(object sender, EventArgs e) { string str = this.txtClassName.Text.Trim(); if (str.Length != 0) { if (this.method_0(str)) { MessageBox.Show("类名已存在!"); } else { IAnnotateLayerProperties properties; int num; this.iannotateLayerPropertiesCollection2_0.QueryItem(0, out properties, out num); IAnnotateLayerProperties properties2 = new LabelEngineLayerPropertiesClass { Class = str, FeatureLinked = properties.FeatureLinked, FeatureLayer = properties.FeatureLayer, AddUnplacedToGraphicsContainer = properties.AddUnplacedToGraphicsContainer, AnnotationMaximumScale = properties.AnnotationMaximumScale, AnnotationMinimumScale = properties.AnnotationMinimumScale, CreateUnplacedElements = properties.CreateUnplacedElements, DisplayAnnotation = properties.DisplayAnnotation, LabelWhichFeatures = properties.LabelWhichFeatures, Priority = properties.Priority, UseOutput = properties.UseOutput, WhereClause = properties.WhereClause }; ILabelEngineLayerProperties properties3 = properties2 as ILabelEngineLayerProperties; ILabelEngineLayerProperties properties4 = properties as ILabelEngineLayerProperties; properties3.Expression = properties4.Expression; properties3.IsExpressionSimple = properties4.IsExpressionSimple; num = this.method_1(); properties3.SymbolID = num; properties3.Symbol = (properties4.Symbol as IClone).Clone() as ITextSymbol; TreeNode node = new TreeNode(str) { Checked = properties2.DisplayAnnotation, Tag = new frmLabelManager.AnnotateLayerPropertiesWrap(properties2, num, true) }; this.treeNode_0.Nodes.Add(node); } } }
/// <summary> /// 设置回采工作面瓦斯涌出量标注样式 /// </summary> /// <param name="pFeatureLayer"></param> public void SettingStopeWorkingFaceGasGushQuantityLabel(IFeatureLayer pFeatureLayer) { IGeoFeatureLayer pGeoFeatureLayer = pFeatureLayer as IGeoFeatureLayer; pGeoFeatureLayer.AnnotationProperties.Clear();//必须执行,因为里面有一个默认的 IBasicOverposterLayerProperties pBasic = new BasicOverposterLayerPropertiesClass(); ILabelEngineLayerProperties pLableEngine = new LabelEngineLayerPropertiesClass(); //ITextSymbol pTextSymbol = new TextSymbolClass(); //pTextSymbol = (ITextSymbol)pStyleGalleryItem.Item; string pLable = "\"<UND>\"+ [ABSOLUTE_GAS_GUSH_QUANTITY]+\"|\"+ [RELATIVE_GAS_GUSH_QUANTITY] + \"</UND>\"+ vbNewLine + [WORKING_FACE_DAY_OUTPUT]+\"|\"+ [STOPE_DATE]"; pLableEngine.Expression = pLable; pLableEngine.IsExpressionSimple = true; pBasic.NumLabelsOption = esriBasicNumLabelsOption.esriOneLabelPerShape; pLableEngine.BasicOverposterLayerProperties = pBasic; //pLableEngine.Symbol = pTextSymbol; pGeoFeatureLayer.AnnotationProperties.Add(pLableEngine as IAnnotateLayerProperties); pGeoFeatureLayer.DisplayAnnotation = true; }
/// <summary> /// 设置瓦斯动力现象点标注样式 /// </summary> /// <param name="pFeatureLayer"></param> public void SettingPowerPhenomenonLabel(IFeatureLayer pFeatureLayer) { IGeoFeatureLayer pGeoFeatureLayer = pFeatureLayer as IGeoFeatureLayer; pGeoFeatureLayer.AnnotationProperties.Clear();//必须执行,因为里面有一个默认的 IBasicOverposterLayerProperties pBasic = new BasicOverposterLayerPropertiesClass(); ILabelEngineLayerProperties pLableEngine = new LabelEngineLayerPropertiesClass(); //ITextSymbol pTextSymbol = new TextSymbolClass(); //pTextSymbol = (ITextSymbol)pStyleGalleryItem.Item; string pLable = "\"<UND>\"+ [OUTBURST_ROCK_QUANTITY]+\"|\"+ [GUSH_GAS_QUANTITY] + \"</UND>\"+ vbNewLine + [COORDINATE_Z]+\"|\"+ [OCCURRENCE_TIME]"; pLableEngine.Expression = pLable; pLableEngine.IsExpressionSimple = true; pBasic.NumLabelsOption = esriBasicNumLabelsOption.esriOneLabelPerShape; pLableEngine.BasicOverposterLayerProperties = pBasic; //pLableEngine.Symbol = pTextSymbol; pGeoFeatureLayer.AnnotationProperties.Add(pLableEngine as IAnnotateLayerProperties); pGeoFeatureLayer.DisplayAnnotation = true; }
/// <summary> /// 设置瓦斯含量点图层标注样式 /// </summary> /// <param name="pFeatureLayer"></param> public void SettingGasContentPointLabel(IFeatureLayer pFeatureLayer) { IGeoFeatureLayer pGeoFeatureLayer = pFeatureLayer as IGeoFeatureLayer; pGeoFeatureLayer.AnnotationProperties.Clear();//必须执行,因为里面有一个默认的 IBasicOverposterLayerProperties pBasic = new BasicOverposterLayerPropertiesClass(); ILabelEngineLayerProperties pLableEngine = new LabelEngineLayerPropertiesClass(); //ITextSymbol pTextSymbol = new TextSymbolClass(); //pTextSymbol = (ITextSymbol)pStyleGalleryItem.Item; string pLable = "\"<UND>\"+ [GAS_CONTENT_VALUE] + \"</UND>\"+ vbNewLine + [COORDINATE_Z]+\"|\"+ [DEPTH]"; pLableEngine.Expression = pLable; pLableEngine.IsExpressionSimple = true; pBasic.NumLabelsOption = esriBasicNumLabelsOption.esriOneLabelPerShape; pLableEngine.BasicOverposterLayerProperties = pBasic; //pLableEngine.Symbol = pTextSymbol; pGeoFeatureLayer.AnnotationProperties.Add(pLableEngine as IAnnotateLayerProperties); pGeoFeatureLayer.DisplayAnnotation = true; }
//更换数据库时,重新初始化地图控件 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); } }
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); }
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(); } }
/// <summary> /// 对生成的各图层进行符号、标注设置 /// </summary> /// <param name="impfilepath">导入符号mxd文件路径</param> /// <param name="passpoint">生成的点图层</param> /// <param name="passline">生成的线图层</param> public void ImpSymbolFromFile(string impfilepath, ILayer passpoint, ILayer passline) { IMapDocument pMapDocument = new MapDocumentClass(); pMapDocument.Open(impfilepath, null); IMap pMap = pMapDocument.Map[0]; for (int i = 0; i < pMap.LayerCount; i++) { ILayer pLayerSymbol = pMap.get_Layer(i); if (pLayerSymbol is IFeatureLayer && pLayerSymbol.Name.Contains("point")) { IFeatureLayer pFLayerSymbol = pLayerSymbol as IFeatureLayer; IGeoFeatureLayer pGFLayerSymbol = pFLayerSymbol as IGeoFeatureLayer; IFeatureLayer pFPasspointWait = passpoint as IFeatureLayer; IGeoFeatureLayer pGPasspointWait = pFPasspointWait as IGeoFeatureLayer; if (pGFLayerSymbol != null) { pGPasspointWait.Renderer = pGFLayerSymbol.Renderer; IAnnotateLayerProperties pAnnoLayerP; // = new LabelEngineLayerPropertiesClass();//渲染图层的符号图层标注 IElementCollection PELECOLL; //queryitem的参数,用不到 IElementCollection pelecoll; //同上 pGFLayerSymbol.AnnotationProperties.QueryItem(0, out pAnnoLayerP, out PELECOLL, out pelecoll); ILabelEngineLayerProperties pLabelEenLayPro = pAnnoLayerP as ILabelEngineLayerProperties; IFontDisp pFont = new StdFontClass() as IFontDisp; ITextSymbol pTextSymbol = new TextSymbolClass(); pTextSymbol.Color = pLabelEenLayPro.Symbol.Color; pFont.Bold = pLabelEenLayPro.Symbol.Font.Bold; pFont.Italic = pLabelEenLayPro.Symbol.Font.Italic; pFont.Strikethrough = pLabelEenLayPro.Symbol.Font.Strikethrough; pFont.Underline = pLabelEenLayPro.Symbol.Font.Underline; pFont.Name = pLabelEenLayPro.Symbol.Font.Name; pFont.Size = pLabelEenLayPro.Symbol.Font.Size; pTextSymbol.Font = pFont; pGPasspointWait.AnnotationProperties.Clear(); ILabelEngineLayerProperties pLabelWaitLayPro = new LabelEngineLayerPropertiesClass();//设置待渲染图层的标注 pLabelWaitLayPro.Expression = pLabelEenLayPro.Expression; pLabelWaitLayPro.Symbol = pTextSymbol; IAnnotateLayerProperties pAnnLayProWait = pLabelWaitLayPro as IAnnotateLayerProperties;//新生成的符号图层设置标注 pAnnLayProWait.DisplayAnnotation = true; pAnnLayProWait.FeatureLayer = pGPasspointWait; pAnnLayProWait.LabelWhichFeatures = esriLabelWhichFeatures.esriVisibleFeatures; pAnnLayProWait.WhereClause = ""; pGPasspointWait.AnnotationProperties.Add(pAnnLayProWait); pGPasspointWait.DisplayAnnotation = true; } } else if (pLayerSymbol is IFeatureLayer && pLayerSymbol.Name.Contains("line")) { IFeatureLayer pFLayerSymbol = pLayerSymbol as IFeatureLayer; IGeoFeatureLayer pGFLayerSymbol = pFLayerSymbol as IGeoFeatureLayer; IFeatureLayer pFPasspointWait = passline as IFeatureLayer; IGeoFeatureLayer pGPasspointWait = pFPasspointWait as IGeoFeatureLayer; if (pGFLayerSymbol != null) { pGPasspointWait.Renderer = pGFLayerSymbol.Renderer; IAnnotateLayerProperties pAnnoLayerP = new LabelEngineLayerPropertiesClass(); //符号图层标注 IElementCollection PELECOLL; //queryitem的参数,用不到 IElementCollection pelecoll; //同上 pGFLayerSymbol.AnnotationProperties.QueryItem(0, out pAnnoLayerP, out PELECOLL, out pelecoll); ILabelEngineLayerProperties pLabelEenLayPro = pAnnoLayerP as ILabelEngineLayerProperties; IFontDisp pFont = new StdFontClass() as IFontDisp; ITextSymbol pTextSymbol = new TextSymbolClass(); pTextSymbol.Color = pLabelEenLayPro.Symbol.Color; pFont.Bold = pLabelEenLayPro.Symbol.Font.Bold; pFont.Italic = pLabelEenLayPro.Symbol.Font.Italic; pFont.Strikethrough = pLabelEenLayPro.Symbol.Font.Strikethrough; pFont.Underline = pLabelEenLayPro.Symbol.Font.Underline; pFont.Name = pLabelEenLayPro.Symbol.Font.Name; pFont.Size = pLabelEenLayPro.Symbol.Font.Size; pTextSymbol.Font = pFont; pGPasspointWait.AnnotationProperties.Clear(); ILabelEngineLayerProperties pLabelWaitLayPro = new LabelEngineLayerPropertiesClass();//设置待渲染图层的标注 pLabelWaitLayPro.Expression = pLabelEenLayPro.Expression; pLabelWaitLayPro.Symbol = pTextSymbol; IAnnotateLayerProperties pAnnLayProWait = pLabelWaitLayPro as IAnnotateLayerProperties;//新生成的符号图层设置标注 pAnnLayProWait.DisplayAnnotation = true; pAnnLayProWait.FeatureLayer = pGPasspointWait; pAnnLayProWait.LabelWhichFeatures = esriLabelWhichFeatures.esriVisibleFeatures; pAnnLayProWait.WhereClause = ""; pGPasspointWait.AnnotationProperties.Add(pAnnLayProWait); pGPasspointWait.DisplayAnnotation = true; } } } m_pTOCCtl.SetBuddyControl(m_pMapCtl); m_pTOCCtl.ActiveView.Refresh(); m_pMapCtl.ActiveView.Refresh(); }
private IFeatureClass CreateFeatureClass(IFeatureDataset featureDataset,TableStructureNode tableStructureNode, FeatureCodeNode featureCodeNode) { try { if (featureDataset != null) { IFeatureClassDescription fcDesc = new FeatureClassDescriptionClass(); IObjectClassDescription ocDesc = (IObjectClassDescription)fcDesc; ///�������ݱ��ֶ� IFieldChecker fieldChecker = new FieldCheckerClass(); IEnumFieldError enumFieldError = null; IFields validatedFields = CreateFileds(tableStructureNode, featureCodeNode); ///�ֶ���Ϣ��֤ IFields fixFields = null; fieldChecker.ValidateWorkspace = featureDataset.Workspace; fieldChecker.Validate(validatedFields, out enumFieldError, out fixFields); ////����FeatureClass IFeatureClass featureClass = null; if (tableStructureNode.IsGeometryTable) { ////������ע��FeatureClass if (featureCodeNode.GeometryType != "") { featureClass = featureDataset.CreateFeatureClass(featureCodeNode.TableName, fixFields, ocDesc.InstanceCLSID, ocDesc.ClassExtensionCLSID, esriFeatureType.esriFTSimple, fcDesc.ShapeFieldName, ""); } else { ///����ע�� IFormattedTextSymbol pTxtSymbo=new TextSymbolClass(); IFeatureWorkspaceAnno pFeatureWorkspaceAnno = this.m_pIDataset.Workspace as IFeatureWorkspaceAnno; IGraphicsLayerScale pGraphSacle = new GraphicsLayerScaleClass(); pGraphSacle.Units = ESRI.ArcGIS.esriSystem.esriUnits.esriFeet; //pGraphSacle.ReferenceScale=1000; ISymbolCollection pSymbolCollection = new SymbolCollectionClass(); IAnnotateLayerProperties pAnnoLayerProp = new LabelEngineLayerPropertiesClass(); pAnnoLayerProp.FeatureLinked = true; pAnnoLayerProp.CreateUnplacedElements = false; pAnnoLayerProp.DisplayAnnotation = true; pAnnoLayerProp.UseOutput = true; IAnnotationExpressionEngine pAnnoExpressionEngine =new AnnotationVBScriptEngineClass(); ILabelEngineLayerProperties pLabelEngineLayerProperties = pAnnoLayerProp as ILabelEngineLayerProperties; pLabelEngineLayerProperties.ExpressionParser = pAnnoExpressionEngine; pLabelEngineLayerProperties.Expression = "[DESCRIPTION]"; pLabelEngineLayerProperties.IsExpressionSimple = true; pLabelEngineLayerProperties.Offset = 0; pLabelEngineLayerProperties.SymbolID = 0; pLabelEngineLayerProperties.Symbol = pTxtSymbo; IAnnotateLayerTransformationProperties pAnnoLayerTransProp = pAnnoLayerProp as IAnnotateLayerTransformationProperties; pAnnoLayerTransProp.ReferenceScale=200; pAnnoLayerTransProp.Units= ESRI.ArcGIS.esriSystem.esriUnits.esriFeet; pAnnoLayerTransProp.ScaleRatio=1; IAnnotateLayerPropertiesCollection pAnnoLayerProptyCollection =new AnnotateLayerPropertiesCollectionClass(); pAnnoLayerProptyCollection.Add(pAnnoLayerProp); featureClass= pFeatureWorkspaceAnno.CreateAnnotationClass(featureCodeNode.TableName,fixFields,ocDesc.InstanceCLSID ,ocDesc.ClassExtensionCLSID,fcDesc.ShapeFieldName,"",featureDataset,null, pAnnoLayerProptyCollection, pGraphSacle, pSymbolCollection,true); } } else { ///�����ǿռ����� } return featureClass; } return null; } catch(Exception ex) { LogAPI.WriteErrorLog(ex); return null; } }
public void showAnnotationByScale() { IMap pMap = axMapControl.Map; IFeatureLayer pFeaturelayer = pMap.get_Layer(0) as IFeatureLayer; IGeoFeatureLayer pGeoFeatureLayer = pFeaturelayer as IGeoFeatureLayer; //创建标注集接口,可以对标注进行添加、删除、查询、排序等操作 IAnnotateLayerPropertiesCollection pAnnotateLayerPropertiesCollection = new AnnotateLayerPropertiesCollectionClass(); pAnnotateLayerPropertiesCollection = pGeoFeatureLayer.AnnotationProperties; pAnnotateLayerPropertiesCollection.Clear(); //创建标注的颜色 IRgbColor pRgbColor = new RgbColorClass(); pRgbColor.Red = 255; pRgbColor.Green = 0; pRgbColor.Blue = 0; //创建标注的字体样式 ITextSymbol pTextSymbol = new TextSymbolClass(); pTextSymbol.Color = pRgbColor; pTextSymbol.Size = 12; pTextSymbol.Font.Name = "宋体"; //定义 ILineLabelPosition接口,用来管理line features的标注属性,指定标注和线要素的位置关系 ILineLabelPosition pLineLabelPosition = new LineLabelPositionClass(); pLineLabelPosition.Parallel = false; pLineLabelPosition.Perpendicular = true; pLineLabelPosition.InLine = true; //定义 ILineLabelPlacementPriorities接口用来控制标注冲突 ILineLabelPlacementPriorities pLineLabelPlacementPriorities = new LineLabelPlacementPrioritiesClass(); pLineLabelPlacementPriorities.AboveStart = 5; pLineLabelPlacementPriorities.BelowAfter = 4; //定义 IBasicOverposterLayerProperties 接口实现 LineLabelPosition 和 LineLabelPlacementPriorities对象的控制 IBasicOverposterLayerProperties pBasicOverposterLayerProperties = new BasicOverposterLayerPropertiesClass(); pBasicOverposterLayerProperties.LineLabelPlacementPriorities = pLineLabelPlacementPriorities; pBasicOverposterLayerProperties.LineLabelPosition = pLineLabelPosition; pBasicOverposterLayerProperties.FeatureType = esriBasicOverposterFeatureType.esriOverposterPolygon; //创建标注对象 ILabelEngineLayerProperties pLabelEngineLayerProperties = new LabelEngineLayerPropertiesClass(); //设置标注符号 pLabelEngineLayerProperties.Symbol = pTextSymbol; pLabelEngineLayerProperties.BasicOverposterLayerProperties = pBasicOverposterLayerProperties; //声明标注的Expression是否为Simple pLabelEngineLayerProperties.IsExpressionSimple = true; //设置标注字段 pLabelEngineLayerProperties.Expression = "[DIQU]"; //定义IAnnotateLayerTransformationProperties 接口用来控制feature layer的display of dynamic labels IAnnotateLayerTransformationProperties pAnnotateLayerTransformationProperties = pLabelEngineLayerProperties as IAnnotateLayerTransformationProperties; //设置标注参考比例尺 pAnnotateLayerTransformationProperties.ReferenceScale = 500000; //定义IAnnotateLayerProperties接口,决定FeatureLayer动态标注信息 IAnnotateLayerProperties pAnnotateLayerProperties = pLabelEngineLayerProperties as IAnnotateLayerProperties; //设置显示标注最大比例尺 pAnnotateLayerProperties.AnnotationMaximumScale = 500000; //设置显示标注的最小比例 pAnnotateLayerProperties.AnnotationMinimumScale = 25000000; //决定要标注的要素 pAnnotateLayerProperties.WhereClause = "DIQU<>'宿州市'"; //将创建好的标注对象添加到标注集对象中 pAnnotateLayerPropertiesCollection.Add(pAnnotateLayerProperties); //声明标注是否显示 pGeoFeatureLayer.DisplayAnnotation = true; //刷新视图 this.axMapControl.Refresh(); }
private IFeatureClass CreateFeatureClass(IFeatureDataset featureDataset,TableStructureNode tableStructureNode, FeatureCodeNode featureCodeNode) { try { if (featureDataset != null) { IFeatureClassDescription fcDesc = new FeatureClassDescriptionClass(); IObjectClassDescription ocDesc = (IObjectClassDescription)fcDesc; ///创建数据表字段 IFieldChecker fieldChecker = new FieldCheckerClass(); IEnumFieldError enumFieldError = null; IFields validatedFields = CreateFileds(tableStructureNode, featureCodeNode); ///字段信息验证 IFields fixFields = null; fieldChecker.ValidateWorkspace = featureDataset.Workspace; fieldChecker.Validate(validatedFields, out enumFieldError, out fixFields); ////创建FeatureClass IFeatureClass featureClass = null; if (tableStructureNode.IsGeometryTable) { ////创建非注记FeatureClass if (featureCodeNode.GeometryType != "") { featureClass = featureDataset.CreateFeatureClass(featureCodeNode.TableName, fixFields, ocDesc.InstanceCLSID, ocDesc.ClassExtensionCLSID, esriFeatureType.esriFTSimple, fcDesc.ShapeFieldName, ""); } else { ///创建注记 IFormattedTextSymbol pTxtSymbo=new TextSymbolClass(); IFeatureWorkspaceAnno pFeatureWorkspaceAnno = this.m_pIDataset.Workspace as IFeatureWorkspaceAnno; IGraphicsLayerScale pGraphSacle = new GraphicsLayerScaleClass(); pGraphSacle.Units = ESRI.ArcGIS.esriSystem.esriUnits.esriFeet; //pGraphSacle.ReferenceScale=1000; ISymbolCollection pSymbolCollection = new SymbolCollectionClass(); IAnnotateLayerProperties pAnnoLayerProp = new LabelEngineLayerPropertiesClass(); pAnnoLayerProp.FeatureLinked = true; pAnnoLayerProp.CreateUnplacedElements = false; pAnnoLayerProp.DisplayAnnotation = true; pAnnoLayerProp.UseOutput = true; IAnnotationExpressionEngine pAnnoExpressionEngine =new AnnotationVBScriptEngineClass(); ILabelEngineLayerProperties pLabelEngineLayerProperties = pAnnoLayerProp as ILabelEngineLayerProperties; pLabelEngineLayerProperties.ExpressionParser = pAnnoExpressionEngine; pLabelEngineLayerProperties.Expression = "[DESCRIPTION]"; pLabelEngineLayerProperties.IsExpressionSimple = true; pLabelEngineLayerProperties.Offset = 0; pLabelEngineLayerProperties.SymbolID = 0; pLabelEngineLayerProperties.Symbol = pTxtSymbo; IAnnotateLayerTransformationProperties pAnnoLayerTransProp = pAnnoLayerProp as IAnnotateLayerTransformationProperties; pAnnoLayerTransProp.ReferenceScale=200; pAnnoLayerTransProp.Units= ESRI.ArcGIS.esriSystem.esriUnits.esriFeet; pAnnoLayerTransProp.ScaleRatio=1; IAnnotateLayerPropertiesCollection pAnnoLayerProptyCollection =new AnnotateLayerPropertiesCollectionClass(); pAnnoLayerProptyCollection.Add(pAnnoLayerProp); featureClass= pFeatureWorkspaceAnno.CreateAnnotationClass(featureCodeNode.TableName,fixFields,ocDesc.InstanceCLSID ,ocDesc.ClassExtensionCLSID,fcDesc.ShapeFieldName,"",featureDataset,null, pAnnoLayerProptyCollection, pGraphSacle, pSymbolCollection,true); } } else { ///创建非空间数据 } return featureClass; } return null; } catch(Exception ex) { Logger.WriteErrorLog(ex); return null; } }
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); }
public static void AddAnnotate(ILayer layer, string fieldName) { var pGeoLayer = layer as IGeoFeatureLayer; if (pGeoLayer != null) { var ipalpColl = pGeoLayer.AnnotationProperties; ipalpColl.Clear(); IColor fontColor = new RgbColor(); fontColor.RGB = 255; //字体颜色 var font = new Font("宋体", 10, FontStyle.Bold); var dispFont = (IFontDisp)OLE.GetIFontDispFromFont(font); ITextSymbol pTextSymbol = new TextSymbolClass { Color = fontColor, Font = dispFont, Size = 12 }; ////用来控制标注和要素的相对位置关系 ILineLabelPosition pLineLpos = new LineLabelPositionClass { Parallel = true, //修改标注的属性 //Perpendicular = false, Below = true, InLine = false, Above = false }; //用来控制标注冲突 ILineLabelPlacementPriorities pLinePlace = new LineLabelPlacementPrioritiesClass { AboveStart = 5, //让above 和start的优先级为5 BelowAfter = 4 }; //用来实现对ILineLabelPosition 和 ILineLabelPlacementPriorities以及更高级属性的控制 IBasicOverposterLayerProperties pBolp = new BasicOverposterLayerPropertiesClass { FeatureType = esriBasicOverposterFeatureType.esriOverposterPolygon, LineLabelPlacementPriorities = pLinePlace, LineLabelPosition = pLineLpos }; //创建标注对象 ILabelEngineLayerProperties pLableEngine = new LabelEngineLayerPropertiesClass { Symbol = pTextSymbol, BasicOverposterLayerProperties = pBolp, IsExpressionSimple = true, Expression = "[" + fieldName + "]" }; //设置标注的参考比例尺 var pAnnoLyrPros = (IAnnotateLayerTransformationProperties)pLableEngine; pAnnoLyrPros.ReferenceScale = 2500000; //设置标注可见的最大最小比例尺 var pAnnoPros = pLableEngine as IAnnotateLayerProperties; //pAnnoPros.AnnotationMaximumScale = 2500000; //pAnnoPros.AnnotationMinimumScale = 25000000; //pAnnoPros.WhereClause属性 设置过滤条件 ipalpColl.Add(pAnnoPros); } if (pGeoLayer != null) { pGeoLayer.DisplayAnnotation = true; } }
/// <summary> /// 设置瓦斯压力点图层标注样式 /// </summary> public void SettingGasPressureLabel(IFeatureLayer pFeatureLayer) { IGeoFeatureLayer pGeoFeatureLayer = pFeatureLayer as IGeoFeatureLayer; pGeoFeatureLayer.AnnotationProperties.Clear();//必须执行,因为里面有一个默认的 IBasicOverposterLayerProperties pBasic = new BasicOverposterLayerPropertiesClass(); ILabelEngineLayerProperties pLableEngine = new LabelEngineLayerPropertiesClass(); //ITextSymbol pTextSymbol = new TextSymbolClass(); //pTextSymbol = (ITextSymbol)pStyleGalleryItem.Item; string pLable = "\"<UND>\"+ [GAS_PRESSURE_VALUE] + \"</UND>\"+ vbNewLine + [COORDINATE_Z]+\"|\"+ [DEPTH]"; pLableEngine.Expression = pLable; pLableEngine.IsExpressionSimple = true; pBasic.NumLabelsOption = esriBasicNumLabelsOption.esriOneLabelPerShape; pLableEngine.BasicOverposterLayerProperties = pBasic; //pLableEngine.Symbol = pTextSymbol; pGeoFeatureLayer.AnnotationProperties.Add(pLableEngine as IAnnotateLayerProperties); pGeoFeatureLayer.DisplayAnnotation = true; }
public IFeatureClass CreateStandardAnnotationClass( IFeatureWorkspace featureWorkspace, IFeatureDataset featureDataset, String className, ISpatialReference spatialReference, double referenceScale, esriUnits referenceScaleUnits, String configKeyword ) { // Create an annotation class and provide it with a name. ILabelEngineLayerProperties labelEngineLayerProperties = new LabelEngineLayerPropertiesClass(); IAnnotateLayerProperties annotateLayerProperties = (IAnnotateLayerProperties) labelEngineLayerProperties; annotateLayerProperties.Class = className; // Get the symbol from the annotation class. Make any changes to its properties // here. ITextSymbol annotationTextSymbol = labelEngineLayerProperties.Symbol; ISymbol annotationSymbol = (ISymbol)annotationTextSymbol; // Create a symbol collection and add the default symbol from the // annotation class to the collection. Assign the resulting symbol ID // to the annotation class. ISymbolCollection symbolCollection = new SymbolCollectionClass(); ISymbolCollection2 symbolCollection2 = (ISymbolCollection2)symbolCollection; ISymbolIdentifier2 symbolIdentifier2 = null; symbolCollection2.AddSymbol(annotationSymbol, className, out symbolIdentifier2); labelEngineLayerProperties.SymbolID = symbolIdentifier2.ID; // Add the annotation class to a collection. IAnnotateLayerPropertiesCollection annotateLayerPropsCollection = new AnnotateLayerPropertiesCollectionClass(); annotateLayerPropsCollection.Add(annotateLayerProperties); // Create a graphics layer scale object. IGraphicsLayerScale graphicsLayerScale = new GraphicsLayerScaleClass(); graphicsLayerScale.ReferenceScale = referenceScale; graphicsLayerScale.Units = referenceScaleUnits; // Create the overposter properties for the standard label engine. IOverposterProperties overposterProperties = new BasicOverposterPropertiesClass() ; // Instantiate a class description object. //IObjectClassDescription ocDescription = new // AnnotationFeatureClassDescriptionClass(); //IFeatureClassDescription fcDescription = (IFeatureClassDescription)ocDescription; //// Get the shape field from the class description's required fields. //IFields requiredFields = ocDescription.RequiredFields; //int shapeFieldIndex = requiredFields.FindField(fcDescription.ShapeFieldName); //IField shapeField = requiredFields.get_Field(shapeFieldIndex); IFeatureLayer layer = (IFeatureLayer)mLayer; IFields fields = layer.FeatureClass.Fields; IField shapeField = fields.Field[fields.FindField(mField)]; IGeometryDef geometryDef = shapeField.GeometryDef; IGeometryDefEdit geometryDefEdit = (IGeometryDefEdit)geometryDef; geometryDefEdit.SpatialReference_2 = spatialReference; // Create the annotation layer factory. IAnnotationLayerFactory annotationLayerFactory = new FDOGraphicsLayerFactoryClass(); // Create the annotation feature class and an annotation layer for it. IAnnotationLayer annotationLayer = annotationLayerFactory.CreateAnnotationLayer (featureWorkspace, featureDataset, className, geometryDef, null, annotateLayerPropsCollection, graphicsLayerScale, symbolCollection, false, false, false, true, overposterProperties, configKeyword); // Get the feature class from the feature layer. IFeatureLayer featureLayer = (IFeatureLayer)annotationLayer; IFeatureClass featureClass = featureLayer.FeatureClass; return(featureClass); }
/// <summary> /// 设置瓦斯动力现象点标注样式 /// </summary> /// <param name="pFeatureLayer"></param> public void SettingPowerPhenomenonLabel(IFeatureLayer pFeatureLayer) { IGeoFeatureLayer pGeoFeatureLayer = pFeatureLayer as IGeoFeatureLayer; pGeoFeatureLayer.AnnotationProperties.Clear();//必须执行,因为里面有一个默认的 IBasicOverposterLayerProperties pBasic = new BasicOverposterLayerPropertiesClass(); ILabelEngineLayerProperties pLableEngine = new LabelEngineLayerPropertiesClass(); //ITextSymbol pTextSymbol = new TextSymbolClass(); //pTextSymbol = (ITextSymbol)pStyleGalleryItem.Item; string pLable = "\"<UND>\"+ [OUTBURST_ROCK_QUANTITY]+\"|\"+ [GUSH_GAS_QUANTITY] + \"</UND>\"+ vbNewLine + [COORDINATE_Z]+\"|\"+ [OCCURRENCE_TIME]"; pLableEngine.Expression = pLable; pLableEngine.IsExpressionSimple = true; pBasic.NumLabelsOption = esriBasicNumLabelsOption.esriOneLabelPerShape; pLableEngine.BasicOverposterLayerProperties = pBasic; //pLableEngine.Symbol = pTextSymbol; pGeoFeatureLayer.AnnotationProperties.Add(pLableEngine as IAnnotateLayerProperties); pGeoFeatureLayer.DisplayAnnotation = true; }
/// <summary> /// 设置回采工作面瓦斯涌出量标注样式 /// </summary> /// <param name="pFeatureLayer"></param> public void SettingStopeWorkingFaceGasGushQuantityLabel(IFeatureLayer pFeatureLayer) { IGeoFeatureLayer pGeoFeatureLayer = pFeatureLayer as IGeoFeatureLayer; pGeoFeatureLayer.AnnotationProperties.Clear();//必须执行,因为里面有一个默认的 IBasicOverposterLayerProperties pBasic = new BasicOverposterLayerPropertiesClass(); ILabelEngineLayerProperties pLableEngine = new LabelEngineLayerPropertiesClass(); //ITextSymbol pTextSymbol = new TextSymbolClass(); //pTextSymbol = (ITextSymbol)pStyleGalleryItem.Item; string pLable = "\"<UND>\"+ [ABSOLUTE_GAS_GUSH_QUANTITY]+\"|\"+ [RELATIVE_GAS_GUSH_QUANTITY] + \"</UND>\"+ vbNewLine + [WORKING_FACE_DAY_OUTPUT]+\"|\"+ [STOPE_DATE]"; pLableEngine.Expression = pLable; pLableEngine.IsExpressionSimple = true; pBasic.NumLabelsOption = esriBasicNumLabelsOption.esriOneLabelPerShape; pLableEngine.BasicOverposterLayerProperties = pBasic; //pLableEngine.Symbol = pTextSymbol; pGeoFeatureLayer.AnnotationProperties.Add(pLableEngine as IAnnotateLayerProperties); pGeoFeatureLayer.DisplayAnnotation = true; }
/// <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; }
/// <summary> /// 创建注记层 /// </summary> /// <param name="strFeaClsName">注记层名称</param> /// <param name="destDataset">待创建的注记层所在的featuredataset</param> /// <param name="ipInputFields">注记层字段</param> public static IFeatureClass CreateAnnotation(IFeatureClass pInputCls, IFeatureDataset destDataset, IFields ipInputFields) { try { //要素类标识信息 IObjectClassDescription ipObjectClassDesc = new AnnotationFeatureClassDescription(); IFeatureClassDescription ipFeatClassDesc = (IFeatureClassDescription)ipObjectClassDesc; IAnnoClass pAnnoClass = pInputCls.Extension as IAnnoClass; double scale = pAnnoClass.ReferenceScale; IUID ipCLSID = ipObjectClassDesc.InstanceCLSID; ipCLSID.Value = "esriCore.AnnotationFeature"; IUID ipExtCLSID = ipObjectClassDesc.ClassExtensionCLSID; ipExtCLSID.Value = "esriCore.AnnotationFeatureClassExtension"; //IField ipField; IFields ipFields = ipObjectClassDesc.RequiredFields; IFieldsEdit ipFieldsEdit = (IFieldsEdit)ipFields; int numFields = ipInputFields.FieldCount; esriFieldType type; for (int i = 0; i < numFields; i++) { IField ipField = ipInputFields.get_Field(i); type = ipField.Type; if (type != esriFieldType.esriFieldTypeOID && type != esriFieldType.esriFieldTypeGeometry) { string fldName = ipField.Name; int fldIndex = ipFields.FindField(fldName); if (fldIndex == -1) ipFieldsEdit.AddField(ipField); } } //工作空间 IWorkspace ipWorkspace = destDataset.Workspace; IFeatureWorkspaceAnno ipFeatureWorkspaceAnno = (IFeatureWorkspaceAnno)ipWorkspace; //显示比例 IGraphicsLayerScale ipGraphicsLayerScale = new GraphicsLayerScaleClass(); ipGraphicsLayerScale.ReferenceScale = scale; ipGraphicsLayerScale.Units = pAnnoClass.ReferenceScaleUnits; //符号信息 //' set up symbol collection ISymbolCollection pSymbolColl = new SymbolCollectionClass(); ITextSymbol myTxtSym = new TextSymbolClass(); //Set the font for myTxtSym stdole.IFontDisp myFont = new stdole.StdFontClass() as stdole.IFontDisp; IFont pFt = (IFont)myFont; pFt.Name = "Courier New"; myTxtSym.Font = myFont; // Set the Color for myTxtSym to be Dark Red IRgbColor myColor = new RgbColorClass(); myColor.Red = 150; myColor.Green = 0; myColor.Blue = 0; myTxtSym.Color = myColor; // Set other properties for myTxtSym myTxtSym.Angle = 0; myTxtSym.RightToLeft = false; myTxtSym.VerticalAlignment = esriTextVerticalAlignment.esriTVABaseline; myTxtSym.HorizontalAlignment = esriTextHorizontalAlignment.esriTHAFull; myTxtSym.Size = 9; ISymbol pSymbol = (ISymbol)myTxtSym; pSymbolColl.set_Symbol(0, pSymbol); //set up the annotation labeling properties including the expression IAnnotateLayerProperties pAnnoProps = new LabelEngineLayerPropertiesClass(); pAnnoProps.FeatureLinked = true; pAnnoProps.AddUnplacedToGraphicsContainer = false; pAnnoProps.CreateUnplacedElements = true; pAnnoProps.DisplayAnnotation = true; pAnnoProps.UseOutput = true; ILabelEngineLayerProperties pLELayerProps = (ILabelEngineLayerProperties)pAnnoProps; IAnnotationExpressionEngine aAnnoVBScriptEngine = new AnnotationVBScriptEngineClass(); pLELayerProps.ExpressionParser = aAnnoVBScriptEngine; pLELayerProps.Expression = "[DESCRIPTION]"; pLELayerProps.IsExpressionSimple = true; pLELayerProps.Offset = 0; pLELayerProps.SymbolID = 0; pLELayerProps.Symbol = myTxtSym; IAnnotateLayerTransformationProperties pATP = (IAnnotateLayerTransformationProperties)pAnnoProps; double dRefScale = ipGraphicsLayerScale.ReferenceScale; pATP.ReferenceScale = dRefScale; pATP.Units = esriUnits.esriMeters; pATP.ScaleRatio = 1; IAnnotateLayerPropertiesCollection pAnnoPropsColl = new AnnotateLayerPropertiesCollectionClass(); pAnnoPropsColl.Add(pAnnoProps); //' use the AnnotationFeatureClassDescription co - class to get the list of required fields and the default name of the shape field IObjectClassDescription pOCDesc = new AnnotationFeatureClassDescriptionClass(); IFeatureClassDescription pFDesc = (IFeatureClassDescription)pOCDesc; IFields pReqFields = pOCDesc.RequiredFields; IUID pInstCLSID = pOCDesc.InstanceCLSID; IUID pExtCLSID = pOCDesc.ClassExtensionCLSID; string bsShapeFieldName = pFDesc.ShapeFieldName; IDataset pDs = (IDataset)pInputCls; //创建 string bstName = ipFeatClassDesc.ShapeFieldName; IFeatureClass pOutFcls = ipFeatureWorkspaceAnno.CreateAnnotationClass(pDs.Name, ipFields, pOCDesc.InstanceCLSID, pOCDesc.ClassExtensionCLSID, pInputCls.ShapeFieldName, "", destDataset, null, pAnnoPropsColl, ipGraphicsLayerScale, pSymbolColl, true); return pOutFcls; } catch(Exception exp) { Hy.Common.Utility.Log.OperationalLogManager.AppendMessage(exp.ToString()); return null; } return null; }
/// <summary> /// 创建注记层 /// </summary> /// <param name="strFeaClsName">注记层名称</param> /// <param name="destDataset">待创建的注记层所在的featuredataset</param> /// <param name="ipInputFields">注记层字段</param> public static IFeatureClass CreateAnnotation(IFeatureClass pInputCls, IFeatureDataset destDataset, IFields ipInputFields) { try { //要素类标识信息 IObjectClassDescription ipObjectClassDesc = new AnnotationFeatureClassDescription(); IFeatureClassDescription ipFeatClassDesc = (IFeatureClassDescription)ipObjectClassDesc; IAnnoClass pAnnoClass = pInputCls.Extension as IAnnoClass; double scale = pAnnoClass.ReferenceScale; IUID ipCLSID = ipObjectClassDesc.InstanceCLSID; ipCLSID.Value = "esriCore.AnnotationFeature"; IUID ipExtCLSID = ipObjectClassDesc.ClassExtensionCLSID; ipExtCLSID.Value = "esriCore.AnnotationFeatureClassExtension"; //IField ipField; IFields ipFields = ipObjectClassDesc.RequiredFields; IFieldsEdit ipFieldsEdit = (IFieldsEdit)ipFields; int numFields = ipInputFields.FieldCount; esriFieldType type; for (int i = 0; i < numFields; i++) { IField ipField = ipInputFields.get_Field(i); type = ipField.Type; if (type != esriFieldType.esriFieldTypeOID && type != esriFieldType.esriFieldTypeGeometry) { string fldName = ipField.Name; int fldIndex = ipFields.FindField(fldName); if (fldIndex == -1) { ipFieldsEdit.AddField(ipField); } } } //工作空间 IWorkspace ipWorkspace = destDataset.Workspace; IFeatureWorkspaceAnno ipFeatureWorkspaceAnno = (IFeatureWorkspaceAnno)ipWorkspace; //显示比例 IGraphicsLayerScale ipGraphicsLayerScale = new GraphicsLayerScaleClass(); ipGraphicsLayerScale.ReferenceScale = scale; ipGraphicsLayerScale.Units = pAnnoClass.ReferenceScaleUnits; //符号信息 //' set up symbol collection ISymbolCollection pSymbolColl = new SymbolCollectionClass(); ITextSymbol myTxtSym = new TextSymbolClass(); //Set the font for myTxtSym stdole.IFontDisp myFont = new stdole.StdFontClass() as stdole.IFontDisp; IFont pFt = (IFont)myFont; pFt.Name = "Courier New"; myTxtSym.Font = myFont; // Set the Color for myTxtSym to be Dark Red IRgbColor myColor = new RgbColorClass(); myColor.Red = 150; myColor.Green = 0; myColor.Blue = 0; myTxtSym.Color = myColor; // Set other properties for myTxtSym myTxtSym.Angle = 0; myTxtSym.RightToLeft = false; myTxtSym.VerticalAlignment = esriTextVerticalAlignment.esriTVABaseline; myTxtSym.HorizontalAlignment = esriTextHorizontalAlignment.esriTHAFull; myTxtSym.Size = 9; ISymbol pSymbol = (ISymbol)myTxtSym; pSymbolColl.set_Symbol(0, pSymbol); //set up the annotation labeling properties including the expression IAnnotateLayerProperties pAnnoProps = new LabelEngineLayerPropertiesClass(); pAnnoProps.FeatureLinked = true; pAnnoProps.AddUnplacedToGraphicsContainer = false; pAnnoProps.CreateUnplacedElements = true; pAnnoProps.DisplayAnnotation = true; pAnnoProps.UseOutput = true; ILabelEngineLayerProperties pLELayerProps = (ILabelEngineLayerProperties)pAnnoProps; IAnnotationExpressionEngine aAnnoVBScriptEngine = new AnnotationVBScriptEngineClass(); pLELayerProps.ExpressionParser = aAnnoVBScriptEngine; pLELayerProps.Expression = "[DESCRIPTION]"; pLELayerProps.IsExpressionSimple = true; pLELayerProps.Offset = 0; pLELayerProps.SymbolID = 0; pLELayerProps.Symbol = myTxtSym; IAnnotateLayerTransformationProperties pATP = (IAnnotateLayerTransformationProperties)pAnnoProps; double dRefScale = ipGraphicsLayerScale.ReferenceScale; pATP.ReferenceScale = dRefScale; pATP.Units = esriUnits.esriMeters; pATP.ScaleRatio = 1; IAnnotateLayerPropertiesCollection pAnnoPropsColl = new AnnotateLayerPropertiesCollectionClass(); pAnnoPropsColl.Add(pAnnoProps); //' use the AnnotationFeatureClassDescription co - class to get the list of required fields and the default name of the shape field IObjectClassDescription pOCDesc = new AnnotationFeatureClassDescriptionClass(); IFeatureClassDescription pFDesc = (IFeatureClassDescription)pOCDesc; IFields pReqFields = pOCDesc.RequiredFields; IUID pInstCLSID = pOCDesc.InstanceCLSID; IUID pExtCLSID = pOCDesc.ClassExtensionCLSID; string bsShapeFieldName = pFDesc.ShapeFieldName; IDataset pDs = (IDataset)pInputCls; //创建 string bstName = ipFeatClassDesc.ShapeFieldName; IFeatureClass pOutFcls = ipFeatureWorkspaceAnno.CreateAnnotationClass(pDs.Name, ipFields, pOCDesc.InstanceCLSID, pOCDesc.ClassExtensionCLSID, pInputCls.ShapeFieldName, "", destDataset, null, pAnnoPropsColl, ipGraphicsLayerScale, pSymbolColl, true); return(pOutFcls); } catch (Exception exp) { Hy.Common.Utility.Log.OperationalLogManager.AppendMessage(exp.ToString()); return(null); } return(null); }
private void btnAnno_Click(object sender, EventArgs e) { IGeoFeatureLayer pGeoFeatLyr = this.mainMapControl.get_Layer(0) as IGeoFeatureLayer; //获得AnnotateLayerPropertiesCollection IAnnotateLayerPropertiesCollection pAnnoLyrProCollection = pGeoFeatLyr.AnnotationProperties; pAnnoLyrProCollection.Clear(); //创建并设置TextSymbol ITextSymbol pTextSymbol = new TextSymbolClass(); System.Drawing.Font pFont = new System.Drawing.Font("Castellar", 15.0F); //pTextSymbol.Font = ESRI.ArcGIS.Utility.COMSupport.OLE.GetIFontDispFromFont(pFont) as stdole.IFontDisp;//转换.NET的Font pTextSymbol.Color = getRGBColor(255, 0, 0); //创建LineLabelPosition ILineLabelPosition pLineLabelPosition = new LineLabelPositionClass(); pLineLabelPosition.Parallel = false; pLineLabelPosition.Perpendicular = true; //创建LineLabelPlacementPriorities ILineLabelPlacementPriorities pLineLablePlacementPriorities = new LineLabelPlacementPrioritiesClass(); //创建BasicOverposterLayerProperties IBasicOverposterLayerProperties pBasicOverposterLayerProperties = new BasicOverposterLayerPropertiesClass(); pBasicOverposterLayerProperties.FeatureType = esriBasicOverposterFeatureType.esriOverposterPolyline; pBasicOverposterLayerProperties.LineLabelPlacementPriorities = pLineLablePlacementPriorities; pBasicOverposterLayerProperties.LineLabelPosition = pLineLabelPosition; //创建LabelEngineLayerProperties ILabelEngineLayerProperties pLabelEnginLayerProperties = new LabelEngineLayerPropertiesClass(); pLabelEnginLayerProperties.Symbol = pTextSymbol; pLabelEnginLayerProperties.BasicOverposterLayerProperties = pBasicOverposterLayerProperties; pLabelEnginLayerProperties.Expression = "[NAME]"; IAnnotateLayerProperties pAnnoLyrPro = pLabelEnginLayerProperties as IAnnotateLayerProperties; pAnnoLyrProCollection.Add(pAnnoLyrPro);//添加,关键 pGeoFeatLyr.DisplayAnnotation = true;//确定显示 this.mainMapControl.Refresh(); }
public void CreateAnnoFeatureClass(IFeatureDataset featureDs, string strObjNum) { //更换注记字体 用两个重要的属性 //IAnnotateLayerPropertiesCollection,ISymbolCollection IFeatureWorkspace pFeatureWs = pAccessWorkSpace; IFeatureWorkspaceAnno pFeatureWorkspaceAnno; pFeatureWorkspaceAnno = (IFeatureWorkspaceAnno)pFeatureWs; //说明:要控制图层中的字体必须在图层建立的时候定义好字体 ITextSymbol pTextSymbol, tTextSymbol; pTextSymbol = PublicFun.makeTextSymbol("Arial", 16); tTextSymbol = PublicFun.makeTextSymbol("宋体", 50); /////textsymbol IGraphicsLayerScale pGLS; pGLS = new GraphicsLayerScaleClass(); pGLS.Units = esriUnits.esriMeters; pGLS.ReferenceScale = 500; IAnnotateLayerProperties pAnnoProps = new LabelEngineLayerPropertiesClass(); pAnnoProps.FeatureLinked = true; pAnnoProps.AddUnplacedToGraphicsContainer = false; pAnnoProps.CreateUnplacedElements = false; pAnnoProps.DisplayAnnotation = true; pAnnoProps.UseOutput = true; IAnnotationExpressionEngine aAnnoVBScriptEngine; aAnnoVBScriptEngine = new AnnotationVBScriptEngineClass(); ILabelEngineLayerProperties pLELayerProps; pLELayerProps = (ILabelEngineLayerProperties)pAnnoProps; pLELayerProps.ExpressionParser = aAnnoVBScriptEngine; pLELayerProps.Expression = "[DESCRIPTION]"; pLELayerProps.IsExpressionSimple = true; pLELayerProps.Offset = 0; pLELayerProps.SymbolID = 0; pLELayerProps.Symbol = pTextSymbol; IAnnotateLayerTransformationProperties pATP; pATP = (IAnnotateLayerTransformationProperties)pAnnoProps; pATP.ReferenceScale = pGLS.ReferenceScale; pATP.Units = esriUnits.esriMeters; pATP.ScaleRatio = 300; IAnnotateLayerPropertiesCollection pAnnoPropsColl; pAnnoPropsColl = new AnnotateLayerPropertiesCollectionClass(); pAnnoPropsColl.Add(pAnnoProps); IObjectClassDescription pOCDesc; pOCDesc = new AnnotationFeatureClassDescriptionClass(); IFeatureClassDescription pFDesc; pFDesc = (IFeatureClassDescription)pOCDesc; ISymbolCollection pSymbolColl; pSymbolColl = new SymbolCollectionClass(); pSymbolColl.set_Symbol(0, (ISymbol)pTextSymbol); pSymbolColl.set_Symbol(2, (ISymbol)tTextSymbol); IFields pFields = pOCDesc.RequiredFields; //添加注记类的附加字段 this.addAnnoField(ref pFields, strObjNum); string featureName = TableName; //注记要素集的名字 IFeatureDataset pFeatureDataset; if (featureDs == null) { pFeatureDataset = pFeatureWs.CreateFeatureDataset(featureName + "_Anno", sPR); } else { pFeatureDataset = featureDs; } pFeatureWorkspaceAnno.CreateAnnotationClass(featureName, pFields, pOCDesc.InstanceCLSID, pOCDesc.ClassExtensionCLSID, pFDesc.ShapeFieldName, "", pFeatureDataset, null, pAnnoPropsColl, pGLS, pSymbolColl, true); }
public static void AddAnnotate(ILayer layer, string fieldName) { var pGeoLayer = layer as IGeoFeatureLayer; if (pGeoLayer != null) { var ipalpColl = pGeoLayer.AnnotationProperties; ipalpColl.Clear(); IColor fontColor = new RgbColor(); fontColor.RGB = 255; //字体颜色 var font = new Font("宋体", 10, FontStyle.Bold); var dispFont = (IFontDisp)OLE.GetIFontDispFromFont(font); ITextSymbol pTextSymbol = new TextSymbolClass { Color = fontColor, Font = dispFont, Size = 12 }; ////用来控制标注和要素的相对位置关系 ILineLabelPosition pLineLpos = new LineLabelPositionClass { Parallel = true, //修改标注的属性 //Perpendicular = false, Below = true, InLine = false, Above = false }; //用来控制标注冲突 ILineLabelPlacementPriorities pLinePlace = new LineLabelPlacementPrioritiesClass { AboveStart = 5, //让above 和start的优先级为5 BelowAfter = 4 }; //用来实现对ILineLabelPosition 和 ILineLabelPlacementPriorities以及更高级属性的控制 IBasicOverposterLayerProperties pBolp = new BasicOverposterLayerPropertiesClass { FeatureType = esriBasicOverposterFeatureType.esriOverposterPolygon, LineLabelPlacementPriorities = pLinePlace, LineLabelPosition = pLineLpos }; //创建标注对象 ILabelEngineLayerProperties pLableEngine = new LabelEngineLayerPropertiesClass { Symbol = pTextSymbol, BasicOverposterLayerProperties = pBolp, IsExpressionSimple = true, Expression = "[" + fieldName + "]" }; //设置标注的参考比例尺 var pAnnoLyrPros = (IAnnotateLayerTransformationProperties)pLableEngine; pAnnoLyrPros.ReferenceScale = 2500000; //设置标注可见的最大最小比例尺 var pAnnoPros = pLableEngine as IAnnotateLayerProperties; //pAnnoPros.AnnotationMaximumScale = 2500000; //pAnnoPros.AnnotationMinimumScale = 25000000; //pAnnoPros.WhereClause属性 设置过滤条件 ipalpColl.Add(pAnnoPros); } if (pGeoLayer != null) pGeoLayer.DisplayAnnotation = true; }