You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
105 lines
4.2 KiB
105 lines
4.2 KiB
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<string, IWorkspaceAPI> 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<string, IWorkspaceAPI>(); |
|
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; |
|
} |
|
} |
|
} |
|
}
|
|
|