2017-07-13 15 views
0

VB.NET for ArcGIS 10.1 フィーチャクラス名をgeodbで検索する関数があります。発見された場合は、それが見つかった場所を表示したいと思います。現在、私はそうのようなフィーチャクラスのオブジェクトを返します。ArcGIS:IFeatureClassからカタログパスを取得

Dim fcTest As IFeatureClass = FindFeatureClassByName(pWorkspace, fcName) 

それは素晴らしい作品が、今、私はフィーチャクラスのオブジェクトの完全カタログパスを表示したいと思います。それは可能ですか?私は何時間も探してきましたが、それはできません。フィーチャクラスはフィーチャデータセットに存在する可能性があります。だから、フィーチャクラスは、その情報は、フィーチャクラスのオブジェクトに含まれ得るん

E:\Batch\Delivered.gdb\Bridges 
    D:\Data\Final\Infrastructure.gdb\EastValley\powerlines 
    C:/projects/RedRiverBasin/data.mdb/streams 
    C:/projects/Airports/USA.mdb/West/lax 

のような場所にあるか、私は私の機能を微調整しなければならないのだろうか?

私は

Dim pDataset As IDataset = CType(fcTest, IDataset) 

を試みたが、その位置はどこそれはだ場合pDataset.Nameは、フィーチャクラスの名前ではなく任意のフィーチャデータセットを含む完全カタログパスと名前です。

答えて

0

解決策を見つけ、それはかなり簡単だった:

''' <summary> 
''' this routine will return the full catalog path and name of a feature class. 
''' </summary> 
''' <param name="pFeatClass">the feature class object</param> 
''' <returns>a string representing the catalog path of the feature class</returns> 
''' <remarks>https://geonet.esri.com/thread/4280</remarks> 
Public Function GetCatalogPath(ByVal pFeatClass As IFeatureClass) As String 
    Try 
     'check for valid object 
     If pFeatClass Is Nothing Then Return Nothing 

     'cast to dataset and get workspace 
     Dim pDataset As IDataset = CType(pFeatClass, IDataset) 
     Dim pWksp As IWorkspace = pDataset.Workspace 

     'the full path may be in a fetaure dataset so check it 
     Dim pFeatDs As IFeatureDataset = pFeatClass.FeatureDataset 
     If pFeatDs Is Nothing Then 
      Return System.IO.Path.Combine(pWksp.PathName, pDataset.Name) 
     Else 
      Return System.IO.Path.Combine(pWksp.PathName, pFeatDs.Name, pDataset.Name) 
     End If 
    Catch ex As Exception 
     Return Nothing 
    End Try 
End Function