using ESRI.ArcGIS.Carto; using KGIS.Framework.AE; using KGIS.Framework.AE.Enum; using Kingo.PluginServiceInterface; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace KDataCheck { public class DBLayerSourceHelper { public Dictionary DicWsAPI { get; set; } public IWorkspaceAPI BgWsAPI { get; set; } public IWorkspaceAPI ZlWsAPI { get; set; } public IWorkspaceAPI NmWsAPI { get; set; } //public IFeatureLayer JCLayer { get => jCLayer; set => jCLayer = value; } //public IFeatureLayer GXLayer { get => gXLayer; set => gXLayer = value; } public IFeatureLayer NmTbLayer { get; set; } #region 地类图斑 public IFeatureLayer JcTbLayer { get; set; } public IFeatureLayer JcPdtLayer { get; set; } public IFeatureLayer GxgcTBLayer { get; set; } public IFeatureLayer GxTbLayer { get; set; } public IFeatureLayer GxPdtLayer { get; set; } public IFeatureLayer BgTbLayer { get; set; } #endregion #region 村级调查区 public IFeatureLayer JcCjdcqLayer { get; set; } public IFeatureLayer JcCjdcqJxLayer { get; set; } public IFeatureLayer GxCjdcqLayer { get; set; } public IFeatureLayer GxgcCjdcqLayer { get; set; } public IFeatureLayer GxCjdcqJxLayer { get; set; } #endregion #region 行政区 public IFeatureLayer JcXzqLayer { get; set; } public IFeatureLayer JcXzqJxLayer { get; set; } public IFeatureLayer GxXzqLayer { get; set; } public IFeatureLayer GxgcXzqLayer { get; set; } public IFeatureLayer GxXzqJxLayer { get; set; } #endregion #region 城镇村 public IFeatureLayer JcCzcLayer { get; set; } public IFeatureLayer GxCzcLayer { get; set; } public IFeatureLayer GxgcCzcLayer { get; set; } #endregion #region 耕地等别 public IFeatureLayer JcGddbLayer { get; set; } public IFeatureLayer GxGddbLayer { get; set; } #endregion public IFeatureLayer OpenLayer(LayerCfg pLayerInfo) { if (pLayerInfo == null) return null; if (string.IsNullOrWhiteSpace(pLayerInfo.FcPath) || string.IsNullOrWhiteSpace(pLayerInfo.FcName)) return null; if (!File.Exists(pLayerInfo.FcPath) && !Directory.Exists(pLayerInfo.FcPath)) return null; FileInfo fInfo = new FileInfo(pLayerInfo.FcPath); WorkspaceTypeEnum wsType = WorkspaceTypeEnum.GDBFile; if (fInfo.FullName.EndsWith(".gdb")) wsType = WorkspaceTypeEnum.GDBFile; else if (fInfo.FullName.EndsWith(".mdb")) wsType = WorkspaceTypeEnum.MDBFile; else wsType = WorkspaceTypeEnum.ShapeFile; if (DicWsAPI == null) DicWsAPI = new Dictionary(); if (!DicWsAPI.ContainsKey(fInfo.FullName)) { IWorkspaceAPI wsAPI = new WorkspaceAPI(fInfo.FullName, wsType); DicWsAPI.Add(fInfo.FullName, wsAPI); } IFeatureClassAPI fcAPI = DicWsAPI[fInfo.FullName].OpenFeatureClass(pLayerInfo.FcName); return new FeatureLayerClass() { FeatureClass = fcAPI.FeatureClass, Name = fcAPI.FeatureClass.AliasName }; } public IFeatureLayer OpenLayer(IWorkspaceAPI pWsAPI, string pLayerName) { try { if (string.IsNullOrWhiteSpace(pLayerName)) return null; if (pWsAPI != null && pWsAPI.CurrentWorkspace != null) { IFeatureClassAPI fcAPI = pWsAPI.OpenFeatureClass(pLayerName); return new FeatureLayerClass() { FeatureClass = fcAPI.FeatureClass, Name = fcAPI.FeatureClass.AliasName }; } return null; } catch (Exception ex) { Console.WriteLine(string.Format("Err:{0}图层获取失败", pLayerName)); return null; } } } }