如何根据一个要素类(源要素类)在另一个工作空间中产生一个同字段,但空间范围可能不一致的要素类(目标要素类)?本文提供了完备的方法。
public ESRI.ArcGIS.Geodatabase.IFeatureClass CloneFeatureClass(ESRI.ArcGIS.Geodatabase.IFeatureClass srcFeatureClass, ESRI.ArcGIS.Geodatabase.IFeatureWorkspace SaveFeatWorkspace, string Name, ESRI.ArcGIS.Geometry.IEnvelope newEnvelope)
{
if (Name == ""||Name ==null)
{
Name = srcFeatureClass.AliasName;
}
Name = this.getRightDatasetName(Name, ".");
IFields pFields = this.CloneFeatureClassFields(srcFeatureClass, newEnvelope);
//Anno要素类
if (srcFeatureClass.FeatureType == esriFeatureType.esriFTAnnotation)
{
//Anno Workspace
IFeatureWorkspaceAnno pFWSAnno =SaveFeatWorkspace as IFeatureWorkspaceAnno;
//获得AnnoFeatureClass的显示参数units和referencescale
IAnnoClass pAnnoClass = srcFeatureClass.Extension as IAnnoClass;
IGraphicsLayerScale pGLS = new GraphicsLayerScaleClass();
pGLS.Units = pAnnoClass.ReferenceScaleUnits;
pGLS.ReferenceScale = pAnnoClass.ReferenceScale;
ISymbol pSymbol = (ISymbol)MakeTextSymbol();
//Anno要素类必须有的缺省符号
ISymbolCollection2 pSymbolColl = new SymbolCollectionClass();
ISymbolIdentifier2 pSymID = new SymbolIdentifierClass();
pSymbolColl.AddSymbol(pSymbol, "Default", out pSymID);