以下を実行するとOpenFeatureClassでエラーが発生
Geodatabase.IWorkspaceFactory workspaceFactory = new DataSourcesFile.ShapefileWorkspaceFactoryClass(); Geodatabase.IFeatureWorkspace featureWorkspace = (Geodatabase.IFeatureWorkspace)workspaceFactory.OpenFromFile(System.IO.Path.GetDirectoryName(@"C:\work"), 0); Geodatabase.IFeatureClass featureClass = featureWorkspace1.OpenFeatureClass(System.IO.Path.GetFileNameWithoutExtension(@"mypoint"));
以下を実行すると正しく動作する。違いはディレクトリの階層だけ。
Geodatabase.IWorkspaceFactory workspaceFactory = new DataSourcesFile.ShapefileWorkspaceFactoryClass(); Geodatabase.IFeatureWorkspace featureWorkspace = (Geodatabase.IFeatureWorkspace)workspaceFactory.OpenFromFile(System.IO.Path.GetDirectoryName(@"C:\work\test"), 0); Geodatabase.IFeatureClass featureClass = featureWorkspace1.OpenFeatureClass(System.IO.Path.GetFileNameWithoutExtension(@"mypoint"));
問題は明らかにSystem.IO.Path.GetDirectoryNameなのでSystem.IO.Path.GetDirectoryNameにはShapeファイルのフルパスを渡す
Geodatabase.IWorkspaceFactory workspaceFactory = new DataSourcesFile.ShapefileWorkspaceFactoryClass(); Geodatabase.IFeatureWorkspace featureWorkspace = (Geodatabase.IFeatureWorkspace)workspaceFactory.OpenFromFile(System.IO.Path.GetDirectoryName(@"C:\work\mypoint.shp"), 0); Geodatabase.IFeatureClass featureClass = featureWorkspace1.OpenFeatureClass(System.IO.Path.GetFileNameWithoutExtension(@"mypoint"));