如何从内存而不是数据库或文件添加点要素?

时间:2010-07-27 23:33:29

标签: arcobjects

我将MapControl嵌入到C ++应用程序中。该应用程序与专有的非关系数据库相关联。因此,将地图控件直接链接到GIS数据是不可行的。相反,我想简单地将我自己的点要素加载到要素图层中。我理解创建要素图层的机制,但它们似乎与某种类型的数据源相关联。如何在不指向文件或数据库的情况下将要素数据直接加载到图层中?换句话说,我希望这些功能只占用内存。

2 个答案:

答案 0 :(得分:1)

如果您只想显示点,请不要使用要素图层,而是直接绘制到地图。 示例:here

如果您的点有关联数据,则需要将它们作为要素加载到要素类中(通过IFeatureClass.Insert),并将要素类附加到要素图层。为此,您需要先创建自己的要素类。示例代码here

并非此示例使用ShapeFileWorkspaceFactory在磁盘上创建shapefile来存储功能,但在您的情况下,您可以使用ScratchWorkspaceFactory创建临时内存工作区,在ArcMap关闭时刷新。

为链接中的各种编程方言道歉,但我希望他们能给你一些起点。

答案 1 :(得分:1)

我使用InMemoryWorkspaceFactory

而不是ScratchWorkspaceFactory

您仍然需要一个featurelayer,它将引用驻留在内存工作区中的featureclass,以及定义信息将如何符号化的符号系统(IGeoFeatureLayer.Renderer)。