|
阅读:1073回复:0
AE创建各种类型的featureclass代码
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> |
|
|