、アノテーションアノテーションフィーチャクラスを作成し、アノテーション機能を追加し、アクティブビューAOのC#にロードされたのArcGIS

注釈の記憶素子を描くAO内の2つの一般的な方法は、保存すべき文書による編集文書レベルの要素、(MXD)でのTextElementを使用して、ある;もう一つの特徴は、注釈クラスを使用することで、独立しましたフィーチャクラス(フィーチャクラス)には、ジオデータベースに格納する必要があります。どのように柔軟で強力な方法あなたが知ってそれを使用するまでに、より柔軟で、より強力なのアノテーションフィーチャクラスを使用。

1は、標準アノテーションフィーチャクラスを作成します(StandardAnnotationClass)

 

1     公共 AnnotationMark(IFeatureClass outPolygonFc、ストリング mdbPath、INT referenceScale)
 2          {
 3               annotationName = " 注釈" ;
4              IWorkspaceFactory workspaceFactory = 新しいAccessWorkspaceFactoryClass()。
5              IFeatureWorkspace featureWorkspace = workspaceFactory.OpenFromFile(mdbPath、0としてIFeatureWorkspace。
6              IGeoDataset geoDataset = outPolygonFc としてIGeoDataset。
7             ISpatialReference spatialReference = geoDataset.SpatialReference。
8              Utils.UserWorkspace.FeatureWorkspace.TryDeleteFeatureClass(annotationName、featureWorkspace)。
9              フィーチャクラス= Utils.UserWorkspace.FeatureWorkspace.CreateStandardAnnotationClass(featureWorkspace、ヌル、annotationName、spatialReference、referenceScale、esriUnits.esriMeters、NULL );
10          }

次はあなたがStandardAnnotationClassを作成するためにそれを使用することができ、コードセグメントのEsriの公式サイトからの抜粋です。

特に:
FeatureDataset
データベースはデータセット(データセット)は、とすることができるnullも持っているかどうかに応じて、
referenceScale基準スケール注釈、注釈要素は、参照としてこれを取る、ズームインまたはアウト、スケール上映を設定することが推奨されます、設定されたサイズすなわち大きさを示すようになっています。
configKeyword = ""
1   公共 静的IFeatureClass CreateStandardAnnotationClass(IFeatureWorkspace featureWorkspace、IFeatureDataset featureDataset、文字クラス名、
 2 ISpatialReference spatialReference、INT referenceScale、esriUnits referenceScaleUnits、ストリングconfigKeyword)
 3          {
 4              //はアノテーションクラスを作成し、名前を付けて提供します。
5              ILabelEngineLayerPropertiesのlabelEngineLayerProperties = 新しい
6                  LabelEngineLayerPropertiesClass()。
7              IAnnotateLayerPropertiesのannotateLayerProperties = (IAnnotateLayerProperties)
 8                 labelEngineLayerProperties;
9              annotateLayerProperties.Class = " 注釈" ;
10  
11              //は、アノテーションクラスからシンボルを取得します。そのプロパティを変更してください
 12              // ここに。
13              ITextSymbol annotationTextSymbol = labelEngineLayerProperties.Symbol。
14              ISymbol annotationSymbol = (ISymbol)annotationTextSymbol。
15  
16              // シンボルコレクションを作成してから、デフォルトのシンボルを追加
 17              // 注釈クラスコレクションに。得られたシンボルIDを割り当てます
18              // 注釈クラスへ。
19              ISymbolCollection symbolCollection = 新しいSymbolCollectionClass()。
20              ISymbolCollection2 symbolCollection2 = (ISymbolCollection2)symbolCollection。
21              ISymbolIdentifier2 symbolIdentifier2 = NULL ;
22              symbolCollection2.AddSymbol(annotationSymbol、" 注釈"アウト
23                  symbolIdentifier2)。
24              labelEngineLayerProperties.SymbolID = symbolIdentifier2.ID。
25  
26              //コレクションに注釈クラスを追加します。
27              IAnnotateLayerPropertiesCollection annotateLayerPropsCollection = 新しい
28                  AnnotateLayerPropertiesCollectionClass()。
29              annotateLayerPropsCollection.Add(annotateLayerProperties)。
30  
31              //は、グラフィックス層スケールのオブジェクトを作成します。
32              IGraphicsLayerScale graphicsLayerScale = 新しいGraphicsLayerScaleClass()。
33              graphicsLayerScale.ReferenceScale = referenceScale。
34              graphicsLayerScale.Units =のreferenceScaleUnits。
35  
36              //標準ラベルエンジンのoverposterプロパティを作成します。
37              IOverposterProperties overposterProperties = 新しいBasicOverposterPropertiesClass()。
38  
39              //は、クラス記述オブジェクトをインスタンス化します。
40              IObjectClassDescription ocDescription = 新しい
41                  AnnotationFeatureClassDescriptionClass()。
42              IFeatureClassDescription fcDescription = (IFeatureClassDescription)ocDescription。
43  
44              //は、クラス記述の必要なフィールドからの形状のフィールドを取得します。
45              IFields requiredFields =ocDescription.RequiredFields;
46              INT shapeFieldIndex = requiredFields.FindField(fcDescription.ShapeFieldName)。
47              IField内shapeField = requiredFields.get_Field(shapeFieldIndex)。
48              IGeometryDef geometryDef = shapeField.GeometryDef。
49              IGeometryDefEdit geometryDefEdit = (IGeometryDefEdit)geometryDef。
50              geometryDefEdit.SpatialReference_2 = spatialReference。
51  
52              //は、注釈層ファクトリを作成します。
53              IAnnotationLayerFactory annotationLayerFactory = 新しいですFDOGraphicsLayerFactoryClass();
54  
55              //は、アノテーションフィーチャクラスとそれのための注釈レイヤーを作成します。
56              IAnnotationLayer annotationLayer = annotationLayerFactory.CreateAnnotationLayer
 57                  (featureWorkspace、featureDataset、クラス名、geometryDef、NULL 58                  annotateLayerPropsCollection、graphicsLayerScale、symbolCollection、59                  、overposterProperties、configKeyword)。
60  
61              //は、フィーチャレイヤからフィーチャクラスを取得します。
62             IFeatureLayer featureLayer = (IFeatureLayer)annotationLayer。
63              IFeatureClassフィーチャクラス= featureLayer.FeatureClass。
64の 
65              リターンフィーチャクラス。
66          }

 

2.注釈要素(注釈機能)を作成します。

上記の注釈は、フィーチャクラスのコンストラクタAnnotationMarkフィーチャクラスのクラスの作成を開始するために、以下の機能は注釈機能コードを作成しています。

壁のブロガーとネットワーク関連の実装を見つけることができませんでしたが、このコードの一部を保存するために壁を登る必要があった、それは主に、様々な性質のISymbolCollectionElementインターフェイス設定を備えています使用されています。また、ネットワークでも使用IFormattedTextSymbolブロガーがテストしていない、インターフェイスのスキームを、以下のリンクを突く必要があります:

注釈は、これらの理由/重複を行う積み上げ見える?(別の外国フォーラムの羨望のエコロジー)

特に:
; IGeometry PointGeometryこれはIPointジオメトリ・オブジェクトであるべきである
esriTextHorizo​​ntalAlignmentesriTextVerticalAlignmentは注釈要素(ポリゴン一面)の位置は、それによって、配置を決定する点を示しています。
ISymbolCollectionElementまたはIFormattedTextSymbolそれ以上の属性がありますが、(この記事は補完しません)を設定することができ、これらの属性は、各フィールドの記録要素の値になります。
1   公共 ボイド CreateAnnotationFeature(IGeometry pointGeometry、文字列テキスト、文字列たfontName、二重のfontSize、esriTextHorizo​​ntalAlignmentたHorizo​​ntalAlignment、
 2              esriTextVerticalAlignment VerticalAlignmentを)
 3          {
 4              のiFeature機能= featureClass.CreateFeature()。
5  
6              ISymbolCollectionElement symbolCollectionElement = 新しいTextElementClass()。
7              symbolCollectionElement.FontName = たfontName。
8              symbolCollectionElement.Size =フォントサイズ;
9              symbolCollectionElement.Text = テキスト。
10              symbolCollectionElement.Horizo​​ntalAlignment = たHorizo​​ntalAlignment。
11              symbolCollectionElement.VerticalAlignment = VerticalAlignmentを。
12              symbolCollectionElement.Geometry = pointGeometry。
13  
14              IElement要素= symbolCollectionElement としてIElement。
15              IAnnotationFeature2 annotationFeature2 =機能としてIAnnotationFeature2。
16              annotationFeature2.Annotation = エレメント。
17             annotationFeature2.Status = esriAnnotationStatus.esriAnnoStatusPlaced。
18              feature.Store()。
19          }

図3に示すように、レイヤとして追加機能クラス

ないコードの上に、長ったらしいです:

1            IWorkspaceFactory workspaceFactory = 新しいAccessWorkspaceFactoryClass()。
2              IFeatureWorkspace featureWorkspace = workspaceFactory.OpenFromFile(mdbPath、0としてIFeatureWorkspace。
3              IAnnotationLayerFactory annotationLayerFactory = 新しいFDOGraphicsLayerFactoryClass()。
4              IAnnotationLayer annotationLayer = annotationLayerFactory.OpenAnnotationLayer(featureWorkspace、ヌル" 注釈" )。
5              i層layer_Annotation = annotationLayer としてi層。
6             layer_Annotation.Name = TFH + " _Annotation "

 

おすすめ

転載: www.cnblogs.com/yzhyingcool/p/11518652.html