shp文件是目前主流的空间数据存储文件,AE加载shp文件可以通过以下两种方式:
- 通过工作空间加载
- 通过MapControl的AddShapefile方法加载Shapefile文件
通过工作空间加载:
此方法使用于有复杂空间分析操作的情况
用到的引用
using ESRI.ArcGIS.Geodatabase; //工作空间使用
using ESRI.ArcGIS.DataSourcesFile; //打开shp工作空间工厂使用
using ESRI.ArcGIS.Carto; //添加到显示时使用
步骤:
1、打开窗口获得文件路径
OpenFileDialog pOpenfileDialog = new OpenFileDialog();
pOpenfileDialog.Filter = "Shape文件|*.shp"; //打开shp文件
if (pOpenfileDialog.ShowDialog() == DialogResult.OK) {
tring path = pOpenfileDialog.FileName;
2、获得文件名与所在文件夹路径
由于shp文件是存储于文件夹当中的,因此打开时要通过文件夹路径创建工作空间,使用工作空间的OpenFeatureClass方法打开
//由于shp文件的特殊性,要通过文件名和文件路径获取
string pFilePath = System.IO.Path.GetDirectoryName(path);
string pFileName = System.IO.Path.GetFileName(path);
3、创建工作空间工厂对象
IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactory();
4、通过文件夹路径创建要素工作空间
//打开工作空间
IFeatureWorkspace pFeaWorkspace = pWorkspaceFactory.OpenFromFile(pFilePath, 0) as IFeatureWorkspace;
5、使用工作空间的OpenFeatureClass方法打开shp文件为要素类
IFeatureClass pFeatureClass = pFeaWorkspace.OpenFeatureClass(pFileName); //打开文件
6、将要素类添加到显示
通过MapControl的AddShapefile方法加载
如果系统仅加载数据用于展示,无需工作空间,使用此方案更加简洁
步骤:
1、打开窗口获得文件路径
OpenFileDialog pOpenfileDialog = new OpenFileDialog();
pOpenfileDialog.Filter = "Shape文件|*.shp"; //打开shp文件
if (pOpenfileDialog.ShowDialog() == DialogResult.OK) {
tring path = pOpenfileDialog.FileName;
2、获得文件名与所在文件夹路径
//由于shp文件的特殊性,要通过文件名和文件路径获取
string pFilePath = System.IO.Path.GetDirectoryName(path);
string pFileName = System.IO.Path.GetFileName(path);
3、通过MapControl的AddShapefile方法加载
axMapControl1.AddShapeFile(pFilePath,pFileName);
全部代码:
方法一:
private void 打开shpToolStripMenuItem_Click(object sender, EventArgs e)
{
OpenFileDialog pOpenfileDialog = new OpenFileDialog();
pOpenfileDialog.Filter = "Shape文件|*.shp"; //打开shp文件
if (pOpenfileDialog.ShowDialog() == DialogResult.OK) {
string path = pOpenfileDialog.FileName;
IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactory();
//由于shp文件的特殊性,要通过文件名和文件路径获取
string pFilePath = System.IO.Path.GetDirectoryName(path);
string pFileName = System.IO.Path.GetFileName(path);
//打开工作空间
IFeatureWorkspace pFeaWorkspace = pWorkspaceFactory.OpenFromFile(pFilePath, 0) as IFeatureWorkspace;
//创建并实例化要素集
IFeatureClass pFeatureClass = pFeaWorkspace.OpenFeatureClass(pFileName); //打开文件
//将要素添加到显示
IFeatureLayer pFeatureLyr = new FeatureLayer();
pFeatureLyr.FeatureClass = pFeatureClass;
axMapControl1.Map.AddLayer(pFeatureLyr);
axMapControl1.ActiveView.Refresh();
}
}
方法二:
private void 打开shp2ToolStripMenuItem_Click(object sender, EventArgs e)
{
OpenFileDialog pOpenfileDialog = new OpenFileDialog();
pOpenfileDialog.Filter = "Shape文件|*.shp"; //打开shp文件
if (pOpenfileDialog.ShowDialog() == DialogResult.OK)
{
string path = pOpenfileDialog.FileName;
IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactory();
//由于shp文件的特殊性,要通过文件名和文件路径获取
string pFilePath = System.IO.Path.GetDirectoryName(path);
string pFileName = System.IO.Path.GetFileName(path);
axMapControl1.AddShapeFile(pFilePath,pFileName);
}
}