现在的位置: 首页 > 综合 > 正文

AE创建各种类型的featureclass代码

2012年04月11日 ⁄ 综合 ⁄ 共 5295字 ⁄ 字号 评论关闭
  VB.Net源码

  ''' <summary>

  ''' 创建Annotation类型的featureclass

  ''' </summary>

  ''' <param name="pWorkspace">annotation的工作空间</param>

  ''' <param name="pTextSymbol">annotationsymbol</param>

  ''' <param name="pRefeScale">annotation的比例</param>

  ''' <param name="pAnnoFeatName">annotation的名称</param>

  ''' <returns>创建的Annotation Featureclass</returns>

  ''' <remarks></remarks>

  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

    Dim pField As IField

    Dim pFields As IFields

    Dim pSource As IClone

    Dim pObjectClassDesc As IObjectClassDescription

    Dim pFeatClassDesc As IFeatureClassDescription

 

    ''创建AnnotationFields

    pObjectClassDesc = New AnnotationFeatureClassDescription

    pFeatClassDesc = pObjectClassDesc

    pSource = pObjectClassDesc.RequiredFields

    pFields = pSource.Clone

    ''创建AnnotationGeometry defintion

    pField = pFields.Field(pFields.FindField(pFeatClassDesc.ShapeFieldName))

    ''创建Reference scale

    Dim pGraphicsLayerScale As IGraphicsLayerScale

    pGraphicsLayerScale = New GraphicsLayerScale

    pGraphicsLayerScale.ReferenceScale = pRefeScale

    pGraphicsLayerScale.Units = esriUnits.esriMeters

    ''创建Symbolcollection

    Dim pSymbolColl As ISymbolCollection2

    Dim pSymbolIdent As ISymbolIdentifier2 = New SymbolIdentifier

    pSymbolColl = New SymbolCollection

    pSymbolColl.AddSymbol(pTextSymbol, "Default", pSymbolIdent)

    If pSymbolID = 1 Then pSymbolColl.AddSymbol(pTextSymbol, "Default 1", pSymbolIdent)

 

    ''创建Label的相关属性

    Dim pOverposterProperties As IOverposterProperties

    Dim pAnnoPropsColl As IAnnotateLayerPropertiesCollection

    Dim pLabelEngineLP As ILabelEngineLayerProperties

    Dim pAnnotateLayerProps As IAnnotateLayerProperties

    pOverposterProperties = New BasicOverposterProperties

    pAnnoPropsColl = New AnnotateLayerPropertiesCollection

    pLabelEngineLP = New LabelEngineLayerProperties

    pAnnotateLayerProps = pLabelEngineLP

    pAnnotateLayerProps.Class = "Default"

    pLabelEngineLP.Symbol = pTextSymbol

    pLabelEngineLP.SymbolID = pSymbolIdent.ID

    pAnnoPropsColl.Add(pLabelEngineLP)

 

    ''创建Annotation layer

    Dim pAnnoLayerFactory As IAnnotationLayerFactory

    Dim pAnnoLayer As IAnnotationLayer

    pAnnoLayerFactory = New FDOGraphicsLayerFactory

    pAnnoLayer = pAnnoLayerFactory.CreateAnnotationLayer(pWorkspace, Nothing, pAnnoFeatName, pField.GeometryDef, Nothing, pAnnoPropsColl, pGraphicsLayerScale, pSymbolColl, False, False, False, True, pOverposterProperties, "")

    Return CType(pAnnoLayer, IFeatureLayer).FeatureClass

End Function

 

  ''' <summary>

  ''' 创建存于Shapefile中的featureclass

  ''' </summary>

  ''' <param name="sDir"></param>

  ''' <param name="sName"></param>

  ''' <param name="shapeType"></param>

  ''' <param name="hasM"></param>

  ''' <param name="hasZ"></param>

  ''' <param name="pSR"></param>

  ''' <param name="pFields"></param>

  ''' <returns></returns>

  ''' <remarks></remarks>

  Public Shared Function CreateShapefile(ByVal sDir As String, ByVal sName As String, ByVal shapeType As esriGeometryType, _

  ByVal hasM As Boolean, ByVal hasZ As Boolean, ByVal pSR As ISpatialReference, ByVal pFields As IFields) As IFeatureClass

    Try

      Dim shapeWorkspaceFactory As IWorkspaceFactory

      shapeWorkspaceFactory = New ShapefileWorkspaceFactory

      Dim shapeWorkspace As IFeatureWorkspace

      shapeWorkspace = shapeWorkspaceFactory.OpenFromFile(sDir, 0)

      If (Not shapeWorkspace Is Nothing) Then

        If pFields Is Nothing Then pFields = CreateBasicFields(shapeType, hasM, hasZ, pSR) '

        Dim pFClass As IFeatureClass

        pFClass = shapeWorkspace.CreateFeatureClass(sName, pFields, Nothing, Nothing, esriFeatureType.esriFTSimple, "Shape", "")

        Return pFClass

      End If

      Return Nothing

    Catch ex As Exception

      MsgBox(ex.Message)

      Return Nothing

    End Try

  End Function

 

  ''' <summary>

  ''' 创建存于内存中的Featureclass

  ''' </summary>

  ''' <param name="pFields"></param>

  ''' <param name="featureClassName"></param>

  ''' <returns></returns>

  ''' <remarks></remarks>

  Public Shared Function GetSimpleFeatureClass(ByVal pFields As IFields, ByVal featureClassName As String) As IFeatureClass

    Try

      Dim pSwf As IWorkspaceFactory = New InMemoryWorkspaceFactory

      Dim pWorkspaceName As IWorkspaceName = pSwf.Create("", "MyWorkspace", Nothing, 0)

      Dim pFWS As IFeatureWorkspace = CType(pWorkspaceName, IName).Open()

      Dim pFC As IFeatureClass = pFWS.CreateFeatureClass(featureClassName, pFields, Nothing, Nothing, esriFeatureType.esriFTSimple, "Shape", Nothing)

      Return pFC

    Catch ex As Exception

      Return Nothing

    End Try

  End Function

 

  ''' <summary>

  ''' 创建存于Access中的featureclass

  ''' </summary>

  ''' <param name="pFields"></param>

  ''' <param name="pAccessPath"></param>

  ''' <param name="pAccessName"></param>

  ''' <param name="featureClassName"></param>

  ''' <returns></returns>

  ''' <remarks></remarks>

  Public Function CreateAccessFeatureClass(ByVal pFields As IFields, ByVal pAccessPath As String, ByVal pAccessName As String, ByVal featureClassName As String) As IFeatureClass

    Try

      Dim pSwf As IWorkspaceFactory = New ESRI.ArcGIS.DataSourcesGDB.AccessWorkspaceFactory

      Dim pWorkspaceName As IWorkspaceName = pSwf.Create(pAccessPath, pAccessName, Nothing, 0)

      Dim pFWS As IFeatureWorkspace = CType(pWorkspaceName, IName).Open()

      pFields = CreateBasicFields(esriGeometryType.esriGeometryPoint, False, False, New UnknownCoordinateSystem)

      Dim pFC As IFeatureClass = pFWS.CreateFeatureClass(featureClassName, pFields, Nothing, Nothing, esriFeatureType.esriFTSimple, "Shape", Nothing)

      Return pFC

    Catch ex As Exception

      Return Nothing

    End Try

  End Function

抱歉!评论已关闭.