123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
-
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using ESRI.ArcGIS.Carto;
- using ESRI.ArcGIS.Geodatabase;
- namespace GNetworkProcessTool
- {
- public class DataOperateHelper
- {
-
-
-
-
-
- public static void GetWorkspaceFromGDBFile(string strGdbFilePath, out IFeatureWorkspace pFeatureWorkspace)
- {
- IWorkspaceFactory pWorkspaceFactory = new ESRI.ArcGIS.DataSourcesGDB.FileGDBWorkspaceFactoryClass();
- IWorkspace pWorkspace = null;
- try
- {
- pWorkspace = pWorkspaceFactory.OpenFromFile(strGdbFilePath, 0);
- }
- catch
- {
- throw new Exception("打开GDB失败:无效的GDB文件!");
- }
- pFeatureWorkspace = pWorkspace as IFeatureWorkspace;
- System.Runtime.InteropServices.Marshal.ReleaseComObject(pWorkspaceFactory);
-
- }
-
-
-
-
-
-
- public static Dictionary<string, IFeatureClass> GetFeatureClassFromDataset(IFeatureWorkspace pFeatureWorkspace, IFeatureDataset pFeatureDataset)
- {
- Dictionary<string, IFeatureClass> DicFeatureClass = new Dictionary<string, IFeatureClass>();
- IEnumDataset pEnumDataset = pFeatureDataset.Subsets;
- pEnumDataset.Reset();
- IDataset pDataset = pEnumDataset.Next();
- IFeatureLayer pFeatureLayer = new FeatureLayerClass();
- while (pDataset != null)
- {
- if (pDataset.Type == esriDatasetType.esriDTFeatureClass && !pDataset.Name.Contains("_Net"))
- {
- pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass(pDataset.Name);
- if (pDataset.Name.Contains("."))
- {
- pFeatureLayer.Name = pDataset.Name.Substring(pDataset.Name.LastIndexOf(".") + 1);
- }
- else
- {
- pFeatureLayer.Name = pDataset.Name;
- }
- DicFeatureClass.Add(pFeatureLayer.Name, pFeatureLayer.FeatureClass);
- }
- pDataset = pEnumDataset.Next();
- }
- System.Runtime.InteropServices.Marshal.ReleaseComObject(pEnumDataset);
- return DicFeatureClass;
- }
-
-
-
-
-
-
-
- public static Dictionary<string, IFeatureClass> GetFeatureClassFromDataset(IFeatureWorkspace pFeatureWorkspace, IFeatureDataset pFeatureDataset, List<string> lstRemoveClass)
- {
- Dictionary<string, IFeatureClass> DicFeatureClass = new Dictionary<string, IFeatureClass>();
- IEnumDataset pEnumDataset = pFeatureDataset.Subsets;
- pEnumDataset.Reset();
- IDataset pDataset = pEnumDataset.Next();
- IFeatureLayer pFeatureLayer = new FeatureLayerClass();
- while (pDataset != null)
- {
- if ((pDataset.Type == esriDatasetType.esriDTFeatureClass && !pDataset.Name.Contains("_Net")) && !lstRemoveClass.Exists(p=>p == (pDataset.Name.Contains(".") ? pDataset.Name.Substring(pDataset.Name.LastIndexOf(".") + 1) : pDataset.Name)))
- {
- pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass(pDataset.Name);
- if (pDataset.Name.Contains("."))
- {
- pFeatureLayer.Name = pDataset.Name.Substring(pDataset.Name.LastIndexOf(".") + 1);
- }
- else
- {
- pFeatureLayer.Name = pDataset.Name;
- }
- DicFeatureClass.Add(pFeatureLayer.Name, pFeatureLayer.FeatureClass);
- }
- pDataset = pEnumDataset.Next();
- }
- System.Runtime.InteropServices.Marshal.ReleaseComObject(pEnumDataset);
- return DicFeatureClass;
- }
-
-
-
-
-
- public static int GetFeatureCount(IFeatureClass pFeatureclass)
- {
- IFeatureCursor pFeatureCursor = pFeatureclass.Search(null, false);
- IFeature pFeature = pFeatureCursor.NextFeature();
- int pFeatureCount = 0;
- while (pFeature != null)
- {
- pFeatureCount++;
- pFeature = pFeatureCursor.NextFeature();
- }
- System.Runtime.InteropServices.Marshal.ReleaseComObject(pFeatureCursor);
- return pFeatureCount;
- }
-
-
-
-
-
-
- public static int GetFeatureCount(IFeatureClass pFeatureclass, IQueryFilter pQueryFilter)
- {
- return (pFeatureclass as ITable).RowCount(pQueryFilter);
- }
- }
- }
|