⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adddata.cs

📁 ArcSDE的要素集的添加
💻 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 + -