2016-09-01 17 views
-2

一時的なFeaturesが含まれている一時的なFeatureClassを作成したいと思います。これは後でプログラミングでは役に立たないものです。ArcObjectで一時的なFeatureClassを構築するには?

私はArcObject API referenceを検索しましたが、この問題を解決する効率的な方法が見つかりません。では、どうすれば一時的な "コンテナ"をいくつかの一時的な機能を保存することができますか?

最初にCreateFeatureClassを使用して、実際のFeatureClassを作成して後で削除する必要がありますか?私はいくつかのものを扱わなければならないので、この方法はクールだとは思わない。CLSID事。

PS:この「コンテナ」には、Cursorを返す機能が必要です。

+0

フィーチャクラスを作成して後で削除するのはまさに方法です。もちろん、このフィーチャクラスが作成されたワークスペースが必要です。あらゆる種類のデータソース、パーソナルgdb、シェイプファイル、リモートワークスペース、ラスタのためのさまざまなワークスペースファクトリがあります...途中の 'CLSID'は必須ではありませんそのフィーチャクラスに関連するクラス拡張を単に参照するので、そのまま残すことができます。しかし、私はあなたがそれを必要としないと思います。 – HimBromBeere

答えて

0

InMemoryWorkspaceを使用する必要があります。

IWorkspaceFactory2 objWorkspaceFactory = new InMemoryWorkspaceFactoryClass(); IWorkspaceName objWorkspaceName = objWorkspaceFactory.Create(string.Empty、p_strName、null、0); IName objName =(IName)objWorkspaceName; IWorkspace objWorkspace =(IWorkspace)objName.Open();

この作業領域を使用すると、テンポラリーフィーチャクラス(検索の実行、カーソルの取得、フィーチャクラスの削除より)を作成できます。 あなたのケースでは、InMemory WorkspaceがShapeFileまたはPersonal Geodatabaseで作業するより効率的だと思います。

0

一時ディレクトリに一時的なパーソナルジオデータベースを作成するために使用するIScratchWorkspaceFactory2インターフェイスを使用できます。このディレクトリは、%TEMP%環境変数を調べることで見つけることができます。スクラッチパーソナルジオデータベースにはmx.mdbという名前が付けられます。このmx.mdbは、ジオデータベースを一意に識別する最も小さい正の数字です。

IScratchWorkspaceFactory2 factory = new ScratchWorkspaceFactoryClass(); 
var selectionContainer = factory.DefaultScratchWorkspace; 
関連する問題