private void button5_Click(object sender, EventArgs e) { axMapControl1.Map.ClearLayers(); string _pInstance = "sde:oracle11g:172.31.2.90/orcl"; string _pUser = "******"; string _pPassword = "******"; string _pVersion = "sde.DEFAULT"; IWorkspace pWS = null; pWS = GetSDEWorkspace(_pInstance, _pUser, _pPassword, _pVersion) as IWorkspace; try { IEnumDatasetName pEDatasetNames = pWS.get_DatasetNames(esriDatasetType.esriDTAny); IDatasetName pDatasetName = pEDatasetNames.Next(); while (pDatasetName != null) { string name = pDatasetName.Name; if (pDatasetName.Name.Equals("CSTEST.QDTEST")) { if (pDatasetName.Type.Equals(esriDatasetType.esriDTFeatureDataset)) { IFeatureWorkspace pFeatureWorkspace = (IFeatureWorkspace)pWS; IFeatureDataset pFeatureDataset = pFeatureWorkspace.OpenFeatureDataset("CSTEST.QDTEST"); IEnumDataset pEnumDataset = pFeatureDataset.Subsets; pEnumDataset.Reset(); IDataset pDataset = pEnumDataset.Next(); comboBox1.Items.Clear(); while (pDataset != null) { if (pDataset.Type == esriDatasetType.esriDTFeatureClass) { comboBox1.Items.Add(pDataset.Name); if (pDataset is IFeatureClass) { IFeatureLayer pFeatureLayer = new FeatureLayerClass(); pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass(pDataset.Name); pFeatureLayer.Name = pFeatureLayer.FeatureClass.AliasName; axMapControl1.Map.AddLayer(pFeatureLayer); } } pDataset = pEnumDataset.Next(); } comboBox1.Text = comboBox1.Items[0].ToString(); } } pDatasetName = pEDatasetNames.Next(); } } catch (Exception ex) { MessageBox.Show(ex.StackTrace); } }
/* private void FeatureLayer(object featureClass) * { * object[] dataName = GetData(); * * IFeatureClass pFeatureClass = featureClass as IFeatureClass; * // IFeatureLayer pFeaturelayer; * // pFeaturelayer = new FeatureLayerClass(); * // pFeaturelayer.FeatureClass = pFeatureClass; * // pFeaturelayer.Name = pFeaturelayer.FeatureClass.AliasName; * m_pFeaturelayer.FeatureClass = pFeatureClass; * }*/ /// <summary> /// 加载Dataset /// </summary> /// <param name="fileFullPath"></param> /// <param name="dsName"></param> private void AddDataset(object dataSet, IMap pMap) { //获取FeatureDataset IFeatureDataset pFeatureDataset = (IFeatureDataset)dataSet; IWorkspace pWorkspace = pFeatureDataset.Workspace; IFeatureWorkspace pFeatureWorkspace; IFeatureLayer pFeatureLayer; pFeatureWorkspace = pWorkspace as IFeatureWorkspace; IEnumDataset pEnDS = pFeatureDataset.Subsets; pEnDS.Reset(); //遍历Dataset IDataset pDS = pEnDS.Next(); while (pDS is IFeatureClass) { pFeatureLayer = new FeatureLayerClass(); pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass(pDS.Name); pFeatureLayer.Name = pFeatureLayer.FeatureClass.AliasName; m_pFeaturelayer = pFeatureLayer; pMap.AddLayer(pFeatureLayer);//加载Dataset中的FeatureClass pDS = pEnDS.Next(); } m_pActiveView.Refresh();//刷新 }
//#######################以下函数可配合使用######################## //**************************Load Raster Begin**************************** //函数编号:RasterLoad-01 //函数名:DirToMosaic //函数功能:把文件夹中的Raster文件合并到新的Raster文件中去 //参数:sDir:栅格文件夹 // pDataset:最后合并的RasterDataset //备注:pDataset可以使Geodataset中的参数,如果不存在利用函数创建 public void DirToMosaic(string sDir, IRasterDataset pDataset) { //load all raster datasets in the input directory to the raster dataset //the geodatabase raster dataset has to exist, //if not create it first with proper storage parameters. IWorkspaceFactory pWsFact = new RasterWorkspaceFactoryClass();; IWorkspace pFileWs = pWsFact.OpenFromFile(sDir, 0); IRasterDatasetEdit pSDEDs = pDataset as IRasterDatasetEdit; IRasterDataset2 pRasterDs; // load raster datasets from the dir IEnumDataset pEunmDatasets = pFileWs.get_Datasets(esriDatasetType.esriDTRasterDataset); pEunmDatasets.Reset(); pRasterDs = pEunmDatasets.Next() as IRasterDataset2; while (!(pRasterDs == null)) { //!!!pRasterDs.CompleteName; pSDEDs.Mosaic(pRasterDs.CreateFullRaster(), 0.5); //!!!注意IRasterDataset2::CreateFullRaster()方法可以简单实现从RasterDataset到Raster的转换 pRasterDs = pEunmDatasets.Next() as IRasterDataset2; } //cleanup pEunmDatasets = null; pRasterDs = null; pWsFact = null; pSDEDs = null; pFileWs = null; }
private void chkRelateFeatureClass_CheckedChanged(object sender, EventArgs e) { this.cboRelateFC.Visible = this.chkRelateFeatureClass.Checked; this.cboRelateFC.Enabled = true; ObjectClassHelper.m_pObjectClassHelper.IsRelatedFeature = this.chkRelateFeatureClass.Checked; if (this.chkRelateFeatureClass.Checked && (this.cboRelateFC.Properties.Items.Count == 0)) { IEnumDataset subsets = (ObjectClassHelper.m_pObjectClassHelper.Workspace as IDataset).Subsets; subsets.Reset(); for (IDataset dataset2 = subsets.Next(); dataset2 != null; dataset2 = subsets.Next()) { if (dataset2.Type == esriDatasetType.esriDTFeatureClass) { this.cboRelateFC.Properties.Items.Add(new DatasetWrap(dataset2)); } else if (dataset2.Type == esriDatasetType.esriDTFeatureDataset) { IEnumDataset dataset3 = dataset2.Subsets; dataset3.Reset(); for (IDataset dataset4 = dataset3.Next(); dataset4 != null; dataset4 = dataset3.Next()) { this.cboRelateFC.Properties.Items.Add(new DatasetWrap(dataset4)); } } } if (this.cboRelateFC.Properties.Items.Count > 0) { this.cboRelateFC.SelectedIndex = 0; } } }
private void method_0(IList ilist_0, IWorkspace iworkspace_0) { IEnumDataset dataset = iworkspace_0.get_Datasets(esriDatasetType.esriDTAny); dataset.Reset(); for (IDataset dataset2 = dataset.Next(); dataset2 != null; dataset2 = dataset.Next()) { if (dataset2.Type == esriDatasetType.esriDTFeatureClass) { if ((dataset2 as IFeatureClass).FeatureType == esriFeatureType.esriFTSimple) { ilist_0.Add(new ObjectWrap(dataset2)); } } else if (dataset2.Type == esriDatasetType.esriDTFeatureDataset) { IEnumDataset subsets = dataset2.Subsets; subsets.Reset(); for (IDataset dataset4 = subsets.Next(); dataset4 != null; dataset4 = subsets.Next()) { if ((dataset4.Type == esriDatasetType.esriDTFeatureClass) && ((dataset4 as IFeatureClass).FeatureType == esriFeatureType.esriFTSimple)) { ilist_0.Add(new ObjectWrap(dataset4)); } } } } }
/// <summary> /// 打开数据库中FeatureClasss /// </summary> /// <param name="FileGdbName"></param> /// <param name="featureDataset"></param> /// <param name="featureclassname"></param> /// <returns></returns> public static IFeatureClass OpenFeatureClass(string FileGdbName, string featureDataset, string featureclassname) { IWorkspaceFactory pworkspF = new FileGDBWorkspaceFactoryClass(); IWorkspace workspace = pworkspF.OpenFromFile(FileGdbName, 0); IFeatureWorkspace featureWorkspace = workspace as IFeatureWorkspace; IFeatureClass featureClass = null; IFeatureDataset pFeatureDataset = featureWorkspace.OpenFeatureDataset(featureDataset); if (pFeatureDataset == null) { return(null); } IEnumDataset pEnumDataset = pFeatureDataset.Subsets; pEnumDataset.Reset(); IDataset dataset = pEnumDataset.Next(); while (dataset != null) { if (dataset.Name == featureclassname) { featureClass = dataset as IFeatureClass; break; } dataset = pEnumDataset.Next(); } return(featureClass); }
private void NewNetworkDatasetFeatureClassSetPropertyPage_Load(object sender, EventArgs e) { try { if (NewNetworkDatasetHelper.NewNetworkDataset.FeatureDataset.Subsets != null) { IEnumDataset subsets = NewNetworkDatasetHelper.NewNetworkDataset.FeatureDataset.Subsets; if (subsets != null) { subsets.Reset(); for (IDataset dataset2 = subsets.Next(); dataset2 != null; dataset2 = subsets.Next()) { if (((dataset2 is IFeatureClass) && ((dataset2 as IFeatureClass).FeatureType == esriFeatureType.esriFTSimple)) && (((dataset2 as IFeatureClass).ShapeType == esriGeometryType.esriGeometryPolyline) || ((dataset2 as IFeatureClass).ShapeType == esriGeometryType.esriGeometryPoint))) { NewNetworkDatasetHelper.FeatureClassWrap item = new NewNetworkDatasetHelper.FeatureClassWrap(dataset2 as IFeatureClass); NewNetworkDatasetHelper.NewNetworkDataset.FeatureClassWraps.Add(item); this.chkListUseFeatureClass.Items.Add(item, item.IsUse); } } } } } catch { } }
private void AddFeatureDatasetToTree(TreeNode parentNode, IFeatureDataset featDataset) { TreeNode featDSNode = parentNode.Nodes.Add(featDataset.Name); featDSNode.Tag = featDataset; featDSNode.ImageIndex = 9; featDSNode.SelectedImageIndex = 9; featDSNode.StateImageIndex = 0; IEnumDataset datasets = featDataset.Subsets; datasets.Reset(); IDataset dataset = datasets.Next(); while (dataset != null) { if (dataset is IFeatureClass) { AddFeatureClassToTree(featDSNode, dataset as IFeatureClass); } else if (dataset is IFeatureDataset) { AddFeatureDatasetToTree(featDSNode, dataset as IFeatureDataset); } dataset = datasets.Next(); } }
private void cmbLayer_SelectedIndexChanged(object sender, EventArgs e) { this.lblTips.Text = ""; Application.DoEvents(); if (this.cmbLayer.Text == "所有图层") { _CurFeatureClass = null; } else { string strCurName = this.cmbLayer.Text; IEnumDataset pEnumDs = _CurFeatureDataset.Subsets; pEnumDs.Reset(); IDataset pDs = pEnumDs.Next(); while (pDs != null) { IFeatureClass pFeatureClass = pDs as IFeatureClass; if (pFeatureClass.AliasName == strCurName) { _CurFeatureClass = pFeatureClass; break; } pDs = pEnumDs.Next(); } } InitContentGrid(); }
public List <IFeatureClass> getAllFeatClsFromGDB(IWorkspace workspace) { IFeatureWorkspace pFeatureWorkspace = workspace as IFeatureWorkspace; IEnumDataset pEnumDataset = workspace.get_Datasets(esriDatasetType.esriDTAny); //获取pworkspace目录下根目录的dataset pEnumDataset.Reset(); List <IFeatureClass> featClsList = new List <IFeatureClass>(); //获取dataset IDataset pDataset; while ((pDataset = pEnumDataset.Next()) != null) { if (pDataset is IFeatureDataset) { IEnumDataset enuemData = pDataset.Subsets; IDataset pDataset2; while ((pDataset2 = enuemData.Next()) != null) { IFeatureClass featCls = pDataset2 as IFeatureClass; featClsList.Add(featCls); } } else if (pDataset is IFeatureClass) { IFeatureClass pFC = pDataset as IFeatureClass; featClsList.Add(pFC); } } return(featClsList); }
/// <summary> /// 点重复出错检查 /// </summary> /// <param name="featureDataset"></param> public void DupointError(IFeatureDataset featureDataset, out Exception ex) { ex = null; try { if (featureDataset == null) { return; } IEnumDataset GetFeatureClass = featureDataset.Subsets;//得到集合里的类集合 GetFeatureClass.Reset(); IDataset TempSet = GetFeatureClass.Next(); while (TempSet != null) { if (TempSet is IFeatureClass) { IFeatureClass FeatureClass = TempSet as IFeatureClass; RePoint(FeatureClass);//重复点检查 } } } catch (Exception EX) { ex = EX; } }
//读取mdb数据 public List <ILayer> ReadLayerFromAccess(List <string> filePathList) { List <ILayer> layerList = new List <ILayer>(); if (filePathList.Count == 0) { return(null); } else { foreach (string path in filePathList) { IWorkspaceFactory pWorkspaceFactory = new AccessWorkspaceFactoryClass(); IWorkspace pWorkspace = pWorkspaceFactory.OpenFromFile(path, 0); IFeatureWorkspace pFeatureWorkspace = pWorkspace as IFeatureWorkspace; IEnumDataset pEnumDataset = pWorkspace.get_Datasets(esriDatasetType.esriDTFeatureClass) as IEnumDataset; pEnumDataset.Reset(); IDataset pDataset = pEnumDataset.Next(); while (pDataset is IFeatureClass) { IFeatureLayer pFeatureLayer = new FeatureLayerClass(); pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass(pDataset.Name); pFeatureLayer.Name = pDataset.Name; ILayer pLayer = pFeatureLayer as ILayer; layerList.Add(pFeatureLayer as ILayer); pDataset = pEnumDataset.Next(); } } return(layerList); } }
//3/10/2009 删除工作空间内的所有要素类 public static void DeleteAllFeatCls(IWorkspace pworkspace) { IEnumDataset pEnumFeatDataset = default(IEnumDataset); IDataset pDataset = default(IDataset); IFeatureDataset pFeatDataset = default(IFeatureDataset); pEnumFeatDataset = pworkspace.get_Datasets(esriDatasetType.esriDTAny); pEnumFeatDataset.Reset(); pDataset = pEnumFeatDataset.Next(); while ((pDataset != null)) { if (pDataset.CanDelete()) { if (pDataset.Type == esriDatasetType.esriDTFeatureDataset) { pFeatDataset = (IFeatureDataset)pDataset; pFeatDataset.Delete(); } else { pDataset.Delete(); } //pDataset.Delete() pDataset = pEnumFeatDataset.Next(); } } }
//通过IWokspace和图层名称获取图层 public static List <IFeatureClass> GetFeatureClass(IWorkspace pWorkspace, string DatasetName) { List <IFeatureClass> newlist = new List <IFeatureClass>(); if (pWorkspace == null || DatasetName == "") { return(newlist); } IEnumDataset pEnumDataset = pWorkspace.get_Datasets(esriDatasetType.esriDTFeatureDataset); pEnumDataset.Reset(); IFeatureDataset pFeaDataset = pEnumDataset.Next() as IFeatureDataset; while (pFeaDataset != null) { if (pFeaDataset.Name == DatasetName) { IFeatureClassContainer pFeatureClassContainer = pFeaDataset as IFeatureClassContainer; IEnumFeatureClass pEnumFeatureClass = pFeatureClassContainer.Classes; IFeatureClass pFeatureClass = pEnumFeatureClass.Next(); while (pFeatureClass != null) { newlist.Add(pFeatureClass); pFeatureClass = pEnumFeatureClass.Next(); } } pFeaDataset = pEnumDataset.Next() as IFeatureDataset; } return(newlist); }
private void ListDatasets() { tvDatasets.Nodes.Clear(); if (m_workspace == null) { return; } TreeNode rootNode = tvDatasets.Nodes.Add(System.IO.Path.GetFileNameWithoutExtension(m_workspace.PathName)); rootNode.ImageIndex = 27; rootNode.SelectedImageIndex = 27; rootNode.StateImageIndex = 0; IEnumDataset datasets = m_workspace.Datasets[esriDatasetType.esriDTAny]; datasets.Reset(); IDataset dataset = datasets.Next(); while (dataset != null) { if (dataset is IFeatureClass) { AddFeatureClassToTree(rootNode, dataset as IFeatureClass); } else if (dataset is IFeatureDataset) { AddFeatureDatasetToTree(rootNode, dataset as IFeatureDataset); } dataset = datasets.Next(); } tvDatasets.ExpandAll(); }
/// <summary> /// 获取数据集下的要素类 /// </summary> /// <param name="workspace">工作空间</param> /// <param name="featureDatasetName">数据集名称</param> /// <param name="featureClassName">要素类名称</param> /// <returns></returns> public static IFeatureClass GetFeatureClass(IWorkspace workspace, string featureDatasetName, string featureClassName) { IDataset dataset = (IDataset)workspace; IEnumDataset enumDataset = dataset.Subsets; enumDataset.Reset(); //get the datasets from enumerator IDataset datasetNext = enumDataset.Next(); //loop through the datasets while (datasetNext != null) { if (datasetNext.Name == featureDatasetName) { IEnumDataset enumDataset2 = datasetNext.Subsets; enumDataset2.Reset(); IDataset dataset3 = enumDataset2.Next(); while (dataset3 != null) { if (dataset3.Name == featureClassName) { return((IFeatureClass)dataset3); } dataset3 = enumDataset2.Next(); } } datasetNext = enumDataset.Next(); } return(null); }
private void testToolStripMenuItem_Click(object sender, EventArgs e) { //打开目标数据库 IWorkspaceFactory pAccessWorkspaceFactory; pAccessWorkspaceFactory = new AccessWorkspaceFactoryClass(); IWorkspace fWorkspace = pAccessWorkspaceFactory.OpenFromFile("E://2018年工作//数据验收平台测试//test.gdb", 0); IFeatureWorkspace fW = fWorkspace as IFeatureWorkspace; IEnumDataset penumDatasets = fWorkspace.get_Datasets(esriDatasetType.esriDTFeatureDataset); penumDatasets.Reset(); IDataset pesriDataset = penumDatasets.Next(); while (pesriDataset == null) { IFeatureClass pFeatureClass = fW.OpenFeatureClass("Ⅰ级保护林地范围"); } //启动编辑 IWorkspaceEdit workspaceEdit = (IWorkspaceEdit)fWorkspace; workspaceEdit.StartEditing(true); workspaceEdit.StartEditOperation(); //调用创建拓朴的方法 ITopology topology = Create_Topology(fW, "datset", "Ⅰ级保护林地范围", "Polygon_Topo"); //停止编辑 workspaceEdit.StopEditOperation(); workspaceEdit.StopEditing(true); if (topology != null) { MessageBox.Show("创建拓朴成功!"); } }
/// <summary> /// 判断工作空间中是否含有某个要素类 /// </summary> /// <param name="pW"></param> /// <param name="pFeatureClassName"></param> /// <returns></returns> private bool isExitFeatureClass(IWorkspace pW, string pFeatureClassName) { IEnumDataset o = pW.get_Datasets(esriDatasetType.esriDTAny); o.Reset(); for (IDataset dataset2 = o.Next(); dataset2 != null; dataset2 = o.Next()) { if (dataset2.Name == pFeatureClassName) { return(true); } IEnumDataset subsets = dataset2.Subsets; for (IDataset dataset4 = subsets.Next(); dataset4 != null; dataset4 = subsets.Next()) { IFeatureClass class2 = dataset4 as IFeatureClass; if (((class2 != null) && (class2.FeatureType != esriFeatureType.esriFTAnnotation)) && (class2.AliasName == pFeatureClassName)) { return(true); } } if (subsets != null) { Marshal.ReleaseComObject(subsets); } } if (o != null) { Marshal.ReleaseComObject(o); } return(false); }
//通过IWorkspace获取图层 public static IFeatureClass GetFeatureClass(IWorkspace pWorkspace, string LayerName, string DatasetName) { if (pWorkspace == null) { return(null); } IEnumDataset pEnumDataset = pWorkspace.get_Datasets(esriDatasetType.esriDTFeatureClass); pEnumDataset.Reset(); IDataset pDataset = pEnumDataset.Next(); while (pDataset != null) { if (pDataset.Name == LayerName) { return(pDataset as IFeatureClass); } pDataset = pEnumDataset.Next(); } pEnumDataset = pWorkspace.get_Datasets(esriDatasetType.esriDTFeatureDataset); pDataset = pEnumDataset.Next(); // IFeatureDataset pFeaDataset = pEnumDataset.Next() as IFeatureDataset; while (pDataset != null) { if (DatasetName == "") { IFeatureClassContainer pFeatureClassContainer = pDataset as IFeatureClassContainer; IEnumFeatureClass pEnumFeatureClass = pFeatureClassContainer.Classes; IFeatureClass pFeatureClass = pEnumFeatureClass.Next(); while (pFeatureClass != null) { if (pFeatureClass.AliasName.Contains(LayerName)) { return(pFeatureClass); } pFeatureClass = pEnumFeatureClass.Next(); } } else { if (pDataset.Name == DatasetName) { IFeatureClassContainer pFeatureClassContainer = pDataset as IFeatureClassContainer; IEnumFeatureClass pEnumFeatureClass = pFeatureClassContainer.Classes; IFeatureClass pFeatureClass = pEnumFeatureClass.Next(); while (pFeatureClass != null) { if (pFeatureClass.AliasName.Contains(LayerName)) { return(pFeatureClass); } pFeatureClass = pEnumFeatureClass.Next(); } } } pDataset = pEnumDataset.Next() as IFeatureDataset; } return(null); }
private void frmCreateTopologySet_Load(object sender, EventArgs e) { this.comboBox_0.Visible = false; this.listViewPri.Controls.Add(this.comboBox_0); this.comboBox_0.SelectedValueChanged += new EventHandler(this.comboBox_0_SelectedValueChanged); this.comboBox_0.LostFocus += new EventHandler(this.comboBox_0_LostFocus); this.int_1 = 1; ISpatialReference spatialReference = (this.m_pFeatDataset as IGeoDataset).SpatialReference; double xMin = -10000.0; double xMax = 11474.83645; double yMin = -10000.0; double yMax = 11474.83645; ((ISpatialReference2GEN)spatialReference).GetDomain(ref xMin, ref xMax, ref yMin, ref yMax); double num5 = xMax - xMin; double num6 = yMax - yMin; num5 = (num5 > num6) ? num5 : num6; this.txtLimiteValue.Text = ((num5 / 2147483645.0) * 2.0).ToString("0.#############"); int num8 = this.m_pFeatDataset.Name.LastIndexOf("."); this.txtTopologyName.Text = "topo_" + this.m_pFeatDataset.Name.Substring(num8 + 1); IEnumDataset subsets = this.m_pFeatDataset.Subsets; subsets.Reset(); IDataset unk = subsets.Next(); this.iarray_0.RemoveAll(); while (unk != null) { if ((unk.Type == esriDatasetType.esriDTFeatureClass) && ((unk as IFeatureClass).FeatureType == esriFeatureType.esriFTSimple)) { string browseName; if (unk is ITopologyClass) { if (!(unk as ITopologyClass).IsInTopology) { browseName = unk.BrowseName; this.chkListBoxFeatureClass.Items.Add(browseName); this.iarray_0.Add(unk); } } else { browseName = unk.BrowseName; this.chkListBoxFeatureClass.Items.Add(browseName); this.iarray_0.Add(unk); } } unk = subsets.Next(); } this.listRule.Columns.Add("要素类", 120, HorizontalAlignment.Left); this.listRule.Columns.Add("规则", 120, HorizontalAlignment.Left); this.listRule.Columns.Add("要素类", 120, HorizontalAlignment.Left); this.listViewPri.Columns.Add("要素类", 180, HorizontalAlignment.Left); this.listViewPri.Columns.Add("优先级", 180, HorizontalAlignment.Left); this.method_0(); }
/// <summary> /// 加载数据集 /// </summary> /// <param name="workspace">数据集所在工作空间</param> /// <param name="mapControl">要加载的地图控件</param> public void AddAllDataset(IWorkspace workspace, AxMapControl mapControl) { IEnumDataset enumDataset = workspace.get_Datasets(esriDatasetType.esriDTAny); enumDataset.Reset(); IDataset dataset; while ((dataset = enumDataset.Next()) != null) { if (dataset is IFeatureDataset) //要素数据集 { IFeatureWorkspace featureWorkspace = (IFeatureWorkspace)workspace; IFeatureDataset featureDataset = featureWorkspace.OpenFeatureDataset(dataset.Name); IEnumDataset enumDatasetSub = featureDataset.Subsets; enumDatasetSub.Reset(); IDataset datasetSub; while ((datasetSub = enumDatasetSub.Next()) != null) { if (datasetSub is FeatureClass) { IFeatureLayer featureLayer = new FeatureLayerClass(); featureLayer.FeatureClass = featureWorkspace.OpenFeatureClass(datasetSub.Name); if (featureLayer.FeatureClass != null) { featureLayer.Name = featureLayer.FeatureClass.AliasName; mapControl.AddLayer(featureLayer); } } } } else if (dataset is IFeatureClass) //要素类 { IFeatureWorkspace featureWorkspace = (IFeatureWorkspace)workspace; IFeatureClass featureClass = featureWorkspace.OpenFeatureClass(dataset.Name); IFeatureLayer featureLayer = new FeatureLayerClass(); featureLayer.FeatureClass = featureClass; featureLayer.Name = featureClass.AliasName; mapControl.AddLayer(featureLayer); } else if (dataset is IRasterDataset) //栅格数据集 { IRasterWorkspaceEx rasterWorkspace = (IRasterWorkspaceEx)workspace; IRasterDataset rasterDataset = rasterWorkspace.OpenRasterDataset(dataset.Name); IRasterPyramid3 rasPyramid = rasterDataset as IRasterPyramid3; if (rasPyramid != null) { if (!rasPyramid.Present) { rasPyramid.Create(); } } IRasterLayer rasterLayer = new RasterLayerClass(); rasterLayer.CreateFromDataset(rasterDataset); ILayer layer = rasterLayer as ILayer; mapControl.AddLayer(layer, 0); } } mapControl.ActiveView.Refresh(); }
public DataTable GetFeaturesStatDt() { DataTable result = GenerateDataTable(); IFeatureDataset pDataset = null; IFeatureClassContainer pFeatClsContainer = null; IFeatureClass pFeatureCls = null; try { //List<StandardLayer> layers = LayerReader.GetLayersByStandard(m_StandardID); //获取标准的图层列表 if (m_Workspace == null) { return(result); } IEnumDataset enumDataset = m_Workspace.get_Datasets(esriDatasetType.esriDTFeatureDataset); enumDataset.Reset(); IFeatureDataset subDataset = enumDataset.Next() as IFeatureDataset; while (subDataset != null) { pFeatClsContainer = subDataset as IFeatureClassContainer; int iCount = 0; DataRow dr = null; for (int i = 0; i < pFeatClsContainer.ClassCount; i++) { pFeatureCls = pFeatClsContainer.get_Class(i); string featClsName = (pFeatureCls as IDataset).Name; iCount = pFeatureCls.FeatureCount(null); dr = result.NewRow(); dr[0] = featClsName; dr[1] = pFeatureCls.AliasName; dr[2] = iCount; result.Rows.Add(dr); Marshal.ReleaseComObject(pFeatureCls); } subDataset = enumDataset.Next() as IFeatureDataset; } } catch (Exception ex) { //MessageBox.Show("获取要素个数失败!原因:" + ex.Message, "警告"); return(result); } finally { if (pFeatureCls != null) { Marshal.ReleaseComObject(pFeatureCls); } if (pDataset != null) { Marshal.ReleaseComObject(pDataset); } } return(result); }
public static Dictionary <string, IFeatureClass> ReadCoverage(IWorkspace pWorkspace) { Dictionary <string, IFeatureClass> dictionary = new Dictionary <string, IFeatureClass>(); try { IEnumDataset enumDataset = pWorkspace.get_Datasets(esriDatasetType.esriDTFeatureDataset); try { enumDataset.Reset(); IDataset dataset; while ((dataset = enumDataset.Next()) != null) { string sPrefix = dataset.Name + "_"; IEnumDataset subsets = dataset.Subsets; try { subsets.Reset(); IDataset dataset2; while ((dataset2 = subsets.Next()) != null) { IFeatureClass featureClass = dataset2 as IFeatureClass; if (featureClass != null) { string covOrCadFCName = ControlAPI.GetCovOrCadFCName(sPrefix, dataset2.Name); if (!(covOrCadFCName == "")) { dictionary.Add(covOrCadFCName, featureClass); } } } } finally { if (subsets != null) { Marshal.ReleaseComObject(subsets); } } } } finally { if (enumDataset != null) { Marshal.ReleaseComObject(enumDataset); } } } finally { if (pWorkspace != null) { Marshal.ReleaseComObject(pWorkspace); } } return(dictionary); }
/// <summary> /// ÅжÏÊÇ·ñ´æÔÚ×ÅÏàÓ¦±ÈÀû³ßµÄͼ¸± /// </summary> /// <param name="MapPath">ͼ¸±Â·¾¶</param> /// <param name="StrScale">±ÈÀý³ß</param> /// <returns></returns> private string GetMapFrameName(string MapPath, string StrScale, out Exception eError) { eError = null; IWorkspaceFactory pWorkSpaceFactory = new AccessWorkspaceFactoryClass(); IWorkspace pWorkSpace = null; IEnumDataset pEnumDataSet = null; IDataset pDataSet = null; IFeatureDataset pFeatureDataSet = null; IEnumDataset pEnumFC = null; IDataset pFC = null; string LayerName = ""; string MapFrameName = ""; if (MapPath != "") { pWorkSpace = pWorkSpaceFactory.OpenFromFile(MapPath, 0); pEnumDataSet = pWorkSpace.get_Datasets(esriDatasetType.esriDTFeatureClass); pEnumDataSet.Reset(); pDataSet = pEnumDataSet.Next(); while (pDataSet != null) { if (pDataSet is IFeatureClass) { LayerName = pDataSet.Name; if (LayerName.Contains(StrScale)) { MapFrameName = LayerName; } } else if (pDataSet is IFeatureDataset) { pFeatureDataSet = pDataSet as IFeatureDataset; pEnumFC = pFeatureDataSet.Subsets; pEnumFC.Reset(); pFC = pEnumFC.Next(); while (pFC != null) { LayerName = pFC.Name; if (LayerName.Contains(StrScale)) { MapFrameName = LayerName; } } } else { MapFrameName = ""; } pDataSet = pEnumDataSet.Next(); } if (MapFrameName == "") { eError = new Exception("δÕÒµ½±ÈÀý³ßΪ'" + StrScale + "'µÄ·¶Î§Êý¾Ý£¬Çë¼ì²é£¡"); return(""); } } return(MapFrameName); }
private void btn_read_Click(object sender, EventArgs e) { // Считываю слои из базы и заполняю CheckBoxList clb1.Items.Clear(); IFeatureClass myFeatureClass = null; IWorkspaceFactory workspaceFactory = new FileGDBWorkspaceFactory(); IWorkspace workspace = workspaceFactory.OpenFromFile(txtb1.Text, 0); IFeatureWorkspace iworkspace = (IFeatureWorkspace)workspace; IEnumDataset enumDataset = workspace.get_Datasets(esriDatasetType.esriDTAny); enumDataset.Reset(); List <string> datasets = new List <string>(); IDataset dataset = null; while ((dataset = enumDataset.Next()) != null) { if (dataset.Type == esriDatasetType.esriDTFeatureClass) { clb1.Items.Add(dataset.Name); } if (dataset.Type == esriDatasetType.esriDTFeatureDataset) { datasets.Add(dataset.Name); } //Проходим по датасетам если они есть foreach (string el in datasets) { string datasetsroot = txtb1.Text + @"\" + el; IFeatureDataset mydataset = iworkspace.OpenFeatureDataset(el); IEnumDataset enumDataset1 = mydataset.Subsets; IDataset dataset1 = null; while ((dataset1 = enumDataset1.Next()) != null) { clb1.Items.Add(dataset1.Name); } } } // Считываю все поля из всех слоев clb2.Items.Clear(); List <string> bn = new List <string>(); foreach (object item in clb1.Items) { myFeatureClass = iworkspace.OpenFeatureClass(item.ToString()); for (int j = 0; j < myFeatureClass.Fields.FieldCount; j++) { bn.Add(myFeatureClass.Fields.get_Field(j).Name); } } string[] bnn = bn.Distinct().ToArray(); foreach (string f in bnn) { clb2.Items.Add(f); } }
private void LoadDataset() { IWorkspaceFactory pAccessWorkspaceFactory; string pFullPath = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "\\data\\教室数据\\classroom.mdb"; pAccessWorkspaceFactory = new AccessWorkspaceFactory(); //using ESRI.ArcGIS.DataSourcesGDB; //获取工作空间 IWorkspace pWorkspace = pAccessWorkspaceFactory.OpenFromFile(pFullPath, 0); IEnumDataset pEnumDataset = pWorkspace.get_Datasets(ESRI.ArcGIS.Geodatabase.esriDatasetType.esriDTAny); pEnumDataset.Reset(); //将Enum数据集中的数据一个个读到DataSet中 IDataset pDataset = pEnumDataset.Next(); //使用IQueryDef接口的对象来定义和查询属性信息。通过IWorkspace接口的CreateQueryDef()方法创建该对象。 IQueryDef queryDef = ((IFeatureWorkspace)pDataset.Workspace).CreateQueryDef(); //设置所需查询的表格名称为dataset的名称 queryDef.Tables = pDataset.Name; string que = null; //返回所有值 queryDef.WhereClause = que; //执行查询并返回ICursor接口的对象来访问整个结果的集合 ICursor cursor = queryDef.Evaluate(); IRow row = cursor.NextRow(); dt.Columns.Add(new DataColumn("学部", typeof(string))); //在表中添加int类型的列 dt.Columns.Add(new DataColumn("教室", typeof(string))); //在表中添加string类型的Name列 dt.Columns.Add(new DataColumn("教学楼", typeof(string))); //在表中添加string类型的Name列 dt.Columns.Add(new DataColumn("人数", typeof(string))); //在表中添加string类型的Name列 dt.Columns.Add(new DataColumn("语音多媒体", typeof(string))); //在表中添加string类型的Name列 dt.Columns.Add(new DataColumn("周次", typeof(string))); //在表中添加string类型的Name列 dt.Columns.Add(new DataColumn("日期", typeof(string))); //在表中添加string类型的Name列 dt.Columns.Add(new DataColumn("1-2", typeof(string))); //在表中添加string类型的Name列 dt.Columns.Add(new DataColumn("3-4", typeof(string))); //在表中添加string类型的Name列 dt.Columns.Add(new DataColumn("3-5", typeof(string))); //在表中添加string类型的Name列 dt.Columns.Add(new DataColumn("6-7", typeof(string))); //在表中添加string类型的Name列 dt.Columns.Add(new DataColumn("8-9", typeof(string))); //在表中添加string类型的Name列 dt.Columns.Add(new DataColumn("8-10", typeof(string))); //在表中添加string类型的Name列 dt.Columns.Add(new DataColumn("11-13", typeof(string))); //在表中添加string类型的Name列 while (row != null) { DataRow dr1 = dt.NewRow(); for (int i = 1; i < 15; i++) { dr1[i - 1] = row.get_Value(i).ToString(); } dt.Rows.Add(dr1); row = cursor.NextRow(); } dataGridView_classquery1.DataSource = dt; dataGridView_classquery2.DataSource = dt; }
private void 现势性检查ToolStripMenuItem_Click(object sender, EventArgs e) { IWorkspaceFactory pFileGDBWorkspaceFactory; pFileGDBWorkspaceFactory = new FileGDBWorkspaceFactoryClass(); IWorkspace pWorkspace = pFileGDBWorkspaceFactory.OpenFromFile(Path, 0); IEnumDataset pEnumDataset = pWorkspace.get_Datasets(ESRI.ArcGIS.Geodatabase.esriDatasetType.esriDTAny); pEnumDataset.Reset(); IDataset pDataset = pEnumDataset.Next(); DataTable SpatialRefTable = new DataTable(); SpatialRefTable.Columns.Add(new DataColumn("影像名称", typeof(string))); SpatialRefTable.Columns.Add(new DataColumn("影像拍摄时间", typeof(string))); SpatialRefTable.Columns.Add(new DataColumn("时间现势性检查", typeof(string))); //判断数据集是否有数据 while (pDataset != null) { if (pDataset is IRasterDataset) //栅格数据集 { IRasterWorkspaceEx pRasterWorkspace = (IRasterWorkspaceEx)pWorkspace; IRasterDataset pRasterDataset = pRasterWorkspace.OpenRasterDataset(pDataset.Name); //影像金字塔判断与创建 ISpatialReference pSpatialRef = (pRasterDataset as IGeoDataset).SpatialReference; string spatialref = pSpatialRef.Name.ToString(); string rastername = pDataset.Name.ToString(); string[] strArray = rastername.Split('_'); DataRow dr = SpatialRefTable.NewRow(); dr["影像名称"] = pDataset.Name.ToString(); dr["影像拍摄时间"] = strArray[1].Substring(0, 8); IRasterLayer pRasterLayer = new RasterLayerClass(); pRasterLayer.CreateFromDataset(pRasterDataset); if (int.Parse(strArray[1].Substring(0, 8)) < 20170000 && int.Parse(strArray[1].Substring(0, 8)) > 20120000) { dr["时间现势性检查"] = "√"; } else { dr["时间现势性检查"] = "×"; } SpatialRefTable.Rows.Add(dr); } pDataset = pEnumDataset.Next(); } // ExportExcel(SpatialRefTable); //弹出显示框 TimeCheck tc = new TimeCheck(); tc.Text = "影像质量检查"; tc.dataGridView1.DataSource = SpatialRefTable; tc.dataGridView1.Columns[1].Width = 200; tc.dataGridView1.Columns[2].Width = 300; tc.Show(); }
private void BulidGeometryNetwork_SelectFeatureClass_Load(object sender, EventArgs e) { string[] strArray = BulidGeometryNetworkHelper.BulidGNHelper.FeatureDataset.Name.Split(new char[] { '.' }); string str = strArray[strArray.Length - 1]; BulidGeometryNetworkHelper.BulidGNHelper.Name = str + "_Net"; if (BulidGeometryNetworkHelper.BulidGNHelper.IsEmpty) { this.panelEmpty.Visible = true; this.panelNotEmpty.Visible = false; this.txtGNName1.Text = str + "_Net"; } else { this.panelEmpty.Visible = false; this.panelNotEmpty.Visible = true; if (BulidGeometryNetworkHelper.BulidGNHelper.FeatureDataset.Subsets != null) { this.txtGNName.Text = str + "_Net"; IEnumDataset subsets = BulidGeometryNetworkHelper.BulidGNHelper.FeatureDataset.Subsets; if (subsets != null) { subsets.Reset(); for (IDataset dataset2 = subsets.Next(); dataset2 != null; dataset2 = subsets.Next()) { if (((dataset2 is IFeatureClass) && ((dataset2 as IFeatureClass).FeatureType == esriFeatureType.esriFTSimple)) && (((dataset2 as IFeatureClass).ShapeType == esriGeometryType.esriGeometryPolyline) || ((dataset2 as IFeatureClass).ShapeType == esriGeometryType.esriGeometryPoint))) { BulidGeometryNetworkHelper.FeatureClassWrap wrap; int index = (dataset2 as IFeatureClass).Fields.FindField("Enabled"); if (index != -1) { IField field = (dataset2 as IFeatureClass).Fields.get_Field(index); if ((field.Type == esriFieldType.esriFieldTypeSmallInteger) || (field.Type == esriFieldType.esriFieldTypeInteger)) { wrap = new BulidGeometryNetworkHelper.FeatureClassWrap(dataset2 as IFeatureClass); BulidGeometryNetworkHelper.BulidGNHelper.FeatureClassWraps.Add(wrap); this.chkListUseFeatureClass.Items.Add(wrap, wrap.IsUse); } } else { wrap = new BulidGeometryNetworkHelper.FeatureClassWrap(dataset2 as IFeatureClass); BulidGeometryNetworkHelper.BulidGNHelper.FeatureClassWraps.Add(wrap); this.chkListUseFeatureClass.Items.Add(wrap, wrap.IsUse); } } } } } } }
private IFeatureClass SearchMatchedFeatClsForBase(IWorkspace workspace, string subFeatureName, XmlDocument xmlDoc) { try { IFeatureWorkspace featWorkspace = workspace as IFeatureWorkspace; IFeatureClass featureClass = null; string fileName = ""; XmlNode xmlNode = xmlDoc.SelectSingleNode("/Root/BASEDATA"); XmlNodeList nodeList = xmlNode.ChildNodes; foreach (XmlNode node in nodeList) { string text = node.Attributes["TEXT"].Value.ToString(); if (text == subFeatureName) { fileName = node.Attributes["NAME"].Value.ToString(); break; } } if (fileName == "") { MessageBox.Show("数据库中没有找到对应待更新图层名,请从新配置源图层文件!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); return(null); } XmlNode root = xmlDoc.DocumentElement; string user = root.Attributes["USER"].Value.ToString(); string sdefileName = user + "." + fileName; XmlNode xmlDataset = xmlDoc.SelectSingleNode("/Root/BASEDATA/FeatureDataset[@TEXT='基础库']"); string datasetName = xmlDataset.Attributes["NAME"].Value.ToString(); IFeatureDataset featureDataset = featWorkspace.OpenFeatureDataset(datasetName); IEnumDataset enumDataset = featureDataset.Subsets; enumDataset.Reset(); IDataset dataset = enumDataset.Next(); while (dataset != null) { if (dataset.Type == esriDatasetType.esriDTFeatureClass) { if (dataset.Name == sdefileName) { featureClass = dataset as IFeatureClass; return(featureClass); } } dataset = enumDataset.Next(); } return(null); } catch (Exception) { throw; } }
/// <summary> /// Open a Feature Class from DatasetName, FeatureClass name /// Assumes the Workspace has been proeviously set /// </summary> public IFeatureClass GetFeatureClassByName(string featureDatasetName, string featureClassName) { IFeatureClass foundFeatureClass = null; if (!initialized) { return(null); } try { if (Workspace == null) { return(null); } if (featureDatasetName == "None") // Don't need to look in Datasets, it is at top-level { foundFeatureClass = Workspace.OpenFeatureClass(featureClassName); } else { IFeatureDataset inputFeatureDataset = Workspace.OpenFeatureDataset(featureDatasetName); if (inputFeatureDataset == null) { return(null); } IEnumDataset eds = inputFeatureDataset.Subsets; eds.Reset(); IDataset ds; while ((ds = eds.Next()) != null) { if (ds.Name == featureClassName) { IFeatureClass inputFeatureClass = ds as IFeatureClass; if (inputFeatureClass != null) { foundFeatureClass = inputFeatureClass; break; } } } } } catch (Exception ex) { Console.WriteLine(ex); } return(foundFeatureClass); }