📄 adddata.cs
字号:
using System;
using System.Windows.Forms;
using System.Drawing;
using System.Collections;
using ESRI.ArcGIS.Geometry;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.DataSourcesFile;
using ESRI.ArcGIS.DataSourcesRaster;
using ESRI.ArcGIS.DataSourcesGDB;
using ESRI.ArcGIS.esriSystem;
namespace EngineData
{
/// <summary>
/// AddData 的摘要说明。
/// </summary>
public class AddData
{
//ArrayList pLayers = new ArrayList();
ESRI.ArcGIS.MapControl.AxMapControl mapControl;
public AddData(ESRI.ArcGIS.MapControl.AxMapControl mapControl)
{
this.mapControl = mapControl;
//
// TODO: 在此处添加构造函数逻辑
//
}
public void ShowDialog()
{
OpenFileDialog file = new OpenFileDialog();
file.FileOk +=new System.ComponentModel.CancelEventHandler(file_FileOk);
file.Filter="shp文件(*.shp)|*.shp|图层文件(*.lyr)|*.lyr|影像文件(*.sid)|*.sid|影像文件(*.tif)|*.tif|AutoCAD文件(*.dwg)|*.dwg|MicroStation文件(*.dgn)|*.dgn|个人数据库文件(*.mdb)|*.mdb|SDE连接文件(*.sde)|*.sde|所有文件(*.*)|*.*";
file.DefaultExt = "*.*";
file.Multiselect = true;
file.ShowDialog();
}
private void file_FileOk(object sender, System.ComponentModel.CancelEventArgs e)
{
OpenFileDialog file = (OpenFileDialog)sender;
string[] filenames = file.FileNames;
file.Dispose();
Application.DoEvents();
for(int i=0;i<filenames.Length;i++)
{
GetLayer(filenames[i]);
Application.DoEvents();
}
}
//根据打开的文件获取图层
private void GetLayer(string file)
{
//首先获取文件名,文件路径及文件类型
string[] sArray=file.Split('\\');
string filename=sArray[sArray.Length-1];
string url="";
for(int i=0;i<sArray.Length-1;i++)
{
url=url+sArray[i]+"\\";
}
string[] sFile = filename.Split('.');
string file_ext="";
if(sFile.Length>0)
file_ext = sFile[sFile.Length-1];
file_ext = file_ext.ToLower();
//以下根据文件类型返回不同的图层
switch(file_ext)
{
case "dwg":
layer_cad(url,filename);
break;
case "dgn":
layer_cad(url,filename);
break;
case "shp":
layer_shp(url,filename);
break;
case "lyr":
//layer_cad(url,filename);
break;
case "sid":
layer_sid(url,filename);
break;
case "tif":
layer_sid(url,filename);
break;
case "mdb":
layer_mdb(url,filename);
break;
case "sde":
layer_sde(url,filename);
break;
}
}
private void layer_cad(string url,string filename)
{
ICadDrawingDataset cadDrawingDataset = GetCadDataset(url, filename);
if (cadDrawingDataset == null) return;
ICadLayer cadLayer = new CadLayerClass();
cadLayer.CadDrawingDataset = cadDrawingDataset;
cadLayer.Name = filename;
this.mapControl.AddLayer(cadLayer,0);
}
//加载CAD图形函数
private ICadDrawingDataset GetCadDataset(string cadWorkspacePath, string cadFileName)
{
//Create a WorkspaceName object
IWorkspaceName workspaceName = new WorkspaceNameClass();
workspaceName.WorkspaceFactoryProgID = "esriDataSourcesFile.CadWorkspaceFactory";
workspaceName.PathName = cadWorkspacePath;
//Create a CadDrawingName object
IDatasetName cadDatasetName = new CadDrawingNameClass();
cadDatasetName.Name = cadFileName;
cadDatasetName.WorkspaceName = workspaceName;
//Open the CAD drawing
IName name = (IName) cadDatasetName;
return (ICadDrawingDataset) name.Open();
}
private void layer_shp(string url,string filename)
{
IWorkspaceFactory pWorkspaceFactory = null;
pWorkspaceFactory = new ShapefileWorkspaceFactoryClass();
IWorkspace ws = null;
ws = pWorkspaceFactory.OpenFromFile(url,0);
IFeatureWorkspace pFeatureWorkspace;
pFeatureWorkspace=(IFeatureWorkspace)ws;
IFeatureClass pFeatureClass=null;
pFeatureClass=pFeatureWorkspace.OpenFeatureClass(filename);
IFeatureLayer pFeatureLayer = new FeatureLayerClass();
pFeatureLayer.FeatureClass = pFeatureClass;
pFeatureLayer.Name=pFeatureLayer.FeatureClass.AliasName;
this.mapControl.AddLayer(pFeatureLayer,0);
}
private void layer_sid(string url,string filename)
{
IRasterLayer prasterlayer = new RasterLayerClass();
prasterlayer.CreateFromFilePath(url+filename);
this.mapControl.AddLayer(prasterlayer,0);
}
private void layer_sde(string url,string filename)
{
DataList aaa = new DataList(this.mapControl,null);
aaa.url = url;
aaa.filename = filename;
aaa.conn = "SDE";
aaa.Show();
}
private void layer_mdb(string url,string filename)
{
DataList aaa = new DataList(this.mapControl,null);
aaa.url = url;
aaa.filename = filename;
aaa.conn = "MDB";
aaa.Show();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -