C#-ArcEngine 添加图层文件的小问题

2024-12-13 00:21:34
推荐回答(4个)
回答1:

*.lyr文件 和 *.mxd 文件类似,相当于一个小的工程文件。是用来存储图层相关信息的,而不存储图层本身的内容,它通过存储图层的绝对路径或相对路径来获取图层。在打开 *.lyr 文件时,程序通过 绝对路径或相对路径来 寻找图层并加载到 axMapControl 控件中,同时也将上次保存的相关图层信息(如:上次你保存颜色等。如果直接打开 *.shp 文件 系统会随机生成颜色和其它信息)加载进去。这样会有一个弊端,那就是如果你改变了 图层的 路径,文件打开就会出错。

而出现在MapContral控件中不显示任何内容,但左侧的TocContral中显示图层的名字,但是有叹号的原因是:
在MapContral控件中不显示任何内容,是由于无法找到图层自然无法加载
图层,也就不会显示内容,存储的
图层信息(关于显示图层 或 图层
修饰信息)自然也就无效了。
左侧的TocContral中显示图层的名字,是因为 *.lyr文件 的确存在,它存储
图层的相关信息(如:图层名称等)
所以,自然会在左侧的 TocContral
中显示图层的名字。
有叹号,是因为无法寻找到 图层 导致 FeatureClass 属性为 空(null)
也就是说图层不存在,接下对图层的任何操作(如:添加了一条
记录 Feature ,或删除 一条记录 等)都会出错!

所以说该状况的出现是由于 路径 问题引起的。你可以在 ArcMap 中,找到
原图层,重新 保存为 *.lyr文件 即可。

回答2:

这个叹号问题和arcmap中的叹号应该是一样的,你先仔细检查下文件的绝对路径是否正确,如果不是的话就得看看你的文件投影是否一致了,

看了下提问者,才发现早上给你回答过 哈哈

回答3:

ICommand pCommand;
pCommand = new ESRI.ArcGIS.Controls.ControlsAddDataCommandClass();
pCommand.OnCreate(axMapControl1.Object);
pCommand.OnClick();

回答4:

应该是源文件路径问题~