ArcGIS Engine 数据加载
1.IMapControl接口
1.1思路简介:
(1)使用OpenFileDialog 打开文件对话框,获取打开文件路径。
(2)CheckMxFile(pFileName) 方法检查地图文档是否有效。
(3)LoadMxFile(pFileName) 方法想MapControl控件中加载地图文档。
private void iMapControl接口ToolStripMenuItem_Click(object sender, EventArgs e)
{
OpenFileDialog openfile = new OpenFileDialog();
openfile.CheckFileExists = true;
openfile.Title = "打开地图文档";
openfile.Filter = "(*.mxd)|*.mxd;|(*.mxt)|*.mxt;|(*.pmf)|*.pmf;|(*.mxd;*.mxt;*.pmf)|*.mxd;*.mxt;*.pmf";
openfile.Multiselect = false;//不允许多选
openfile.RestoreDirectory = true;//存储打开的文件路径
if (openfile.ShowDialog() == DialogResult.OK) {
string FileName = openfile.FileName;
if (FileName == "") {
return;
}
if (axMapControl1.CheckMxFile(FileName))
{
axMapControl1.ClearLayers();
axMapControl1.LoadMxFile(FileName);
}
else {
MessageBox.Show(FileName + "无效的地图文档!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
}
}
2.IMapDocument接口
private void iMapDocument接口ToolStripMenuItem_Click(object sender, EventArgs e)
{
OpenFileDialog openfile = new OpenFileDialog();
openfile.CheckFileExists = true;
openfile.Title = "打开地图文档";
openfile.Filter = "(*.mxd)|*.mxd;|(*.mxt)|*.mxt;|(*.pmf)|*.pmf;|(*.mxd;*.mxt;*.pmf)|*.mxd;*.mxt;*.pmf";
openfile.Multiselect = false;//不允许多选
openfile.RestoreDirectory = true;//存储打开的文件路径
if (openfile.ShowDialog() == DialogResult.OK) {
string FileName = openfile.FileName;
if (FileName == "") {
return;
}
if (axMapControl1.CheckMxFile(FileName))
{
//using ESRI.ArcGIS.Carto; 添加命名空间 才能使用IMapDocument
IMapDocument mapdocument = new MapDocument();
mapdocument.Open(FileName, "");
//一个文档对象中可能含有多个Map 通过FocusMap 获得当前Map
//IMapDocument 相当于一个数据容器 ActiveView 能够获得数据视图 FocusMap获取数据视图中正在使用的Map
axMapControl1.Map = mapdocument.ActiveView.FocusMap;//获取当前正在使用map对象 ActiveView 数据视图
axMapControl1.ActiveView.Refresh();
}
else
{
MessageBox.Show(FileName + "无效的地图文档!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
}
3.加载shapfile数据
private void 通过工作空间加载ToolStripMenuItem_Click(object sender, EventArgs e)
{
OpenFileDialog openfile=new OpenFileDialog();
openfile.CheckFileExists = true;
openfile.Title = "打开shapfile文件";
openfile.Filter = "Shap文件(*.shap)|*.shap";
openfile.ShowDialog();
IWorkspaceFactory workspaceFactory;
IFeatureWorkspace featureworkspace;
IFeatureLayer featurelayer;
string filename = openfile.FileName;
if (filename == "") return;
int pindex = filename.LastIndexOf("\\");
string path = filename.Substring(0, pindex);
string name = filename.Substring(pindex + 1);
workspaceFactory = new ShapefileWorkspaceFactory();
featureworkspace = workspaceFactory.OpenFromFile(path, 0) as IFeatureWorkspace;
IFeatureClass featureclass = featureworkspace.OpenFeatureClass(name);
featurelayer = new FeatureLayer();
featurelayer.FeatureClass = featureclass;
featurelayer.Name = featurelayer.FeatureClass.AliasName;
axMapControl1.ClearLayers();
axMapControl1.Map.AddLayer(featurelayer);
axMapControl1.ActiveView.Refresh();
}
3.通过AddShapfile() 加载数据
private void 加载shaofile文件ToolStripMenuItem_Click(object sender, EventArgs e)
{
OpenFileDialog openfile = new OpenFileDialog();
openfile.Title = "加载shapfile数据";
openfile.Filter = "(*.shap)|*.shap";
//如果用户点击OK 则加载数据
if (openfile.ShowDialog()==DialogResult.OK) {
string fullpath = openfile.FileName;
//int index = fullpath.LastIndexOf("\\");
string path = fullpath.Substring(startIndex:0, length:fullpath.LastIndexOf("\\"));
string name = fullpath.Substring(fullpath.LastIndexOf("\\") + 1);
axMapControl1.AddShapeFile(path,name);
axMapControl1.Refresh();
MessageBox.Show("文件加载成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}