ArcGISのエンジン(AE)インタフェース解説(6):ワークスペースの操作

                // ソース及びユーザ選択でその他のワークスペース 
                IWorkspaceワークスペース= NULL ; 

                // ワークスペースは、一般的にデータベースに相当する

                // ワークスペースの種類、それはまた、データベースのタイプとして理解することができる
                 @の可能性SHP:esriFileSystemWorkspace
                 @ esriLocalDatabaseWorkspace:おそらくGDBファイル、MDB
                 // esriRemoteDatabaseWorkspace:おそらくSDE 
                esriWorkspaceType workspaceType = workspace.Type; 

                // ローカルファイルタイプ(例えばSHP、ファイルGDB、MDB)へのパスは、意味は、それらのファイルパスである
                文字列 =パス; workspace.PathName 

                / / データベース接続構成は、SDEのために一般的に有効である 
                IPropertySetプロパティセット=workspace.ConnectionProperties;
                 // 以下は彼のコード値横切られる
                オブジェクト objNames = NULL ;
                 オブジェクト objValue = NULL ;
                 //はすべての値を取得し、フィールド構造が類似キー/値の形式で、パラメータ名が1のアレイであり、2はパラメータであります値配列                
                 // パラメータは、それぞれ、オブジェクトの種類であるが、配列と文字列の実際のオブジェクト配列 
                propertySet.GetAllProperties(OUTの objNames、OUT objValue);
                 文字列 [] =名(文字列[])objNames、
                 オブジェクト []の値=(オブジェクト[ ])objValue;
                 //各トラバースの値取得
                のためにint型 I = 0 ; I ++は、私はnames.lengthを< 
                { 
                    // パラメータ名の
                    文字列名= [I]名;
                     // パラメータ値
                    文字列値= 値[I] .ToString(); 
                } 

                / / 次のコードを、それらがテストデータを持っていないので、コードを見て実行されない
                IF1 == 2 
                { 
                    // ネイティブSQLを実行
                     // データ・タイプは、ワークスペースSDEなどのデータベースである場合、この方法は、ネイティブSQLによって実行することができる
                     // ここでしか例えば、結果のSQLを返す挿入、更新、など、選択することはできませんしないでください
                    workspace.ExecuteSQL(アップデートのEee XXX = 111 SET ); 
                } 

                // PSを:上記のコードは、構成SDEデータベースを得ることができますが、歪みを取得し、パスワード、AEは(一般的に使用される完全なSDE接続パラメータを取得したいので、可能ではない)、新しい接続のため再度SDE 

                // すべてのワークスペースデータセットトラバース
                 // get_Datasetsワークスペース・メンバーの取得方法を、一つのパラメータのデータ・タイプを取得する
                 // インタフェースと、カーソルIEnumの先頭に類似していますクエリの結果の一部横断する 
                IEnumDataset enumDataset = ; workspace.get_Datasets(esriDatasetType.esriDTFeatureDataset)
                enumDataset.Reset(); 
                // 以下のフィーチャクラスにデータの次のセットを横断しなければならないので、そうIFeatureDataset費やさを、実際には、IDataSetの通りである 
                タイプのIFeatureDataset FeatureDataset = ヌル;
                一方、((FeatureDataset = enumDataset.Next()AS IFeatureDataset)!= NULL 
                { 
                    // データベースプロパティのセット

                    IDataSetデータセット = FeatureDataset AS IDataSet;
                     // データセット名
                    文字列 datasetName = dataset.Name;
                     // データセットタイプ 
                    esriDatasetType = DatasetType dataset.Type; 

                    // IGeoDatasetジオメトリインターフェイス関連付けられ 
                    IGeoDataset geoDataset = FeatureDataset AS IGeoDataset;
                     // 空間参照
                    SpatialReference2 = ISpatialReference geoDataset.SpatialReference; 


                    // フィーチャクラスのデータセットの全ての取得

                    IFeatureClassContainer featureClassContainer = FeatureDataset AS IFeatureClassContainer; 
                    IEnumFeatureClass enumFeatureClass = featureClassContainer.Classes; 
                    enumFeatureClass.Reset(); 
                    IFeatureClassフィーチャクラス = ヌル;
                     // 反復データセットのフィーチャクラス
                    一方、((フィーチャクラス= enumFeatureClass.Next())!= NULL 
                    { 


                    }
                    // IEnumの(カーソルのように)手動解除を実行する必要があるインターフェイス始まる
                    System.Runtime.InteropServices.Marshal.FinalReleaseComObject(enumFeatureClass); 
                } 
                // (カーソルのように)すべてのIEnumマニュアルリリースの冒頭に実行するようにインターフェイスを
                システム。 Runtime.InteropServices.Marshal.FinalReleaseComObject(enumDataset); 

                //は、ワークスペース内のフィーチャクラスを反復
                 // PS:結合は、上記のコードに留意することができる、データ・セットが別のワークスペースの下にフィーチャクラスとアクセスコードフィーチャクラスを取得

                enumDataset = ワークスペース.get_Datasets(esriDatasetType.esriDTFeatureClass); 
                enumDataset.Reset(); 
                IFeatureClass featureClass2 = enumDataset.Next()AS IFeatureClass。
                一方、((featureClass2 = enumDataset.Next()AS IFeatureClass)!= NULL 
                { 

                } 
                // (カーソルと同様に)手動解除を実行する必要がありIEnumインターフェイスを開始
                System.Runtime.InteropServices.Marshal.FinalReleaseComObject(enumDatasetを); 

                / / (データセット内を含む)すべてのフィーチャクラスのワークスペースを取得する 
                一覧<IFeatureClass> lstFeatureClass = WorkspaceEdmHelper.GetAllFeatureClassInWorkspace(ワークスペースAS IFeatureWorkspace); 

                // フィーチャクラスを操作するためのワークスペースインターフェイス 
                IFeatureWorkspace featureWorkspace =ワークスペースAS IFeatureWorkspace;
                 // 次のコードは、彼らがテストを持っていないので、データは、実行されないコードを見て
                IF1 == 2 
                { 
                    // 取得フィーチャクラス名によって
                     // PS:フィーチャクラスも異なるトラバースこの時点で設定され、そのようなデータを取得してもよい 
                    featureClass2 = featureWorkspace.OpenFeatureClass(WWWを); 

                    // 名前を取得しますデータセット 
                    FeatureDataset = featureWorkspace.OpenFeatureDataset(RRR ); 


                    // データベースやファイルパスのパラメータを経由して、新しいデータベースまたはデータベースを開く

                    // ファイルGDBの作成、パラメータファイルは、フォルダ1、パラメータ2は、データベース名です
                     // ので、そのワークスペースを作成するためのファイルGDB相当を作成するワークスペースと同等のデータベースファイルGDB、                    
                    = WorkspaceEdmHelper.CreateFileGdb featureWorkspace(" C:\\ AAA "" test.gdb " ); 

                    //はパーソナルGDB(MDB)を作成し、パラメータ1は、ファイルパラメータ2は、データベースの名前であるフォルダである 
                    (featureWorkspace = WorkspaceEdmHelper.CreatePersonalGdb " C:\\ AAA " " Test.mdbの" );                    
                }

 

ます。https://www.cnblogs.com/cannel/p/11074323.htmlで再現

おすすめ

転載: blog.csdn.net/weixin_33695082/article/details/93550367