AE指定字段转成注记【2】 |
08-06-13 08:33:33 作者:xbt746 出处:xbt746.cnblogs.com |
|
private bool ConvertToAnnotateByFeature(ILayer pLayer,int fieldnum,ref IAnnotationLayer pAnnoLayer) ...{ IFeatureLayer pFeatlayer = pLayer as IFeatureLayer; if (pFeatlayer == null) return false; IFeatureClass pFeatClass = pFeatlayer.FeatureClass; IFeatureCursor pFeatCursor = pFeatClass.Search(null, false); IFeature pFeat = pFeatCursor.NextFeature();
IFeatureLayer pAnnoFeatLayer=pAnnoLayer as IFeatureLayer; IAnnotationClassExtension pAnnotateExten = pAnnoFeatLayer.FeatureClass.Extension as IAnnotationClassExtension; ISymbol pSymbol = pAnnotateExten.SymbolCollection.get_Symbol(0); IGeometry pGeo; double angle = 0; IRgbColor pRGB=new RgbColorClass(); pRGB.Blue=255; pRGB.Green=255; pRGB.Red=0; /**//////判断是不是公路层的Width,特殊处理///// string temp_layername = pLayer.Name.ToUpper(); bool bwidth=false; if(pFeatClass.Fields.get_Field(fieldnum).Name.ToUpper()=="WIDTH") ...{ if (pLayer.Name.ToUpper().Contains("LRDL")) bwidth = true; } IElementCollection pElementColl = new ElementCollectionClass(); pAnnoLayer.BeginAddElements(); while(pFeat!=null) ...{ pGeo = pFeat.Shape; IPoint pLabelPoint = null; if(pGeo is IPolyline) ...{ IPolyline pline=pGeo as IPolyline; pLabelPoint = GetLabelPoint(pline); } if(pGeo is IPoint) ...{ pLabelPoint = pGeo as IPoint; } if(pGeo is IPolygon) ...{ IPolygon pPolygon = pGeo as IPolygon; IArea pArea = pPolygon as IArea; pLabelPoint = pArea.LabelPoint; } object val=pFeat.get_Value(fieldnum); string s=val.ToString(); if (s == null || s.Length == 0) ...{ pFeat = pFeatCursor.NextFeature(); continue; } /**////对公路的宽度进行特殊处理 if(bwidth) ...{ double width = double.Parse(s); int rtegnum = pFeatClass.FindField("RTEG"); string rteg = pFeat.get_Value(rtegnum).ToString(); if(rteg=="高速"&&width>55.0) ...{ IElement pElement = MakeTextElement(pGeo, angle, s, pRGB, pSymbol); pElementColl.Add(pElement, pFeat.OID); } else if(width>40.0) ...{ IElement pElement = MakeTextElement(pGeo, angle, s, pRGB, pSymbol); pElementColl.Add(pElement, pFeat.OID); } } else if (/**//*pLabelPoint != null&&*/s.Length>0) ...{ IElement pElement = MakeTextElement(pGeo, angle, s, pRGB,pSymbol); pElementColl.Add(pElement, pFeat.OID); } pFeat = pFeatCursor.NextFeature(); } pAnnoLayer.EndAddElements(); pAnnoLayer.BeginAddElements(); if(pElementColl.Count<1) ...{ pAnnoLayer.EndAddElements(); return true; } pAnnoLayer.DoAddElements(pElementColl, 0); /**//* pAnnoLayer.SetupAttributeConversion()*/ pAnnoLayer.EndAddElements(); return true; }
|
|
|
转载于:https://www.cnblogs.com/lauer0246/archive/2008/06/27/1231141.html