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

📄 datalist.cs

📁 ArcSDE的要素集的添加
💻 CS
📖 第 1 页 / 共 2 页
字号:
			try
			{
				
				IDataset pDataset = pDatasets.Next();
				while(pDataset!=null)
				{
					try
					{
						switch(pDataset.Type)
						{

							case esriDatasetType.esriDTFeatureClass:
							{
								IFeatureWorkspace pFeatureWorkspace;
								pFeatureWorkspace=(IFeatureWorkspace)ws;

								IFeatureClass pFeatureClass=null;
								pFeatureClass=pFeatureWorkspace.OpenFeatureClass(pDataset.BrowseName);	

								ListViewItem item1 = new ListViewItem(pDataset.BrowseName);
								item1.SubItems.Add("要素类");
								switch(pFeatureClass.ShapeType)
								{
									case esriGeometryType.esriGeometryPoint:
										item1.ImageIndex = 1;
										break;
									case esriGeometryType.esriGeometryPolyline:
										item1.ImageIndex = 2;
										break;
									case esriGeometryType.esriGeometryPolygon:
										item1.ImageIndex = 3;
										break;
								}
								this.listView1.Items.Add(item1);
							}
								break;
							case esriDatasetType.esriDTFeatureDataset:
							{
								ListViewItem item2 = new ListViewItem(pDataset.BrowseName);
								item2.SubItems.Add("要素集");
                                item2.ImageIndex = 0;
								this.listView1.Items.Add(item2);
							}
								break;
							case esriDatasetType.esriDTRasterDataset:
							{
								ListViewItem item2 = new ListViewItem(pDataset.BrowseName);
								item2.SubItems.Add("栅格数据");
								item2.ImageIndex = 9;
								this.listView1.Items.Add(item2);
							}
								break;
							
						}
					}
					catch(Exception myerr)
					{
						MessageBox.Show(myerr.Message);
					}
					pDataset = pDatasets.Next();
				}
			}
			catch(Exception myerr)
			{
				MessageBox.Show(myerr.Message);
			}
		}

		private void toolBar1_ButtonClick(object sender, System.Windows.Forms.ToolBarButtonClickEventArgs e)
		{
			ToolBarButton btn = e.Button;
			if(btn.ToolTipText=="上一级")
			{
				if(Datasets.Count>1)
				{
					this.listView1.Items.Clear();
                    Datasets.RemoveAt(Datasets.Count-1);
					IEnumDataset Dataset_now = (IEnumDataset)Datasets[Datasets.Count-1];
					Dataset_now.Reset();
					GetDataList(Dataset_now);
				}
			}
			if(btn.ToolTipText=="图标")
			{
				this.listView1.View = View.LargeIcon;
			}
			if(btn.ToolTipText=="列表")
			{
				this.listView1.View = View.List;
			}
			if(btn.ToolTipText=="详细资料")
			{
				this.listView1.View = View.Details;
			}
		}

		private void listView1_SelectedIndexChanged(object sender, System.EventArgs e)
		{
		
		}

		private void listView1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
		{
			if(e.Clicks==2)
			{
				ListViewItem lItem = this.listView1.GetItemAt(e.X,e.Y);
				if(lItem!=null)
				{
					if(lItem.SubItems[1].Text=="要素集")
					{
						//获取这个要素集并列举该要素集中的数据
						IEnumDataset Dataset_now = (IEnumDataset)Datasets[Datasets.Count-1];
						//MessageBox.Show(Datasets.Count.ToString());
						Dataset_now.Reset();
						IDataset pDataset = Dataset_now.Next();
						while(pDataset!=null)
						{
							try
							{
								if(pDataset.BrowseName==lItem.Text)
								{
									this.listView1.Items.Clear();
									pDataset_ = pDataset;
									GetDataList(pDataset.Subsets);
									Datasets.Add(pDataset.Subsets);
									break;
								}

							}
							catch(Exception myerr)
							{
								MessageBox.Show(myerr.Message);
							}
							pDataset = Dataset_now.Next();
						}

					}
					else if(lItem.SubItems[1].Text=="要素类")
					{
						//加载图层
						if(this.Datasets.Count==1)
						{
							//直接加载数据
							IFeatureWorkspace pFeatureWorkspace = (IFeatureWorkspace)ws;
							IFeatureClass pFeatureClass=null;
							pFeatureClass=pFeatureWorkspace.OpenFeatureClass(lItem.Text);
							IFeatureLayer pFeatureLayer = new FeatureLayerClass();
							pFeatureLayer.FeatureClass = pFeatureClass;

							pFeatureLayer.Name=pFeatureLayer.FeatureClass.AliasName;
							if(this.mapControl!=null)
							    this.mapControl.AddLayer(pFeatureLayer,0);
							this.Close();
						}
						else
						{
							//加载数据集中的数据
							IFeatureClassContainer pFCC = (IFeatureClassContainer)pDataset_;
							IFeatureClass pFeatureClass = pFCC.get_ClassByName(lItem.Text);
							IFeatureLayer pFeatureLayer = new FeatureLayerClass();
							pFeatureLayer.FeatureClass = pFeatureClass;

							pFeatureLayer.Name=pFeatureLayer.FeatureClass.AliasName;
							if(this.mapControl!=null)
							    this.mapControl.AddLayer(pFeatureLayer,0);
							this.Close();
						}
					}
					else if(lItem.SubItems[1].Text=="栅格数据")
					{
						//加载图层
						if(this.Datasets.Count==1)
						{
							//直接加载数据
							IRasterWorkspaceEx pWs = (IRasterWorkspaceEx)ws;
							IRasterDataset pRasterDataset = null;
							pRasterDataset = pWs.OpenRasterDataset(lItem.Text);

							IRasterLayer prasterlayer = new RasterLayerClass();
							prasterlayer.CreateFromDataset(pRasterDataset);
                            if(this.mapControl!=null)
							    this.mapControl.AddLayer(prasterlayer,0);
							this.Close();
						}
						else
						{
							//不能加载栅格数据集
						}
					}
				}
			}
		}

		private void button5_Click(object sender, System.EventArgs e)
		{
			for(int i=0;i<this.listView1.SelectedItems.Count;i++)
			{
				ListViewItem lItem = listView1.SelectedItems[i];
				if(lItem!=null)
				{
					if(lItem.SubItems[1].Text=="要素集")
					{
						//获取这个要素集并列举该要素集中的数据
						IEnumDataset Dataset_now = (IEnumDataset)Datasets[Datasets.Count-1];
						//MessageBox.Show(Datasets.Count.ToString());
						Dataset_now.Reset();
						IDataset pDataset = Dataset_now.Next();
						while(pDataset!=null)
						{
							try
							{
								if(pDataset.BrowseName==lItem.Text)
								{
									this.listView1.Items.Clear();
									pDataset_ = pDataset;
									GetDataList(pDataset.Subsets);
									Datasets.Add(pDataset.Subsets);
									break;
								}

							}
							catch(Exception myerr)
							{
								MessageBox.Show(myerr.Message);
							}
							pDataset = Dataset_now.Next();
						}
						break;

					}
					else if(lItem.SubItems[1].Text=="要素类")
					{
						//加载图层
						if(this.Datasets.Count==1)
						{
							//直接加载数据
							IFeatureWorkspace pFeatureWorkspace = (IFeatureWorkspace)ws;
							IFeatureClass pFeatureClass=null;
							pFeatureClass=pFeatureWorkspace.OpenFeatureClass(lItem.Text);
							IFeatureLayer pFeatureLayer = new FeatureLayerClass();
							pFeatureLayer.FeatureClass = pFeatureClass;

							pFeatureLayer.Name=pFeatureLayer.FeatureClass.AliasName;
							if(this.mapControl!=null)
							    this.mapControl.AddLayer(pFeatureLayer,0);
							this.Close();
						}
						else
						{
							//加载数据集中的数据
							IFeatureClassContainer pFCC = (IFeatureClassContainer)pDataset_;
							IFeatureClass pFeatureClass = pFCC.get_ClassByName(lItem.Text);
							IFeatureLayer pFeatureLayer = new FeatureLayerClass();
							pFeatureLayer.FeatureClass = pFeatureClass;

							pFeatureLayer.Name=pFeatureLayer.FeatureClass.AliasName;
							if(this.mapControl!=null)
							    this.mapControl.AddLayer(pFeatureLayer,0);
							this.Close();
						}
					}

					else if(lItem.SubItems[1].Text=="栅格数据")
					{
						//加载图层
						if(this.Datasets.Count==1)
						{
							//直接加载数据
							IRasterWorkspaceEx pWs = (IRasterWorkspaceEx)ws;
							IRasterDataset pRasterDataset = null;
							pRasterDataset = pWs.OpenRasterDataset(lItem.Text);

							IRasterLayer prasterlayer = new RasterLayerClass();
							prasterlayer.CreateFromDataset(pRasterDataset);
                            if(this.mapControl!=null)
							    this.mapControl.AddLayer(prasterlayer,0);
							this.Close();
						}
						else
						{
							//不能加载数据集中的栅格数据
						}
					}
				}
			}
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -