加载Shp文件到地图控件MapControl有一般有两种方式。
1、用MapControl控件的AddShapeFile方法可加载Shape格式文件,调用该方法需要传入两个参数,分别是文件路径和不带扩展名的文件名,其调用方法如下:
axMapControl1.AddShapeFile(pathName, fileName);
利用此方法加载Shape文件时,可能会报未知错误,试试:将LicenseControl控件拖入窗体。
- private void AddShp(object sender, EventArgs e)
- {
- //利用文件对话框选择加载的shp文件路径
- OpenFileDialog OpenFdlg = new OpenFileDialog();
- OpenFdlg.Title = "选择shp文件";
- OpenFdlg.Filter = "Shape格式文件(*.shp)|*.shp";
- OpenFdlg.ShowDialog();
- string strFileName = OpenFdlg.FileName;
- if (strFileName == string.Empty)
- {
- return;
- }
- //将Shp文件的路径分割为路径和不带格式后缀的文件名
- string pathName = System.IO.Path.GetDirectoryName(strFileName);
- string fileName = System.IO.Path.GetFileNameWithoutExtension(strFileName);
- 下面两行为默认指定文件路径和文件名
- //string pathName = @"E:\HiOS\DataSHP";
- //string fileName = "River_X";
- axMapControl1.AddShapeFile(pathName, fileName);
- axMapControl1.Extent = axMapControl1.FullExtent;
- }
private void AddShp(object sender, EventArgs e)
{
//利用文件对话框选择加载的shp文件路径
OpenFileDialog OpenFdlg = new OpenFileDialog();
OpenFdlg.Title = "选择shp文件";
OpenFdlg.Filter = "Shape格式文件(*.shp)|*.shp";
OpenFdlg.ShowDialog();
string strFileName = OpenFdlg.FileName;
if (strFileName == string.Empty)
{
return;
}
//将Shp文件的路径分割为路径和不带格式后缀的文件名
string pathName = System.IO.Path.GetDirectoryName(strFileName);
string fileName = System.IO.Path.GetFileNameWithoutExtension(strFileName);
下面两行为默认指定文件路径和文件名
//string pathName = @"E:\HiOS\DataSHP";
//string fileName = "River_X";
axMapControl1.AddShapeFile(pathName, fileName);
axMapControl1.Extent = axMapControl1.FullExtent;
}
2、也可以利用工作空间工厂打开Shape格式文件
- private void AddShpData(object sender, EventArgs e)
- {
- //利用文件对话框选择加载的shp文件路径
- OpenFileDialog OpenFdlg = new OpenFileDialog();
- OpenFdlg.Title = "选择shp文件";
- OpenFdlg.Filter = "Shape格式文件(*.shp)|*.shp";
- OpenFdlg.ShowDialog();
- string strFileName = OpenFdlg.FileName;
- if (strFileName == string.Empty)
- {
- return;
- }
- string pathName = System.IO.Path.GetDirectoryName(strFileName);
- string fileName = System.IO.Path.GetFileNameWithoutExtension(strFileName);
- //声明Shape文件工作空间工厂,并获取要素工作空间,加载要素类
- IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactoryClass();
- IWorkspace pWorkspace = pWorkspaceFactory.OpenFromFile(pathName, 0);
- IFeatureWorkspace pFeatureWorkspace;
- pFeatureWorkspace = pWorkspace as IFeatureWorkspace;
- IFeatureClass pFeatureClass = pFeatureWorkspace.OpenFeatureClass(fileName);
- IDataset pDataset = pFeatureClass as IDataset;
- //声明要素图层,设置相应属性
- IFeatureLayer pFeatureLayer = new FeatureLayerClass();
- pFeatureLayer.FeatureClass = pFeatureClass;
- pFeatureLayer.Name = pDataset.Name;
- //将要素图层转为图层,Add to MapControl
- ILayer pLayer = pFeatureLayer as ILayer;
- axMapControl1.Map.AddLayer(pLayer);
- }
private void AddShpData(object sender, EventArgs e)
{
//利用文件对话框选择加载的shp文件路径
OpenFileDialog OpenFdlg = new OpenFileDialog();
OpenFdlg.Title = "选择shp文件";
OpenFdlg.Filter = "Shape格式文件(*.shp)|*.shp";
OpenFdlg.ShowDialog();
string strFileName = OpenFdlg.FileName;
if (strFileName == string.Empty)
{
return;
}
string pathName = System.IO.Path.GetDirectoryName(strFileName);
string fileName = System.IO.Path.GetFileNameWithoutExtension(strFileName);
//声明Shape文件工作空间工厂,并获取要素工作空间,加载要素类
IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactoryClass();
IWorkspace pWorkspace = pWorkspaceFactory.OpenFromFile(pathName, 0);
IFeatureWorkspace pFeatureWorkspace;
pFeatureWorkspace = pWorkspace as IFeatureWorkspace;
IFeatureClass pFeatureClass = pFeatureWorkspace.OpenFeatureClass(fileName);
IDataset pDataset = pFeatureClass as IDataset;
//声明要素图层,设置相应属性
IFeatureLayer pFeatureLayer = new FeatureLayerClass();
pFeatureLayer.FeatureClass = pFeatureClass;
pFeatureLayer.Name = pDataset.Name;
//将要素图层转为图层,Add to MapControl
ILayer pLayer = pFeatureLayer as ILayer;
axMapControl1.Map.AddLayer(pLayer);
}