This document is archived and information here might be outdated.  Recommended version.


Get FeatureClass From Shapefile On Disk Snippet (ArcObjects .NET 10.5 SDK)
ArcObjects Library Reference

Get FeatureClass From Shapefile On Disk Snippet

Get the FeatureClass from a Shapefile on disk (hard drive).

[C#]
/// <summary>
/// Get the FeatureClass from a Shapefile on disk (hard drive).
/// </summary>
/// <param name="string_ShapefileDirectory">A System.String that is the directory where the shapefile is located. Example: "C:\data\USA"</param>
/// <param name="string_ShapefileName">A System.String that is the shapefile name. Note: the shapefile extension's (.shp, .shx, .dbf, etc.) is not provided! Example: "States"</param>
/// <returns>An IFeatureClass interface. Nothing (VB.NET) or null (C#) is returned if unsuccessful.</returns>
/// <remarks></remarks>
public ESRI.ArcGIS.Geodatabase.IFeatureClass GetFeatureClassFromShapefileOnDisk(System.String string_ShapefileDirectory, System.String string_ShapefileName)
{

    System.IO.DirectoryInfo directoryInfo_check=new System.IO.DirectoryInfo(string_ShapefileDirectory);
    if (directoryInfo_check.Exists)
    {

        //We have a valid directory, proceed

        System.IO.FileInfo fileInfo_check=new System.IO.FileInfo(string_ShapefileDirectory + "\\" + string_ShapefileName + ".shp");
        if (fileInfo_check.Exists)
        {

            //We have a valid shapefile, proceed

            ESRI.ArcGIS.Geodatabase.IWorkspaceFactory workspaceFactory=new ESRI.ArcGIS.DataSourcesFile.ShapefileWorkspaceFactoryClass();
            ESRI.ArcGIS.Geodatabase.IWorkspace workspace=workspaceFactory.OpenFromFile(string_ShapefileDirectory, 0);
            ESRI.ArcGIS.Geodatabase.IFeatureWorkspace featureWorkspace=(ESRI.ArcGIS.Geodatabase.IFeatureWorkspace)workspace; // Explict Cast
            ESRI.ArcGIS.Geodatabase.IFeatureClass featureClass=featureWorkspace.OpenFeatureClass(string_ShapefileName);

            return featureClass;
        }
        else
        {

            //Not valid shapefile
            return null;
        }

    }
    else
    {

        // Not valid directory
        return null;

    }
    
}
[Visual Basic .NET]
''' <summary>
''' Get the FeatureClass from a Shapefile on disk (hard drive).
''' </summary>
''' <param name="string_ShapefileDirectory">A System.String that is the directory where the shapefile is located. Example: "C:\data\USA"</param>
''' <param name="string_ShapefileName">A System.String that is the shapefile name. Note: the shapefile extension's (.shp, .shx, .dbf, etc.) is not provided! Example: "States"</param>
''' <returns>An IFeatureClass interface. Nothing (VB.NET) or null (C#) is returned if unsuccessful.</returns>
''' <remarks></remarks>
Public Function GetFeatureClassFromShapefileOnDisk(ByVal string_ShapefileDirectory As System.String, ByVal string_ShapefileName As System.String) As ESRI.ArcGIS.Geodatabase.IFeatureClass

  Dim directoryInfo_check As System.IO.DirectoryInfo=New System.IO.DirectoryInfo(string_ShapefileDirectory)
  If directoryInfo_check.Exists Then

    'We have a valid directory, proceed

    Dim fileInfo_check As System.IO.FileInfo=New System.IO.FileInfo(string_ShapefileDirectory + "\" + string_ShapefileName + ".shp")
    If fileInfo_check.Exists Then

      'We have a valid shapefile, proceed

      Dim workspaceFactory As ESRI.ArcGIS.Geodatabase.IWorkspaceFactory=New ESRI.ArcGIS.DataSourcesFile.ShapefileWorkspaceFactoryClass
      Dim workspace As ESRI.ArcGIS.Geodatabase.IWorkspace=workspaceFactory.OpenFromFile(string_ShapefileDirectory, 0)
      Dim featureWorkspace As ESRI.ArcGIS.Geodatabase.IFeatureWorkspace=CType(workspace, ESRI.ArcGIS.Geodatabase.IFeatureWorkspace) ' Explict Cast
      Dim featureClass As ESRI.ArcGIS.Geodatabase.IFeatureClass=featureWorkspace.OpenFeatureClass(string_ShapefileName)

      Return featureClass
    Else

      'Not valid shapefile
      Return Nothing
    End If

  Else

    ' Not valid directory
    Return Nothing

  End If

End Function

Additional Requirements
  • The code in this document requires the following References added to the Visual Studio project:
  • ESRI.ArcGIS.DataSourcesFile
  • ESRI.ArcGIS.Geodatabase