年度变更建库软件5.0版本
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

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;
}
}
}
}