cl991036
管理员
管理员
  • 注册日期2003-07-25
  • 发帖数5917
  • QQ14265545
  • 铜币29669枚
  • 威望217点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • GIS帝国铁杆
阅读:1074回复:0

AE创建各种类型的featureclass代码

楼主#
更多 发布于:2008-05-21 21:10
VB.Net源码
<P  align=left>  ''' <summary><P></P></P>
<P  align=left>  ''' 创建Annotation类型的featureclass<P></P></P>
<P  align=left>  ''' </summary><P></P></P>
<P  align=left>  ''' <param name="pWorkspace">annotation的工作空间</param><P></P></P>
<P  align=left>  ''' <param name="pTextSymbol">annotation的symbol</param><P></P></P>
<P  align=left>  ''' <param name="pRefeScale">annotation的比例</param><P></P></P>
<P  align=left>  ''' <param name="pAnnoFeatName">annotation的名称</param><P></P></P>
<P  align=left>  ''' <returns>创建的Annotation Featureclass</returns><P></P></P>
<P  align=left>  ''' <remarks></remarks><P></P></P>
<P  align=left>  Private Function CreateAnnoFeatCls(ByVal pWorkspace As IFeatureWorkspace, ByVal pTextSymbol As ITextSymbol, ByVal pRefeScale As Double, ByVal pAnnoFeatName As String, Optional ByVal pSymbolID As Integer = 0) As IFeatureClass<P></P></P>
<P  align=left>    Dim pField As IField<P></P></P>
<P  align=left>    Dim pFields As IFields<P></P></P>
<P  align=left>    Dim pSource As IClone<P></P></P>
<P  align=left>    Dim pObjectClassDesc As IObjectClassDescription<P></P></P>
<P  align=left>    Dim pFeatClassDesc As IFeatureClassDescription<P></P></P>
<P  align=left><P> </P></P>
<P  align=left>    ''创建Annotation的Fields<P></P></P>
<P  align=left>    pObjectClassDesc = New AnnotationFeatureClassDescription<P></P></P>
<P  align=left>    pFeatClassDesc = pObjectClassDesc<P></P></P>
<P  align=left>    pSource = pObjectClassDesc.RequiredFields<P></P></P>
<P  align=left>    pFields = pSource.Clone<P></P></P>
<P  align=left>    ''创建Annotation的Geometry defintion<P></P></P>
<P  align=left>    pField = pFields.Field(pFields.FindField(pFeatClassDesc.ShapeFieldName)) <P></P></P>
<P  align=left>    ''创建Reference scale<P></P></P>
<P  align=left>    Dim pGraphicsLayerScale As IGraphicsLayerScale<P></P></P>
<P  align=left>    pGraphicsLayerScale = New GraphicsLayerScale<P></P></P>
<P  align=left>    pGraphicsLayerScale.ReferenceScale = pRefeScale<P></P></P>
<P  align=left>    pGraphicsLayerScale.Units = esriUnits.esriMeters <P></P></P>
<P  align=left>    ''创建Symbolcollection<P></P></P>
<P  align=left>    Dim pSymbolColl As ISymbolCollection2<P></P></P>
<P  align=left>    Dim pSymbolIdent As ISymbolIdentifier2 = New SymbolIdentifier<P></P></P>
<P  align=left>    pSymbolColl = New SymbolCollection<P></P></P>
<P  align=left>    pSymbolColl.AddSymbol(pTextSymbol, "Default", pSymbolIdent)<P></P></P>
<P  align=left>    If pSymbolID = 1 Then pSymbolColl.AddSymbol(pTextSymbol, "Default 1", pSymbolIdent)<P></P></P>
<P  align=left><P> </P></P>
<P  align=left>    ''创建Label的相关属性<P></P></P>
<P  align=left>    Dim pOverposterProperties As IOverposterProperties<P></P></P>
<P  align=left>    Dim pAnnoPropsColl As IAnnotateLayerPropertiesCollection<P></P></P>
<P  align=left>    Dim pLabelEngineLP As ILabelEngineLayerProperties<P></P></P>
<P  align=left>    Dim pAnnotateLayerProps As IAnnotateLayerProperties<P></P></P>
<P  align=left>    pOverposterProperties = New BasicOverposterProperties<P></P></P>
<P  align=left>    pAnnoPropsColl = New AnnotateLayerPropertiesCollection<P></P></P>
<P  align=left>    pLabelEngineLP = New LabelEngineLayerProperties<P></P></P>
<P  align=left>    pAnnotateLayerProps = pLabelEngineLP<P></P></P>
<P  align=left>    pAnnotateLayerProps.Class = "Default"<P></P></P>
<P  align=left>    pLabelEngineLP.Symbol = pTextSymbol<P></P></P>
<P  align=left>    pLabelEngineLP.SymbolID = pSymbolIdent.ID<P></P></P>
<P  align=left>    pAnnoPropsColl.Add(pLabelEngineLP)<P></P></P>
<P  align=left><P> </P></P>
<P  align=left>    ''创建Annotation layer<P></P></P>
<P  align=left>    Dim pAnnoLayerFactory As IAnnotationLayerFactory<P></P></P>
<P  align=left>    Dim pAnnoLayer As IAnnotationLayer<P></P></P>
<P  align=left>    pAnnoLayerFactory = New FDOGraphicsLayerFactory<P></P></P>
<P  align=left>    pAnnoLayer = pAnnoLayerFactory.CreateAnnotationLayer(pWorkspace, Nothing, pAnnoFeatName, pField.GeometryDef, Nothing, pAnnoPropsColl, pGraphicsLayerScale, pSymbolColl, False, False, False, True, pOverposterProperties, "")<P></P></P>
<P  align=left>    Return CType(pAnnoLayer, IFeatureLayer).FeatureClass<P></P></P>
<P >End Function<P></P></P>
<P ><P> </P></P>
<P  align=left>  ''' <summary><P></P></P>
<P  align=left>  ''' 创建存于Shapefile中的featureclass<P></P></P>
<P  align=left>  ''' </summary><P></P></P>
<P  align=left>  ''' <param name="sDir"></param><P></P></P>
<P  align=left>  ''' <param name="sName"></param><P></P></P>
<P  align=left>  ''' <param name="shapeType"></param><P></P></P>
<P  align=left>  ''' <param name="hasM"></param><P></P></P>
<P  align=left>  ''' <param name="hasZ"></param><P></P></P>
<P  align=left>  ''' <param name="pSR"></param><P></P></P>
<P  align=left>  ''' <param name="pFields"></param><P></P></P>
<P  align=left>  ''' <returns></returns><P></P></P>
<P  align=left>  ''' <remarks></remarks><P></P></P>
<P  align=left>  Public Shared Function CreateShapefile(ByVal sDir As String, ByVal sName As String, ByVal shapeType As esriGeometryType, _<P></P></P>
<P  align=left>  ByVal hasM As Boolean, ByVal hasZ As Boolean, ByVal pSR As ISpatialReference, ByVal pFields As IFields) As IFeatureClass<P></P></P>
<P  align=left>    Try<P></P></P>
<P  align=left>      Dim shapeWorkspaceFactory As IWorkspaceFactory<P></P></P>
<P  align=left>      shapeWorkspaceFactory = New ShapefileWorkspaceFactory<P></P></P>
<P  align=left>      Dim shapeWorkspace As IFeatureWorkspace<P></P></P>
<P  align=left>      shapeWorkspace = shapeWorkspaceFactory.OpenFromFile(sDir, 0)<P></P></P>
<P  align=left>      If (Not shapeWorkspace Is Nothing) Then<P></P></P>
<P  align=left>        If pFields Is Nothing Then pFields = CreateBasicFields(shapeType, hasM, hasZ, pSR) '<P></P></P>
<P  align=left>        Dim pFClass As IFeatureClass<P></P></P>
<P  align=left>        pFClass = shapeWorkspace.CreateFeatureClass(sName, pFields, Nothing, Nothing, esriFeatureType.esriFTSimple, "Shape", "")<P></P></P>
<P  align=left>        Return pFClass<P></P></P>
<P  align=left>      End If<P></P></P>
<P  align=left>      Return Nothing<P></P></P>
<P  align=left>    Catch ex As Exception<P></P></P>
<P  align=left>      MsgBox(ex.Message)<P></P></P>
<P  align=left>      Return Nothing<P></P></P>
<P  align=left>    End Try<P></P></P>
<P >  End Function<P></P></P>
<P ><P> </P></P>
<P  align=left>  ''' <summary><P></P></P>
<P  align=left>  ''' 创建存于内存中的Featureclass<P></P></P>
<P  align=left>  ''' </summary><P></P></P>
<P  align=left>  ''' <param name="pFields"></param><P></P></P>
<P  align=left>  ''' <param name="featureClassName"></param><P></P></P>
<P  align=left>  ''' <returns></returns><P></P></P>
<P  align=left>  ''' <remarks></remarks><P></P></P>
<P  align=left>  Public Shared Function GetSimpleFeatureClass(ByVal pFields As IFields, ByVal featureClassName As String) As IFeatureClass<P></P></P>
<P  align=left>    Try<P></P></P>
<P  align=left>      Dim pSwf As IWorkspaceFactory = New InMemoryWorkspaceFactory<P></P></P>
<P  align=left>      Dim pWorkspaceName As IWorkspaceName = pSwf.Create("", "MyWorkspace", Nothing, 0)<P></P></P>
<P  align=left>      Dim pFWS As IFeatureWorkspace = CType(pWorkspaceName, IName).Open()<P></P></P>
<P  align=left>      Dim pFC As IFeatureClass = pFWS.CreateFeatureClass(featureClassName, pFields, Nothing, Nothing, esriFeatureType.esriFTSimple, "Shape", Nothing)<P></P></P>
<P  align=left>      Return pFC<P></P></P>
<P  align=left>    Catch ex As Exception<P></P></P>
<P  align=left>      Return Nothing<P></P></P>
<P  align=left>    End Try<P></P></P>
<P >  End Function<P></P></P>
<P ><P> </P></P>
<P  align=left>  ''' <summary><P></P></P>
<P  align=left>  ''' 创建存于Access中的featureclass<P></P></P>
<P  align=left>  ''' </summary><P></P></P>
<P  align=left>  ''' <param name="pFields"></param><P></P></P>
<P  align=left>  ''' <param name="pAccessPath"></param><P></P></P>
<P  align=left>  ''' <param name="pAccessName"></param><P></P></P>
<P  align=left>  ''' <param name="featureClassName"></param><P></P></P>
<P  align=left>  ''' <returns></returns><P></P></P>
<P  align=left>  ''' <remarks></remarks><P></P></P>
<P  align=left>  Public Function CreateAccessFeatureClass(ByVal pFields As IFields, ByVal pAccessPath As String, ByVal pAccessName As String, ByVal featureClassName As String) As IFeatureClass<P></P></P>
<P  align=left>    Try<P></P></P>
<P  align=left>      Dim pSwf As IWorkspaceFactory = New ESRI.ArcGIS.DataSourcesGDB.AccessWorkspaceFactory<P></P></P>
<P  align=left>      Dim pWorkspaceName As IWorkspaceName = pSwf.Create(pAccessPath, pAccessName, Nothing, 0)<P></P></P>
<P  align=left>      Dim pFWS As IFeatureWorkspace = CType(pWorkspaceName, IName).Open()<P></P></P>
<P  align=left>      pFields = CreateBasicFields(esriGeometryType.esriGeometryPoint, False, False, New UnknownCoordinateSystem)<P></P></P>
<P  align=left>      Dim pFC As IFeatureClass = pFWS.CreateFeatureClass(featureClassName, pFields, Nothing, Nothing, esriFeatureType.esriFTSimple, "Shape", Nothing)<P></P></P>
<P  align=left>      Return pFC<P></P></P>
<P  align=left>    Catch ex As Exception<P></P></P>
<P  align=left>      Return Nothing<P></P></P>
<P  align=left>    End Try<P></P></P>
<P >  End Function</P>
喜欢0 评分0
没钱又丑,农村户口。头可断,发型一定不能乱。 邮箱:gisempire@qq.com
游客

返回顶部