Select to view content in your preferred language

how to save feature class as shape file + C#

1331
1
03-09-2012 09:28 AM
MukundaRao_R
Emerging Contributor
hi experts,

can anyone provide me some help on how to save the feature class as shape file in the disk.


Thanks
Mukund
0 Kudos
1 Reply
PhilMiotto
Emerging Contributor
You can use IFeatureDataConverter to save a featureclass to a shapefile. Here is a quick example:

Public Sub GetFeatureClassAndWorkspace()

     Dim pOutSDEPropset As IPropertySet
     Set pOutSDEPropset = New PropertySet
     With pOutSDEPropset
        .SetProperty "Server", "shakedown"
        .SetProperty "Instance", "5151"
        .SetProperty "user", "sde"
        .SetProperty "password", "sde"
        .SetProperty "version", "SDE.DEFAULT"
     End With
     
     ' +++ Create a new feature datset name object for the output SDE feature dataset, call
     ' +++ it "USA"
   Dim pSDEworkspacefactory As IWorkspaceFactory
   Set pSDEworkspacefactory = New SdeWorkspaceFactory
   Dim pWorkspace As IWorkspace
   Set pWorkspace = pSDEworkspacefactory.Open(pOutSDEPropset, 0)
   
   Dim pSFworkspacefactory As IWorkspaceFactory
   Set pSFworkspacefactory = New ShapefileWorkspaceFactory
   Dim pShapeWorkspace As IWorkspace
   Set pShapeWorkspace = pSFworkspacefactory.OpenFromFile("C:\test_data\shapefiles", 0)
   
   Dim pFeatWork As IFeatureWorkspace
   Set pFeatWork = pShapeWorkspace
      
   Dim pFeatureClass As IFeatureClass
   Dim pFeatWs As IFeatureWorkspace
   Set pFeatWs = pWorkspace
   Set pFeatureClass = pFeatWs.OpenFeatureClass("States")
   
    ConvertFeatureClass pFeatureClass, pFeatWork
   
   
End Sub

Public Sub ConvertFeatureClass(pFeatureClass As IFeatureClass, _
                            pOutWorkspace As IWorkspace)
'Purpose: Converts a featureclass to a new feature class in a given workspace.
  'Get input FeatureClassName and workspace
  Dim pInFCName As IFeatureClassName
  Dim pDataset As IDataset
  Set pDataset = pFeatureClass
  Set pInFCName = pDataset.FullName
  Dim pInWorkspace As IWorkspace
  Set pInWorkspace = pDataset.Workspace
  
  'Set output workspacename
  Set pDataset = pOutWorkspace
  Dim pOutWorkspaceName As IWorkspaceName
  Set pOutWorkspaceName = pDataset.FullName
  
  'Set output FeatureClassName
  Dim pOutFCName As IFeatureClassName
  Set pOutFCName = New FeatureClassName
  Dim pDatasetName As IDatasetName
  Set pDatasetName = pOutFCName
  pDatasetName.Name = "States_SHP.shp"
  Set pDatasetName.WorkspaceName = pOutWorkspaceName
  
  'Get fields for input feature class and run them through field checker
  Dim pFieldChecker As IFieldChecker
  Dim pFields As IFields
  Set pFields = pFeatureClass.Fields
  Dim pOutFields As IFields
  Set pFieldChecker = New FieldChecker
  pFieldChecker.InputWorkspace = pInWorkspace
  Set pFieldChecker.ValidateWorkspace = pOutWorkspace
  pFieldChecker.Validate pFields, Nothing, pOutFields
  
  'Convert the data
  Dim pFeatureDataConverter As IFeatureDataConverter
  Set pFeatureDataConverter = New FeatureDataConverter
  pFeatureDataConverter.ConvertFeatureClass pInFCName, Nothing, _
    Nothing, pOutFCName, Nothing, pOutFields, "", 100, 0
End Sub
0 Kudos