青岛网站建设莫道网络,临沭县哪里有建网站的,简述网站建设,wordpress 调整页面布局使用Annotation的API功能。Annotation 的API功能位于ArcGIS.Core.dll中。Annotation API通常与地理数据库、地图创作和编辑结合使用。ArcGIS.Core.dll ArcGIS.Core.Data.map API中的几乎所有方法都应该在MCT上调用。 一、Annotation featureclass 1、从GeodatabaseGeodatabase数…    使用Annotation的API功能。Annotation 的API功能位于ArcGIS.Core.dll中。Annotation API通常与地理数据库、地图创作和编辑结合使用。ArcGIS.Core.dll ArcGIS.Core.Data.map API中的几乎所有方法都应该在MCT上调用。 一、Annotation featureclass 1、从GeodatabaseGeodatabase数据库获取 1、通过要素类名称 
using (AnnotationFeatureClass annoFeatureClass geodatabase.OpenDatasetAnnotationFeatureClass(AnnotationFeatureClassName))
{
} 2通过注记要素类的ID 
using (AnnotationFeatureClass annoFeatureClass  geodatabase.OpenDatasetAnnotationFeatureClass(1))
{
} 2、从地图加载图层获取            1、通过AnnotationLayer获取      
ArcGIS.Desktop.Mapping.Layer selectedLayer  MapView.Active.GetSelectedLayers().FirstOrDefault();
if (selectedLayer is ArcGIS.Desktop.Mapping.AnnotationLayer)
{using (Table table  (selectedLayer as AnnotationLayer).GetTable()){if (table is AnnotationFeatureClass){AnnotationFeatureClass annoFeatureClass  table as AnnotationFeatureClass;}}
} 2、通过AnnotationFeature获取 
ArcGIS.Desktop.Editing.Events.RowChangedEvent.Subscribe(args 
{Row row  args.Row;if (row is AnnotationFeature){using (AnnotationFeatureClass annoFeatureClass  row.GetTable() as AnnotationFeatureClass){}}
}  二、以表形式打开        AnnotationFeatureClass
using (Table table  geodatabase.OpenDatasetTable(FeatureClassName))
{
} 三、将AnnotationFeatureClass作为要素类打开         
using (FeatureClass featureClass  geodatabase.OpenDatasetFeatureClass(FeatureClassName))
{
} 四、注记要素类定义 1、从地理数据库中打开注释要素类定义。Definition对象包含有关DataSet的元数据信息通常在预期不会打开DataSet时使用。 
AnnotationFeatureClassDefinition definition  geodatabase.GetDefinitionAnnotationFeatureClassDefinition(AnnotationFeatureClassName); 2、从数据集中打开AnnotationFeatureClassDefinition。当数据集已打开并且引用可访问时使用此选项。 
ArcGIS.Desktop.Mapping.Layer selectedLayer  MapView.Active.GetSelectedLayers().FirstOrDefault();
if (selectedLayer is ArcGIS.Desktop.Mapping.AnnotationLayer)
{using (AnnotationFeatureClass annoFC  (selectedLayer as AnnotationLayer).GetTable() as AnnotationFeatureClass){AnnotationFeatureClassDefinition definition  annoFC.GetDefinition();}
} 五、遍历Annotation feature 使用注记要素类时通过查询返回的要素属于AnnotationFeature类型。AnnotationFeature使用特定于注释的功能扩展了Feature的功能。首先它提供了对注释功能中的CIMTextGraphic的访问。CIMTextGraphic是使用注释时修改的主要对象。此外AnnotationFeature还为AnnotationClassID、LinkedFeatureID和注记状态提供了方便的set和get方法。在使用Feature对象时通过AnnotationFeature更新这些属性比通过查找其字段索引更简单。如果注记要素类是使用基于GlobalID的关系类建立的则LinkedFeatureID将为System.GUID类型否则它将是一个长型。 与常规功能不同AnnotationFeature的形状不会通过GetShape和SetShape进行常规更新。相反当更新批注的CIMTextGraphic时AnnotationFeature管理形状。该形状被设置为CIMTextGraphic的边界多边形。 在处理注释时需要记住的另一个概念是模式。默认情况下使用一系列字段创建注记要素类这些字段包含有关要素及其符号化的描述性信息。虽然这些字段是为新要素类创建的但并非所有字段都是必需的。在ArcGIS Pro中确保注记方案中存在的唯一字段是AnnotationClassID、SymbolID、Element、FeatureID或FeatureGlobalID(如果使用GlobalID关系)、ZOrder和Status以及系统OBJECTID和Shape字段。存储文本格式属性的所有其他字段(如文本字符串、字体名称、垂直对齐、水平对齐等)都是可选的。不能保证它们(在物理架构中)存在。此外ArcGIS Pro注记模型不再具有粗体和斜体字段。它们已被替换为FontStyle字段。当批注描述字段存在时它们与AnnotationFeature的CIMTextGraphic的内容保持同步。更新CIMTextGraphic将更新与该属性对应的行中的一个字段。同样更新字段值也会更新CIMTextGraphic。如果在一个操作中同时更新字段和CIMTextGraphic并且它们发生冲突则CIMTextGraphic将优先。如果您正在编写创建或修改注释特征的工具则必须考虑这些更改和重要概念。 
在AnnotationFeatureClass上打开光标并更新AnnotationFeature的CIMTextGraphic如下所示。请注意此示例更改文本符号高度和正在引用的符号集合中的符号。 
QueryFilter qf  new QueryFilter();
qf.WhereClause  OBJECTID  100;
//Note: this is a non-recycling cursor off the Table, ~not~ the layer
using (RowCursor rowCursor  featureClass.Search(qf, false))
{geodatabase.ApplyEdits(() {while (rowCursor.MoveNext()){using (AnnotationFeature annoFeat  rowCursor.Current as AnnotationFeature){CIMTextGraphic textGraphic  annoFeat.GetGraphic() as CIMTextGraphic;CIMSymbolReference symbolRef  textGraphic.Symbol;symbolRef.SymbolName  1;  //change the symbol being referred to by the CIMTextGraphicCIMTextSymbol textSymbol  symbolRef.Symbol as CIMTextSymbol;textSymbol.Height  6; //change the height of the text.annoFeat.SetGraphic(textGraphic);annoFeat.Store();}}});
} 六、创建Annotation feature     下面演示了如何使用RowBuffer并在AnnotationFeatureClass中创建新的AnnotationFeature。将创建CIMTextGraphic并指定Position、Text字符串和CIMTextSymbol属性。符号集合中的文本符号由ID引用。符号集合的符号ID是一个整数但SymbolName属性是一个字符串因此必须将其设置为字符串。AnnotationFeature将通过对Store()调用的覆盖来优化功能的存储。 
static void InsertAnno(string textString, MapPoint mapPoint, int symbolID, AnnotationFeatureClass featureClass)
{var annoFCDef  featureClass.GetDefinition();var symCol  annoFCDef.GetSymbolCollection();//从符号集合中获取文本符号var symbolIdentifier  (from s in symCol where s.ID  symbolID select s).FirstOrDefault();var txtSymbol  symbolIdentifier.Symbol;//创建行缓冲区using (RowBuffer rowBuffer  featureClass.CreateRowBuffer()){Feature feature  featureClass.CreateRow(rowBuffer) as Feature;AnnotationFeature annoFeat  feature as AnnotationFeature;annoFeat.SetStatus(AnnotationStatus.Placed);annoFeat.SetAnnotationClassID(0);//设置文本和图形CIMTextGraphic cimTextGraphic  new CIMTextGraphic();cimTextGraphic.Text  textString;cimTextGraphic.Shape  mapPoint;//使用符号ID和文本符号设置符号引用var symbolRef  new CIMSymbolReference();symbolRef.SymbolName  symbolID.ToString();symbolRef.Symbol  txtSymbol;//在图形上设置符号引用将其推回到特征中然后存储。cimTextGraphic.Symbol  symbolRef;annoFeat.SetGraphic(cimTextGraphic);feature.Store();}
}