MapControlをC++アプリケーションに埋め込んでいます。このアプリケーションは、独自の非リレーショナルデータベースに関連付けられています。したがって、マップコントロールをGISデータに直接リンクすることはできません。代わりに、自分のポイントフィーチャーをフィーチャーレイヤーにロードするだけです。フィーチャレイヤーを作成するメカニズムは理解していますが、それらはある種のデータソースに関連付けられているようです。ファイルやデータベースを指定せずに、フィーチャデータをレイヤーに直接ロードするにはどうすればよいですか?言い換えれば、私はこれらの機能をメモリ常駐のみにしたいのです。
2 に答える
ポイントのみを表示する場合は、フィーチャレイヤーを使用せずに、マップに直接描画します。例:ここ
ポイントにデータが関連付けられている場合は、それらをフィーチャとしてフィーチャクラスにロードし(IFeatureClass.Insertを介して)、フィーチャクラスをフィーチャレイヤーにアタッチする必要があります。これを行うには、最初に独自のフィーチャクラスを作成する必要があります。ここにサンプルコードがあります。
この例では、ShapeFileWorkspaceFactoryを使用してディスク上にシェープファイルを作成し、機能を保存しているわけではありませんが、この場合、ScratchWorkspaceFactoryを使用して、ArcMapが閉じたときにフラッシュされる一時的なメモリ内ワークスペースを作成できます。
リンク内のさまざまなプログラミング方言についてお詫びしますが、それらが作業の出発点となることを願っています。
ScratchWorkspaceFactoryの代わりに、InMemoryWorkspaceFactoryを使用します。
インメモリワークスペースに存在するフィーチャクラスへの参照を持つフィーチャレイヤーと、情報のシンボル化方法を定義するシンボル(IGeoFeatureLayer.Renderer)が引き続き必要です。