|
|
|
|
using ESRI.ArcGIS.Carto;
|
|
|
|
|
using ESRI.ArcGIS.Controls;
|
|
|
|
|
using ESRI.ArcGIS.Display;
|
|
|
|
|
using ESRI.ArcGIS.Geodatabase;
|
|
|
|
|
using ESRI.ArcGIS.Geometry;
|
|
|
|
|
using KGIS.Framework.AE;
|
|
|
|
|
using KGIS.Framework.AE.Enum;
|
|
|
|
|
using KGIS.Framework.Maps;
|
|
|
|
|
using KGIS.Framework.OpenData.Filter;
|
|
|
|
|
using KGIS.Framework.OpenData.InterFace;
|
|
|
|
|
using KGIS.Framework.Platform;
|
|
|
|
|
using KGIS.Framework.Utils;
|
|
|
|
|
using KGIS.Framework.Utils.ExtensionMethod;
|
|
|
|
|
using KGIS.Framework.Utils.Helper;
|
|
|
|
|
using Kingo.Framework.LayerStyleConvert.Common;
|
|
|
|
|
using Kingo.Framework.LayerStyleConvert.XSDClass;
|
|
|
|
|
using Kingo.OpenData.Filter;
|
|
|
|
|
using Kingo.Plugin.DTBJKLoadData.Model;
|
|
|
|
|
using Kingo.PluginServiceInterface;
|
|
|
|
|
using KUI.Windows;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.IO;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Runtime.InteropServices;
|
|
|
|
|
using System.Windows;
|
|
|
|
|
using System.Windows.Input;
|
|
|
|
|
using UIShell.OSGi;
|
|
|
|
|
using Path = System.IO.Path;
|
|
|
|
|
|
|
|
|
|
namespace Kingo.Plugin.DTBJKLoadData.View
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// UCLoadDTBJKData.xaml 的交互逻辑
|
|
|
|
|
/// </summary>
|
|
|
|
|
public partial class UCLoadDTBJKData : BaseWindow
|
|
|
|
|
{
|
|
|
|
|
private IHookHelper hookHelper { get; set; }
|
|
|
|
|
|
|
|
|
|
private IDataCatalogService _DataCatalog { get; set; }
|
|
|
|
|
|
|
|
|
|
private Dictionary<string, int> JCKFiles { get; set; }
|
|
|
|
|
|
|
|
|
|
public List<TableMapping> tableMappings = new List<TableMapping>();
|
|
|
|
|
|
|
|
|
|
private ProjectInfo ProjectInfo { get; set; }
|
|
|
|
|
|
|
|
|
|
private string XZQDM { get; set; }
|
|
|
|
|
private string FDD { get; set; }
|
|
|
|
|
private string ZYJD { get; set; }
|
|
|
|
|
private string TXDH { get; set; }
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 坐标系字符串
|
|
|
|
|
/// </summary>
|
|
|
|
|
private string PrjFileStr { get; set; }
|
|
|
|
|
|
|
|
|
|
private SystemConfig2 SystemCfg { get; set; }
|
|
|
|
|
DTBJKLoadData_Default dTBJKLoadData_Default = null;
|
|
|
|
|
public UCLoadDTBJKData(IHookHelper m_hookHelper)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
InitializeComponent();
|
|
|
|
|
dTBJKLoadData_Default = DTBJKLoadData.GetDefaultType();
|
|
|
|
|
this.Loaded += (s, e) =>
|
|
|
|
|
{
|
|
|
|
|
hookHelper = m_hookHelper;
|
|
|
|
|
if (ProjectInfo == null)
|
|
|
|
|
ProjectInfo = MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo;
|
|
|
|
|
tableMappings = dTBJKLoadData_Default.DTBJKInitialization(DTBJKLoadData.matchingRegion);
|
|
|
|
|
dgTableMapping.ItemsSource = tableMappings;
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug("UCLoadDTBJKData初始化界面异常:" + ex.Message);
|
|
|
|
|
LogAPI.Debug("UCLoadDTBJKData初始化界面异常:" + ex.StackTrace);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#region 视图界面触发事件
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 选择数据库文件夹
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="sender"></param>
|
|
|
|
|
/// <param name="e"></param>
|
|
|
|
|
private void btnSelectedBaseData_Click(object sender, RoutedEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
tableMappings = dTBJKLoadData_Default.btnSelectedBaseData_Click(this);
|
|
|
|
|
dgTableMapping.ItemsSource = null;
|
|
|
|
|
dgTableMapping.ItemsSource = tableMappings;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
MessageBox.Show("选择数据库文件夹异常:" + ex.Message);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 获取影像文件集合
|
|
|
|
|
/// </summary>
|
|
|
|
|
private List<string> InitYXData(string YXPath)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
List<string> YXList = new List<string>();
|
|
|
|
|
if (string.IsNullOrWhiteSpace(YXPath))
|
|
|
|
|
{
|
|
|
|
|
return YXList;
|
|
|
|
|
}
|
|
|
|
|
DirectoryInfo folder = new DirectoryInfo(YXPath);
|
|
|
|
|
FileInfo[] finfoList = folder.GetFiles("*", SearchOption.AllDirectories);
|
|
|
|
|
foreach (FileInfo fileInfo in finfoList)
|
|
|
|
|
{
|
|
|
|
|
if (fileInfo.Extension.Equals(".tif", StringComparison.CurrentCultureIgnoreCase) ||
|
|
|
|
|
fileInfo.Extension.Equals(".jpg", StringComparison.CurrentCultureIgnoreCase) ||
|
|
|
|
|
fileInfo.Extension.Equals(".img", StringComparison.CurrentCultureIgnoreCase))
|
|
|
|
|
{
|
|
|
|
|
YXList.Add(fileInfo.FullName);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return YXList;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug("获取影响文件失败:" + ex.Message);
|
|
|
|
|
throw ex;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private IFeatureRenderer GetSymbol(string pStrSymbol)
|
|
|
|
|
{
|
|
|
|
|
IFeatureRenderer result = null;
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(pStrSymbol))
|
|
|
|
|
{
|
|
|
|
|
AdvancedDrawingInfo ad = AdvancedDrawingInfo.FromJson(pStrSymbol);
|
|
|
|
|
if (ad != null)
|
|
|
|
|
{
|
|
|
|
|
if (ad.DrawingInfo.Renderer is Framework.LayerStyleConvert.XSDClass.SimpleRenderer)
|
|
|
|
|
{
|
|
|
|
|
Symbol symbol1 = (ad.DrawingInfo.Renderer as Framework.LayerStyleConvert.XSDClass.SimpleRenderer).Symbol;
|
|
|
|
|
ISimpleRenderer simpleRander2 = SymbolConvert.Instance().GetSimpleRenderer(symbol1, SymbolTypeEnum.Fill);
|
|
|
|
|
result = simpleRander2 as IFeatureRenderer;
|
|
|
|
|
}
|
|
|
|
|
else if (ad.DrawingInfo.Renderer is Framework.LayerStyleConvert.XSDClass.UniqueValueRenderer)
|
|
|
|
|
{
|
|
|
|
|
Renderer rander = ad.DrawingInfo.Renderer;
|
|
|
|
|
IUniqueValueRenderer uniqueValueRander = SymbolConvert.Instance().GetUniqueValueRenderer(rander, SymbolTypeEnum.Fill);
|
|
|
|
|
result = uniqueValueRander as IFeatureRenderer;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug("获取图层样式失败:" + ex.Message);
|
|
|
|
|
LogAPI.Debug("获取图层样式失败:" + ex.StackTrace);
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 选择单个数据目录数据库路径
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="sender"></param>
|
|
|
|
|
/// <param name="e"></param>
|
|
|
|
|
private void txt_NewSelectMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
var textBlock = sender as System.Windows.Controls.TextBlock;
|
|
|
|
|
if (textBlock == null) return;
|
|
|
|
|
if (textBlock.Tag.ToTrim() == "参考影像目录")
|
|
|
|
|
{
|
|
|
|
|
System.Windows.Forms.FolderBrowserDialog folderDialog = new System.Windows.Forms.FolderBrowserDialog();
|
|
|
|
|
if (folderDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
|
|
|
|
|
{
|
|
|
|
|
TableMapping mapping = tableMappings.FirstOrDefault(x => x.S_TableAliasName.Equals(textBlock.Tag.ToTrim()));
|
|
|
|
|
mapping.S_TablePath = folderDialog.SelectedPath.Trim();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
KGIS.Framework.OpenData.Control.OpenDataDialog pDialog = new KGIS.Framework.OpenData.Control.OpenDataDialog();
|
|
|
|
|
ISpatialDataObjectFilter pOFilter = new FilterGeoDatabasePersonal();
|
|
|
|
|
pDialog.AddFilter(pOFilter, true);
|
|
|
|
|
pOFilter = new FilterGeoDatabaseFile();
|
|
|
|
|
pDialog.AddFilter(pOFilter, true);
|
|
|
|
|
pDialog.AllowMultiSelect = false;
|
|
|
|
|
pDialog.Title = "选择基础数据";
|
|
|
|
|
pDialog.RestoreLocation = true;
|
|
|
|
|
pDialog.StartLocation = pDialog.FinalLocation;
|
|
|
|
|
System.Windows.Forms.DialogResult dialogResult = pDialog.ShowDialog();
|
|
|
|
|
if (dialogResult == System.Windows.Forms.DialogResult.OK && pDialog.Selection.Count != 0)
|
|
|
|
|
{
|
|
|
|
|
string ImportDataType = Path.GetExtension(pDialog.FinalLocation).ToUpper().Replace('.', ' ').TrimStart();
|
|
|
|
|
if (string.IsNullOrWhiteSpace(ImportDataType) || (ImportDataType != "GDB" && ImportDataType != "MDB" && ImportDataType != "SHP"))
|
|
|
|
|
{
|
|
|
|
|
MessageHelper.Show("选择的数据路径有误,请根据过滤条件,重新选择数据库!!");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (sender is System.Windows.Controls.TextBlock)
|
|
|
|
|
{
|
|
|
|
|
string textTagValue = (sender as System.Windows.Controls.TextBlock).Tag.ToString().Trim();
|
|
|
|
|
TableMapping mapping = tableMappings.FirstOrDefault(x => x.S_TableAliasName.Equals(textTagValue));
|
|
|
|
|
mapping.S_TablePath = pDialog.FinalLocation.Trim();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
dgTableMapping.ItemsSource = null;
|
|
|
|
|
dgTableMapping.ItemsSource = tableMappings;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug("选择基础数据库失败:" + ex.Message);
|
|
|
|
|
LogAPI.Debug("选择基础数据库失败:" + ex.StackTrace);
|
|
|
|
|
MessageHelper.Show("选择基础数据库失败:" + ex);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void BtnLoad_Click(object sender, RoutedEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (string.IsNullOrWhiteSpace(cobDataBase.Text))
|
|
|
|
|
{
|
|
|
|
|
MessageHelper.ShowTips("请选择基础库数据库路径!");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
EngineEditor engineEditor = new EngineEditor();
|
|
|
|
|
if (engineEditor.EditState == esriEngineEditState.esriEngineStateEditing)
|
|
|
|
|
{
|
|
|
|
|
MessageHelper.ShowTips("当前处于编辑状态,请关闭后打开工程!");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
////湖南需求:地管理信息路径 必选项
|
|
|
|
|
//if (string.IsNullOrWhiteSpace(tableMappings.FirstOrDefault(x => x.S_TableAliasName.Equals("用地管理信息")).S_TablePath))//"用地管理信息"
|
|
|
|
|
//{
|
|
|
|
|
// MessageHelper.ShowTips("用地管理信息路径不可为空!");
|
|
|
|
|
// return;
|
|
|
|
|
//}
|
|
|
|
|
//if (string.IsNullOrWhiteSpace(tableMappings.FirstOrDefault(x => x.S_TableAliasName.Equals("坡度图")).S_TablePath))//"坡度图"
|
|
|
|
|
//{
|
|
|
|
|
// MessageHelper.ShowTips("坡度图路径不可为空!");
|
|
|
|
|
// return;
|
|
|
|
|
//}
|
|
|
|
|
if (_DataCatalog == null)
|
|
|
|
|
_DataCatalog = BundleRuntime.Instance.GetFirstOrDefaultService<IDataCatalogService>();
|
|
|
|
|
if (_DataCatalog == null || tableMappings.Count == 0) return;
|
|
|
|
|
|
|
|
|
|
this.ShowLoading("正在加载数据.......", 0, 0);
|
|
|
|
|
var AllCurrentLayers = _DataCatalog.CurrentLayers;
|
|
|
|
|
if (AllCurrentLayers is LayerCfg && (AllCurrentLayers as LayerCfg).Layers.Count != 0)
|
|
|
|
|
{
|
|
|
|
|
if (KGIS.Framework.Utils.SysConfigsOprator.GetAppsetingValueByKey("IsCheckJCKSign").Equals("true"))
|
|
|
|
|
EncryptionHelper.CheckJCKSign(new List<string>() { this.ProjectInfo.JCKPath });
|
|
|
|
|
foreach (LayerCfg itemCfg in (AllCurrentLayers as LayerCfg).Layers)
|
|
|
|
|
{
|
|
|
|
|
if ("建库数据,监测数据,变更数据".Contains(itemCfg.LayerName)) continue;
|
|
|
|
|
if (itemCfg.LayerType == EnumLayerType.GroupLayer)
|
|
|
|
|
{
|
|
|
|
|
//预处理的新增图层
|
|
|
|
|
if (Platform.Instance.SystemType == SystemTypeEnum.YCLJK && "预处理".Contains(itemCfg.LayerName))
|
|
|
|
|
{
|
|
|
|
|
LoadLayerDataToMap(itemCfg, itemCfg.Layers, null);
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
if (tableMappings.FirstOrDefault(x => x.S_TableAliasName.Contains(itemCfg.LayerName)) == null)
|
|
|
|
|
continue;
|
|
|
|
|
string FcPath = tableMappings.FirstOrDefault(x => x.S_TableAliasName.Contains(itemCfg.LayerName)).S_TablePath;
|
|
|
|
|
if (itemCfg.LayerName == "坡度图" && FcPath.Contains("5级坡度图"))
|
|
|
|
|
{
|
|
|
|
|
//FcPath = tableMappings.FirstOrDefault(x => x.S_TableAliasName.Equals("5级坡度图")).S_TablePath;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
if (itemCfg.LayerName.Equals("基础数据库") && string.IsNullOrWhiteSpace(FcPath))
|
|
|
|
|
{
|
|
|
|
|
MessageHelper.ShowTips("基础数据库路径不可为空!");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
LoadLayerDataToMap(itemCfg, itemCfg.Layers, FcPath);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
_DataCatalog.CurrentLayers = AllCurrentLayers;
|
|
|
|
|
_DataCatalog.UpdateTree();
|
|
|
|
|
SaveProjectAllPath();
|
|
|
|
|
|
|
|
|
|
//设置预处理新增图层的坐标系
|
|
|
|
|
if (Platform.Instance.SystemType == SystemTypeEnum.YCLJK && ProjectInfo != null && ProjectInfo.PrjFileStr != null)
|
|
|
|
|
{
|
|
|
|
|
IWorkspaceAPI wsYCLAPI = new WorkspaceAPI(ProjectInfo.DTBYCLDatabase, WorkspaceTypeEnum.GDBFile, true);
|
|
|
|
|
GeoDBAPI.SetGeoDatasetSpatialReference(wsYCLAPI.CurrentWorkspace, ProjectInfo.GetCurentProjectedCoordinate(), ProjectInfo.XYResolution);
|
|
|
|
|
|
|
|
|
|
IWorkspaceAPI wsYCLYHAPI = new WorkspaceAPI(ProjectInfo.DTBYCLYHDatabase, WorkspaceTypeEnum.GDBFile, true);
|
|
|
|
|
GeoDBAPI.SetGeoDatasetSpatialReference(wsYCLYHAPI.CurrentWorkspace, ProjectInfo.GetCurentProjectedCoordinate(), ProjectInfo.XYResolution);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Platform.Instance.SendMsg(new KGIS.Framework.Utils.Interface.NotifyMsgPackage() { Content = Platform.Instance.SystemType, MsgType = "LoadDTBViewData" });
|
|
|
|
|
this.CloseLoading();
|
|
|
|
|
this.Close();
|
|
|
|
|
if (Platform.Instance.SystemType == SystemTypeEnum.DTBJK)
|
|
|
|
|
SetJCTBLayer();
|
|
|
|
|
MessageHelper.ShowTips("基础数据加载成功!");
|
|
|
|
|
//RoomToMap(hookHelper.FocusMap);
|
|
|
|
|
ZoomToJCDLTB();
|
|
|
|
|
Platform.Instance.SendMsg(new KGIS.Framework.Utils.Interface.NotifyMsgPackage() { MsgType = "SaveProject" });
|
|
|
|
|
//PluginServiceInterface.CommonHelper.ExeCommandOperation("执行全图");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug("BtnLoad_Click异常:" + ex.Message);
|
|
|
|
|
LogAPI.Debug("BtnLoad_Click异常:" + ex.StackTrace);
|
|
|
|
|
this.CloseLoading();
|
|
|
|
|
MessageHelper.ShowError("基础数据加载异常:" + ex.Message);
|
|
|
|
|
}
|
|
|
|
|
finally
|
|
|
|
|
{
|
|
|
|
|
this.CloseLoading();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 设置监测图斑图层
|
|
|
|
|
/// </summary>
|
|
|
|
|
private void SetJCTBLayer()
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
object GroupLayerInfo = null;
|
|
|
|
|
if (ProjectInfo == null)
|
|
|
|
|
ProjectInfo = (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo);
|
|
|
|
|
if (_DataCatalog == null)
|
|
|
|
|
_DataCatalog = BundleRuntime.Instance.GetFirstOrDefaultService<IDataCatalogService>();
|
|
|
|
|
if (_DataCatalog == null) return;
|
|
|
|
|
IFeatureLayer featureLayer = MapsManager.Instance.MapService.GetFeatureLayerByName("DLTB");
|
|
|
|
|
if (MapsManager.Instance.MapService.GetFeatureLayerByName("JCTB") == null && featureLayer != null)
|
|
|
|
|
{
|
|
|
|
|
IWorkspaceAPI wsAPI = new WorkspaceAPI(ProjectInfo.JCDatabase, WorkspaceTypeEnum.GDBFile);
|
|
|
|
|
IWorkspaceAPI wsAPIs = new WorkspaceAPI(ProjectInfo.DTBBGGXDatabase, WorkspaceTypeEnum.GDBFile);
|
|
|
|
|
GeoDBAPI.SetGeoDatasetSpatialReference(wsAPI.CurrentWorkspace, (featureLayer.FeatureClass as IGeoDataset).SpatialReference, 0.0001);
|
|
|
|
|
GeoDBAPI.SetGeoDatasetSpatialReference(wsAPIs.CurrentWorkspace, (featureLayer.FeatureClass as IGeoDataset).SpatialReference, 0.0001);
|
|
|
|
|
|
|
|
|
|
ILayer groupLayer = MapsManager.Instance.MapService.GetGroupLayer("JCTBSJ");
|
|
|
|
|
if (groupLayer == null)
|
|
|
|
|
{
|
|
|
|
|
groupLayer = new GroupLayer() { Name = "监测数据" };
|
|
|
|
|
ILayerGeneralProperties layerGeneralProperties = groupLayer as ILayerGeneralProperties;
|
|
|
|
|
layerGeneralProperties.LayerDescription = "JCTBSJ";
|
|
|
|
|
GroupLayerInfo = _DataCatalog.AddLayer(groupLayer);
|
|
|
|
|
}
|
|
|
|
|
if (GroupLayerInfo == null)
|
|
|
|
|
GroupLayerInfo = _DataCatalog.GetNodeByLayer(groupLayer);
|
|
|
|
|
IFeatureClassAPI jctbFcAPI = wsAPI.OpenFeatureClass("JCTB");
|
|
|
|
|
IFeatureLayer JcTBLayer = new FeatureLayer() { Name = "国家监测图斑", FeatureClass = jctbFcAPI.FeatureClass };
|
|
|
|
|
if (JcTBLayer is IFeatureLayerDefinition pFLDefinition)
|
|
|
|
|
{
|
|
|
|
|
pFLDefinition.DefinitionExpression = "SJLY='GJJC'";
|
|
|
|
|
}
|
|
|
|
|
_DataCatalog.AddLayer(JcTBLayer, GroupLayerInfo);
|
|
|
|
|
IFeatureLayer ZZBGTBLayer = new FeatureLayer() { Name = "自主变更图斑", FeatureClass = jctbFcAPI.FeatureClass };
|
|
|
|
|
pFLDefinition = ZZBGTBLayer as IFeatureLayerDefinition;
|
|
|
|
|
if (pFLDefinition != null)
|
|
|
|
|
{
|
|
|
|
|
pFLDefinition.DefinitionExpression = "SJLY='ZZBG'";
|
|
|
|
|
}
|
|
|
|
|
_DataCatalog.AddLayer(ZZBGTBLayer, GroupLayerInfo);
|
|
|
|
|
_DataCatalog.UpdateTree();
|
|
|
|
|
if (groupLayer != null) Marshal.ReleaseComObject(groupLayer);
|
|
|
|
|
Marshal.ReleaseComObject(groupLayer);
|
|
|
|
|
if (wsAPI != null) wsAPI.CloseWorkspace();//释放资源
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug("配置监测变更图层失败:" + ex.Message);
|
|
|
|
|
MessageHelper.ShowTips("配置监测变更图层失败:" + ex.Message);
|
|
|
|
|
throw ex;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private void btnClose_Click(object sender, RoutedEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
this.Close();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void ChkSelectedAll_EditValueChanged(object sender, DevExpress.Xpf.Editors.EditValueChangedEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void CheckBox_Click(object sender, RoutedEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 加载目录数据
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="JCMLMC">基础目录名称</param>
|
|
|
|
|
private void LoadLayerDataToMap(LayerCfg ParentGroup, List<LayerCfg> layerInfo2s, string FcPath)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
for (int i = 0; i < layerInfo2s.Count; i++)
|
|
|
|
|
{
|
|
|
|
|
LayerCfg GroupLayerInfo = null;
|
|
|
|
|
if (layerInfo2s[i].LayerType == EnumLayerType.GroupLayer)
|
|
|
|
|
{
|
|
|
|
|
LoadLayerDataToMap(layerInfo2s[i], layerInfo2s[i].Layers, FcPath);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
GroupLayerInfo = GroupLayerInfo ?? ParentGroup;
|
|
|
|
|
LayerCfg layerInfo3 = new LayerCfg();
|
|
|
|
|
if (layerInfo2s[i].LayerType == EnumLayerType.FeatureLayer)
|
|
|
|
|
{
|
|
|
|
|
//预处理情况下的路径
|
|
|
|
|
if (Platform.Instance.SystemType == SystemTypeEnum.YCLJK)
|
|
|
|
|
{
|
|
|
|
|
if (ProjectInfo == null)
|
|
|
|
|
ProjectInfo = MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo;
|
|
|
|
|
if (ProjectInfo == null) continue;
|
|
|
|
|
if ("预处理,标注点,标注线,标注面,自主图斑".Contains(layerInfo2s[i].LayerName))
|
|
|
|
|
{
|
|
|
|
|
FcPath = ProjectInfo.DTBYCLYHDatabase;
|
|
|
|
|
}
|
|
|
|
|
else if ("外业图斑,重叠图斑".Contains(layerInfo2s[i].LayerName))
|
|
|
|
|
{
|
|
|
|
|
FcPath = ProjectInfo.DTBYCLDatabase;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
layerInfo2s[i].FcPath = FcPath;
|
|
|
|
|
if (string.IsNullOrWhiteSpace(layerInfo2s[i].FcPath)) continue;
|
|
|
|
|
WorkspaceTypeEnum workspaceType = WorkspaceTypeEnum.GDBFile;
|
|
|
|
|
if (layerInfo2s[i].FcPath.ToLower().EndsWith(".mdb"))
|
|
|
|
|
{
|
|
|
|
|
if (!File.Exists(layerInfo2s[i].FcPath))
|
|
|
|
|
{
|
|
|
|
|
layerInfo2s.Remove(layerInfo2s[i]);
|
|
|
|
|
i--;
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
workspaceType = WorkspaceTypeEnum.MDBFile;
|
|
|
|
|
}
|
|
|
|
|
else if (layerInfo2s[i].FcPath.ToLower().EndsWith(".gdb"))
|
|
|
|
|
{
|
|
|
|
|
if (!Directory.Exists(layerInfo2s[i].FcPath))
|
|
|
|
|
{
|
|
|
|
|
layerInfo2s.Remove(layerInfo2s[i]);
|
|
|
|
|
i--;
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
workspaceType = WorkspaceTypeEnum.GDBFile;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
workspaceType = WorkspaceTypeEnum.ShapeFile;
|
|
|
|
|
}
|
|
|
|
|
IWorkspaceAPI wsAPI = new WorkspaceAPI(layerInfo2s[i].FcPath, workspaceType);
|
|
|
|
|
//List<IFeatureClass> featureClasses = wsAPI.GetAllFeatureClass(ESRI.ArcGIS.Geodatabase.esriDatasetType.esriDTAny);
|
|
|
|
|
IFeatureClass fc = null;
|
|
|
|
|
if (wsAPI.OpenFeatureClass2(layerInfo2s[i].FcName) == null)
|
|
|
|
|
{
|
|
|
|
|
List<IFeatureClass> fcs = wsAPI.GetAllFeatureClass(ESRI.ArcGIS.Geodatabase.esriDatasetType.esriDTAny);
|
|
|
|
|
if (fcs != null && fcs.Count == 1)
|
|
|
|
|
{
|
|
|
|
|
fc = fcs[0];
|
|
|
|
|
layerInfo2s[i].FcName = ((IDataset)fc).Name;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
fc = wsAPI.OpenFeatureClass(layerInfo2s[i].FcName).FeatureClass;
|
|
|
|
|
if (fc == null) continue;
|
|
|
|
|
ILayer tempLayer = new FeatureLayer() { Name = layerInfo2s[i].LayerName, FeatureClass = fc };
|
|
|
|
|
#region 显示比例设置
|
|
|
|
|
tempLayer.MinimumScale = layerInfo2s[i].MinScale;
|
|
|
|
|
tempLayer.MaximumScale = layerInfo2s[i].MaxScale;
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region 图层透明度
|
|
|
|
|
if (tempLayer is ILayerEffects mLayerEffects)//透明度
|
|
|
|
|
mLayerEffects.Transparency = (short)layerInfo2s[i].Transparency;
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region 是否显示
|
|
|
|
|
tempLayer.Visible = layerInfo2s[i].Visible;//是否显示
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region 过滤条件
|
|
|
|
|
IFeatureLayerDefinition pFLDefinition = tempLayer as IFeatureLayerDefinition;
|
|
|
|
|
if (pFLDefinition != null)
|
|
|
|
|
{
|
|
|
|
|
pFLDefinition.DefinitionExpression = layerInfo2s[i].DefinitionExpression;
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region 图层样式
|
|
|
|
|
IFeatureRenderer render = GetSymbol(layerInfo2s[i].Symbol);
|
|
|
|
|
if (render != null)
|
|
|
|
|
(tempLayer as IGeoFeatureLayer).Renderer = render;
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
layerInfo2s[i].Data = tempLayer;
|
|
|
|
|
if (wsAPI != null) wsAPI.CloseWorkspace();
|
|
|
|
|
}
|
|
|
|
|
else if (layerInfo2s[i].LayerType == EnumLayerType.RasterLayer && ParentGroup.LayerName != "参考影像目录")
|
|
|
|
|
{
|
|
|
|
|
if (string.IsNullOrWhiteSpace(layerInfo2s[i].FcPath)) continue;
|
|
|
|
|
IRasterLayer layer = new RasterLayerClass();
|
|
|
|
|
layer.CreateFromFilePath(layerInfo2s[i].FcPath);
|
|
|
|
|
layer.Name = layerInfo2s[i].LayerName;
|
|
|
|
|
if (layer is ILayerEffects mLayerEffects)
|
|
|
|
|
mLayerEffects.Transparency = (short)layerInfo2s[i].Transparency;
|
|
|
|
|
layer.Visible = layerInfo2s[i].Visible;
|
|
|
|
|
layerInfo2s[i].Data = layer;
|
|
|
|
|
_DataCatalog.AddLayer(layer, GroupLayerInfo);
|
|
|
|
|
layerInfo3 = GroupLayerInfo.Layers.FirstOrDefault(x => x.FcName == layer.Name);
|
|
|
|
|
}
|
|
|
|
|
else if (layerInfo2s[i].LayerType == EnumLayerType.RasterLayer && ParentGroup.LayerName == "参考影像目录")
|
|
|
|
|
{
|
|
|
|
|
if (Directory.Exists(Path.Combine(FcPath, layerInfo2s[i].LayerName)))
|
|
|
|
|
{
|
|
|
|
|
List<string> vs = InitYXData(Path.Combine(FcPath, layerInfo2s[i].LayerName));
|
|
|
|
|
foreach (var item in vs)
|
|
|
|
|
{
|
|
|
|
|
layerInfo2s[i].FcPath = item;
|
|
|
|
|
if (string.IsNullOrWhiteSpace(layerInfo2s[i].FcPath)) continue;
|
|
|
|
|
IRasterLayer rl = new RasterLayerClass();
|
|
|
|
|
rl.CreateFromFilePath(item);
|
|
|
|
|
if (rl.Renderer is IRasterStretch rst)
|
|
|
|
|
{
|
|
|
|
|
RgbColorClass rgb = new RgbColorClass
|
|
|
|
|
{
|
|
|
|
|
NullColor = true
|
|
|
|
|
};
|
|
|
|
|
rst.Background = true;
|
|
|
|
|
rst.BackgroundColor = rgb;
|
|
|
|
|
rst.StretchType = esriRasterStretchTypesEnum.esriRasterStretch_NONE;
|
|
|
|
|
}
|
|
|
|
|
layerInfo2s[i].Data = rl;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug("LoadLayerDataToMap异常:" + ex.Message);
|
|
|
|
|
LogAPI.Debug("LoadLayerDataToMap异常:" + ex.StackTrace);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 加载保存基础库所有路径
|
|
|
|
|
/// </summary>
|
|
|
|
|
private void SaveProjectAllPath()
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
ProjectInfo = MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo;
|
|
|
|
|
if (ProjectInfo != null && tableMappings.Count != 0)
|
|
|
|
|
{
|
|
|
|
|
foreach (var Pathitem in tableMappings)
|
|
|
|
|
{
|
|
|
|
|
switch (Pathitem.S_TableAliasName)
|
|
|
|
|
{
|
|
|
|
|
case "参考影像目录":
|
|
|
|
|
ProjectInfo.YXPath = Pathitem.S_TablePath ?? "";
|
|
|
|
|
break;
|
|
|
|
|
case "5级坡度图":
|
|
|
|
|
ProjectInfo.txtfivePDT = Pathitem.S_TablePath ?? "";
|
|
|
|
|
break;
|
|
|
|
|
case "国检年末库":
|
|
|
|
|
ProjectInfo.GJNMKPath = Pathitem.S_TablePath ?? "";
|
|
|
|
|
break;
|
|
|
|
|
case "承诺耕地图层":
|
|
|
|
|
ProjectInfo.CNGDPath = Pathitem.S_TablePath ?? "";
|
|
|
|
|
break;
|
|
|
|
|
case "基础数据库":
|
|
|
|
|
ProjectInfo.JCKPath = Pathitem.S_TablePath ?? "";
|
|
|
|
|
break;
|
|
|
|
|
case "国家下发监测图斑":
|
|
|
|
|
ProjectInfo.GJXFJCPath = Pathitem.S_TablePath ?? "";
|
|
|
|
|
break;
|
|
|
|
|
case "撂荒耕地参考图层":
|
|
|
|
|
ProjectInfo.LHGDPath = Pathitem.S_TablePath ?? "";
|
|
|
|
|
break;
|
|
|
|
|
case "临时用地备案范围":
|
|
|
|
|
ProjectInfo.LSYDFWPath = Pathitem.S_TablePath ?? "";
|
|
|
|
|
break;
|
|
|
|
|
case "用地管理信息":
|
|
|
|
|
ProjectInfo.YDGLXXPath = Pathitem.S_TablePath ?? "";
|
|
|
|
|
break;
|
|
|
|
|
case "专项数据目录":
|
|
|
|
|
ProjectInfo.ZXSJPath = Pathitem.S_TablePath ?? "";
|
|
|
|
|
break;
|
|
|
|
|
case "城镇村等用地参考图层":
|
|
|
|
|
ProjectInfo.CZCDYDPath = Pathitem.S_TablePath ?? "";
|
|
|
|
|
break;
|
|
|
|
|
case "恢复属性参考图层":
|
|
|
|
|
ProjectInfo.GDJHFSXPath = Pathitem.S_TablePath ?? "";
|
|
|
|
|
break;
|
|
|
|
|
case "坡度图":
|
|
|
|
|
ProjectInfo.PDTPath = Pathitem.S_TablePath ?? "";
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
ProjectInfo.DataBaseName = cobDataBase.Text.ToString().Trim() ?? "";
|
|
|
|
|
ProjectInfo.Save();
|
|
|
|
|
if (Platform.Instance.SystemType == SystemTypeEnum.DTBJK)
|
|
|
|
|
MapsManager.Instance.MapService.LoadProject(SysAppPath.GetCurrentAppPath() + "DTBProject\\单图斑建库.KBG");
|
|
|
|
|
else if (Platform.Instance.SystemType == SystemTypeEnum.YCLJK)
|
|
|
|
|
MapsManager.Instance.MapService.LoadProject(SysAppPath.GetCurrentAppPath() + "YCLProject\\图斑预处理.KBG");
|
|
|
|
|
else if (Platform.Instance.SystemType == SystemTypeEnum.WYZS)
|
|
|
|
|
MapsManager.Instance.MapService.LoadProject(SysAppPath.GetCurrentAppPath() + "DTBZJProject\\单图斑质检.KBG");
|
|
|
|
|
InitJCKXZQDMAndZBX();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug("SaveProjectAllPath异常:" + ex.Message);
|
|
|
|
|
LogAPI.Debug("SaveProjectAllPath异常:" + ex.StackTrace);
|
|
|
|
|
throw ex;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 提取行政区代码及坐标系
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="dataPath"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
private void InitJCKXZQDMAndZBX()
|
|
|
|
|
{
|
|
|
|
|
//解析基础库目录下的矢量数据,读取坐标参考,新建工程的坐标参考以基础库数据坐标参考为准
|
|
|
|
|
if (string.IsNullOrWhiteSpace(cobDataBase.Text))
|
|
|
|
|
{
|
|
|
|
|
throw new Exception("请选择基础库数据目录!");
|
|
|
|
|
}
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
ProjectInfo = MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo;
|
|
|
|
|
IFeatureLayer featureLayer = MapsManager.Instance.MapService.GetFeatureLayerByName("DLTB");
|
|
|
|
|
if (featureLayer == null)
|
|
|
|
|
featureLayer = MapsManager.Instance.MapService.GetFeatureLayerByLayerName("基础_地类图斑");
|
|
|
|
|
if (featureLayer == null || featureLayer.FeatureClass == null || featureLayer.FeatureClass.FeatureCount(null) == 0)
|
|
|
|
|
{
|
|
|
|
|
throw new Exception("未加载基础_地类图斑或基础_地类图斑为空值,未能设置行政区代码及坐标系,请加载基础库数据!");
|
|
|
|
|
}
|
|
|
|
|
IQueryFilter queryFilter = new QueryFilterClass()
|
|
|
|
|
{
|
|
|
|
|
SubFields = featureLayer.FeatureClass.OIDFieldName + ",BSM"
|
|
|
|
|
};
|
|
|
|
|
IFeatureCursor featureCursor = null;
|
|
|
|
|
IFeature feature = null;
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
featureCursor = featureLayer.FeatureClass.Search(queryFilter, true);
|
|
|
|
|
while ((feature = featureCursor.NextFeature()) != null)
|
|
|
|
|
{
|
|
|
|
|
XZQDM = feature.get_Value(feature.Fields.FindField("BSM")).ToString().Substring(0, 6);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
ISpatialReference spatialReference = (featureLayer.FeatureClass as IGeoDataset).SpatialReference;
|
|
|
|
|
if (spatialReference == null)
|
|
|
|
|
{
|
|
|
|
|
throw new Exception("设置影像失败!");
|
|
|
|
|
}
|
|
|
|
|
SetPRJBySp(spatialReference);
|
|
|
|
|
ProjectInfo.CODE = XZQDM ?? "";
|
|
|
|
|
ProjectInfo.PrjFileStr = PrjFileStr ?? "";
|
|
|
|
|
ProjectInfo.TXDH = TXDH.ToInt();
|
|
|
|
|
ProjectInfo.ZYJD = ZYJD.ToInt();
|
|
|
|
|
ProjectInfo.Save();
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug("设置行政区代码失败:" + ex.Message);
|
|
|
|
|
LogAPI.Debug("设置行政区代码失败:" + ex.StackTrace);
|
|
|
|
|
}
|
|
|
|
|
finally
|
|
|
|
|
{
|
|
|
|
|
if (featureCursor != null)
|
|
|
|
|
{
|
|
|
|
|
Marshal.ReleaseComObject(featureCursor);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
this.XZQDM = "";
|
|
|
|
|
LogAPI.Debug("设置行政区代码失败:" + ex.Message);
|
|
|
|
|
}
|
|
|
|
|
if (string.IsNullOrWhiteSpace(this.XZQDM))
|
|
|
|
|
{
|
|
|
|
|
throw new Exception("获取基础库行政区代码失败!");
|
|
|
|
|
}
|
|
|
|
|
if (string.IsNullOrWhiteSpace(this.PrjFileStr))
|
|
|
|
|
{
|
|
|
|
|
throw new Exception("获取基础库坐标参考失败!");
|
|
|
|
|
}
|
|
|
|
|
Platform.Instance.SendMsg(new KGIS.Framework.Utils.Interface.NotifyMsgPackage() { MsgType = "SaveProject" });
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 设置坐标参考
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="spatialReference"></param>
|
|
|
|
|
private void SetPRJBySp(ISpatialReference spatialReference)
|
|
|
|
|
{
|
|
|
|
|
int t;
|
|
|
|
|
string spatialrefstr = string.Empty;
|
|
|
|
|
IESRISpatialReferenceGEN2 prjsr = spatialReference as IESRISpatialReferenceGEN2;
|
|
|
|
|
prjsr.ExportToESRISpatialReference2(out spatialrefstr, out t);
|
|
|
|
|
this.PrjFileStr = spatialrefstr;
|
|
|
|
|
string beginstr = "[";
|
|
|
|
|
int leftindex = spatialrefstr.IndexOf(beginstr) + beginstr.Length;
|
|
|
|
|
string spatialrefrightstr = spatialrefstr.Substring(leftindex);
|
|
|
|
|
int length = spatialrefrightstr.IndexOf(",");
|
|
|
|
|
string spatialReferenceName = spatialrefrightstr.Substring(0, length).Replace("\"", "");
|
|
|
|
|
if (spatialReferenceName.ToTrim().ToLower().Contains("3_degree"))
|
|
|
|
|
{
|
|
|
|
|
this.FDD = "3";
|
|
|
|
|
//3度分带
|
|
|
|
|
//combFD.SelectedIndex = 0;
|
|
|
|
|
}
|
|
|
|
|
else if (spatialReferenceName.ToTrim().ToLower().Contains("6_degree"))
|
|
|
|
|
{
|
|
|
|
|
this.FDD = "6";
|
|
|
|
|
//6度分带
|
|
|
|
|
//combFD.SelectedIndex = 1;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
this.FDD = "0";
|
|
|
|
|
}
|
|
|
|
|
//获取中央经线
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
this.ZYJD = "0";
|
|
|
|
|
beginstr = "Central_Meridian";
|
|
|
|
|
leftindex = spatialrefstr.IndexOf(beginstr) + beginstr.Length;
|
|
|
|
|
if (leftindex > beginstr.Length)
|
|
|
|
|
{
|
|
|
|
|
spatialrefrightstr = spatialrefstr.Substring(leftindex);
|
|
|
|
|
length = spatialrefrightstr.IndexOf("]");
|
|
|
|
|
double p1 = double.Parse(spatialrefrightstr.Substring(0, length).Split(',')[1]);
|
|
|
|
|
this.ZYJD = p1.ToTrim();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex1)
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug("新建工程 页面 中 设置项目坐标系 过程中 获取中央经线 时失败,异常原因: " + ex1 + " ; ");
|
|
|
|
|
}
|
|
|
|
|
//获取图形带号
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
string str_spTXDH = "0";
|
|
|
|
|
this.TXDH = "0";
|
|
|
|
|
beginstr = "False_Easting";
|
|
|
|
|
leftindex = spatialrefstr.IndexOf(beginstr) + beginstr.Length;
|
|
|
|
|
if (leftindex > beginstr.Length)
|
|
|
|
|
{
|
|
|
|
|
spatialrefrightstr = spatialrefstr.Substring(leftindex);
|
|
|
|
|
length = spatialrefrightstr.IndexOf("]");
|
|
|
|
|
string p7 = spatialrefrightstr.Substring(0, length).Split(',')[1];
|
|
|
|
|
//原方法强行转化有问题
|
|
|
|
|
//spTXDH.Text = int.Parse(p7.Replace("500000.0", "")).ToString();
|
|
|
|
|
string sTemp_1 = p7.Replace("500000.0", "");
|
|
|
|
|
int iTemp_1;
|
|
|
|
|
if (ExtendMethd.JudgeIsCouldConversionInt(sTemp_1) == true)
|
|
|
|
|
{
|
|
|
|
|
iTemp_1 = int.Parse(sTemp_1);
|
|
|
|
|
str_spTXDH = iTemp_1.ToString();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
str_spTXDH = "0";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
str_spTXDH = "0";
|
|
|
|
|
}
|
|
|
|
|
this.TXDH = str_spTXDH;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex2)
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug("新建工程 页面 中 设置项目坐标系 过程中 获取图形带号 时失败,异常原因: " + ex2 + " ; ");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 设置监测图斑图层
|
|
|
|
|
/// </summary>
|
|
|
|
|
private void SetJCTBLayer2()
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
object GroupLayerInfo = null;
|
|
|
|
|
IFeatureLayer featureLayer = MapsManager.Instance.MapService.GetFeatureLayerByName("DLTB");
|
|
|
|
|
if (MapsManager.Instance.MapService.GetFeatureLayerByName("JCTB") == null && featureLayer != null)
|
|
|
|
|
{
|
|
|
|
|
IWorkspaceAPI wsAPI = new WorkspaceAPI(ProjectInfo.JCDatabase, WorkspaceTypeEnum.GDBFile);
|
|
|
|
|
GeoDBAPI.SetGeoDatasetSpatialReference(wsAPI.CurrentWorkspace, (featureLayer.FeatureClass as IGeoDataset).SpatialReference, 0.0001);
|
|
|
|
|
ILayer groupLayer = MapsManager.Instance.MapService.GetGroupLayer("JCTBSJ");
|
|
|
|
|
if (groupLayer == null)
|
|
|
|
|
{
|
|
|
|
|
groupLayer = new GroupLayer() { Name = "监测数据" };
|
|
|
|
|
ILayerGeneralProperties layerGeneralProperties = groupLayer as ILayerGeneralProperties;
|
|
|
|
|
layerGeneralProperties.LayerDescription = "JCTBSJ";
|
|
|
|
|
GroupLayerInfo = _DataCatalog.AddLayer(groupLayer);
|
|
|
|
|
}
|
|
|
|
|
if (GroupLayerInfo == null)
|
|
|
|
|
GroupLayerInfo = _DataCatalog.GetNodeByLayer(groupLayer);
|
|
|
|
|
IFeatureClassAPI jctbFcAPI = wsAPI.OpenFeatureClass("JCTB");
|
|
|
|
|
IFeatureLayer JcTBLayer = new FeatureLayer() { Name = "国家监测图斑", FeatureClass = jctbFcAPI.FeatureClass };
|
|
|
|
|
if (JcTBLayer is IFeatureLayerDefinition pFLDefinition)
|
|
|
|
|
{
|
|
|
|
|
pFLDefinition.DefinitionExpression = "SJLY='GJJC'";
|
|
|
|
|
}
|
|
|
|
|
_DataCatalog.AddLayer(JcTBLayer, GroupLayerInfo);
|
|
|
|
|
IFeatureLayer ZZBGTBLayer = new FeatureLayer() { Name = "自主变更图斑", FeatureClass = jctbFcAPI.FeatureClass };
|
|
|
|
|
pFLDefinition = ZZBGTBLayer as IFeatureLayerDefinition;
|
|
|
|
|
if (pFLDefinition != null)
|
|
|
|
|
{
|
|
|
|
|
pFLDefinition.DefinitionExpression = "SJLY='ZZBG'";
|
|
|
|
|
}
|
|
|
|
|
_DataCatalog.AddLayer(ZZBGTBLayer, GroupLayerInfo);
|
|
|
|
|
if (groupLayer != null) Marshal.ReleaseComObject(groupLayer);
|
|
|
|
|
Marshal.ReleaseComObject(groupLayer);
|
|
|
|
|
Marshal.ReleaseComObject(featureLayer);
|
|
|
|
|
if (wsAPI != null) wsAPI.CloseWorkspace();//释放资源
|
|
|
|
|
}
|
|
|
|
|
if (MapsManager.Instance.MapService.GetFeatureLayerByName("DLTBBG") == null)
|
|
|
|
|
{
|
|
|
|
|
GroupLayerInfo = null;
|
|
|
|
|
IWorkspaceAPI wsAPI = new WorkspaceAPI(ProjectInfo.BGDatabase, WorkspaceTypeEnum.GDBFile);
|
|
|
|
|
ILayer groupLayer = MapsManager.Instance.MapService.GetGroupLayer("BGSJ"); //new GroupLayer() { Name = "变更数据" };
|
|
|
|
|
if (groupLayer == null)
|
|
|
|
|
{
|
|
|
|
|
groupLayer = new GroupLayer() { Name = "变更数据" };
|
|
|
|
|
ILayerGeneralProperties layerGeneralProperties = groupLayer as ILayerGeneralProperties;
|
|
|
|
|
layerGeneralProperties.LayerDescription = "BGSJ";
|
|
|
|
|
GroupLayerInfo = _DataCatalog.AddLayer(groupLayer);
|
|
|
|
|
}
|
|
|
|
|
if (GroupLayerInfo == null)
|
|
|
|
|
GroupLayerInfo = _DataCatalog.GetNodeByLayer(groupLayer);
|
|
|
|
|
IFeatureClassAPI bgtbFcAPI = wsAPI.OpenFeatureClass("DLTBBG");
|
|
|
|
|
IFeatureLayer tempLayer = new FeatureLayer() { Name = "变更范围", FeatureClass = bgtbFcAPI.FeatureClass };
|
|
|
|
|
SetILayerSymbol(tempLayer, "DLTBBG");
|
|
|
|
|
_DataCatalog.AddLayer(tempLayer, GroupLayerInfo);
|
|
|
|
|
_DataCatalog.UpdateTree();
|
|
|
|
|
System.Windows.Forms.Application.DoEvents();//处理当前交互产生的延迟过程(后续可优化数据绑定逻辑)
|
|
|
|
|
Marshal.ReleaseComObject(groupLayer);
|
|
|
|
|
if (wsAPI != null) wsAPI.CloseWorkspace();//释放资源
|
|
|
|
|
Platform.Instance.SendMsg(new KGIS.Framework.Utils.Interface.NotifyMsgPackage() { Content = Platform.Instance.SystemType, MsgType = "LoadDTBViewData" });
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug("配置监测变更图层失败:" + ex.Message);
|
|
|
|
|
MessageHelper.ShowTips("" + ex.Message);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void SetILayerSymbol(IFeatureLayer tempLayer, string LayerAliseName)
|
|
|
|
|
{
|
|
|
|
|
IFeatureRenderer result = null;
|
|
|
|
|
ISystemCfg cfg2 = BundleRuntime.Instance.GetFirstOrDefaultService<ISystemCfg>();
|
|
|
|
|
SystemCfg = cfg2.Load();
|
|
|
|
|
if (SystemCfg.BGLayerLoadCfg == null)
|
|
|
|
|
{
|
|
|
|
|
SystemCfg.BGLayerLoadCfg = new List<LayerCfg>();
|
|
|
|
|
}
|
|
|
|
|
LayerCfg layerCfg = SystemCfg.BGLayerLoadCfg.FirstOrDefault(x => x.FcName == LayerAliseName);//默认配置默认不为NULL
|
|
|
|
|
if (layerCfg != null && !string.IsNullOrWhiteSpace(layerCfg.Symbol))
|
|
|
|
|
{
|
|
|
|
|
AdvancedDrawingInfo ad = AdvancedDrawingInfo.FromJson(layerCfg.Symbol);
|
|
|
|
|
if (ad != null)
|
|
|
|
|
{
|
|
|
|
|
if (ad.DrawingInfo.Renderer is Framework.LayerStyleConvert.XSDClass.SimpleRenderer)
|
|
|
|
|
{
|
|
|
|
|
Symbol symbol1 = (ad.DrawingInfo.Renderer as Framework.LayerStyleConvert.XSDClass.SimpleRenderer).Symbol;
|
|
|
|
|
ISimpleRenderer simpleRander2 = SymbolConvert.Instance().GetSimpleRenderer(symbol1, SymbolTypeEnum.Fill);
|
|
|
|
|
result = simpleRander2 as IFeatureRenderer;
|
|
|
|
|
}
|
|
|
|
|
else if (ad.DrawingInfo.Renderer is Framework.LayerStyleConvert.XSDClass.UniqueValueRenderer)
|
|
|
|
|
{
|
|
|
|
|
Renderer rander = ad.DrawingInfo.Renderer;
|
|
|
|
|
IUniqueValueRenderer uniqueValueRander = SymbolConvert.Instance().GetUniqueValueRenderer(rander, SymbolTypeEnum.Fill);
|
|
|
|
|
result = uniqueValueRander as IFeatureRenderer;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#region 样式
|
|
|
|
|
if (result != null)
|
|
|
|
|
(tempLayer as IGeoFeatureLayer).Renderer = result;
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region 显示比例设置
|
|
|
|
|
tempLayer.MinimumScale = layerCfg.MinScale;
|
|
|
|
|
tempLayer.MaximumScale = layerCfg.MaxScale;
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region 图层透明度
|
|
|
|
|
if (tempLayer is ILayerEffects mLayerEffects)//透明度
|
|
|
|
|
mLayerEffects.Transparency = (short)layerCfg.Transparency;
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region 是否显示
|
|
|
|
|
tempLayer.Visible = layerCfg.Visible;//是否显示
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region 是否可选择
|
|
|
|
|
tempLayer.Selectable = layerCfg.Selectable;
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region 过滤条件
|
|
|
|
|
IFeatureLayerDefinition pFLDefinition = tempLayer as IFeatureLayerDefinition;
|
|
|
|
|
if (pFLDefinition != null)
|
|
|
|
|
{
|
|
|
|
|
pFLDefinition.DefinitionExpression = layerCfg.DefinitionExpression;
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#region 全图展示
|
|
|
|
|
public bool RoomToMap(IMap pMap)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (pMap == null)
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
IActiveView pActiveView = pMap as IActiveView;
|
|
|
|
|
double minValue = double.MinValue;
|
|
|
|
|
double maxValue = double.MaxValue;
|
|
|
|
|
double dlYMax = double.MinValue;
|
|
|
|
|
double dlYMin = double.MaxValue;
|
|
|
|
|
ILayer pLayer = null;
|
|
|
|
|
for (int i = 0; i < pMap.LayerCount; i++)
|
|
|
|
|
{
|
|
|
|
|
pLayer = pMap.get_Layer(i);
|
|
|
|
|
if (pLayer is ICompositeLayer)
|
|
|
|
|
{
|
|
|
|
|
GetCompositeLayerSideCoordinate(pLayer as ICompositeLayer, ref minValue, ref maxValue, ref dlYMax, ref dlYMin);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
GetLayerSideCoordinate(pLayer, ref minValue, ref maxValue, ref dlYMax, ref dlYMin);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if ((((minValue == double.MinValue) && (maxValue == double.MaxValue)) && (dlYMax == double.MinValue)) && (dlYMin == double.MaxValue))
|
|
|
|
|
{
|
|
|
|
|
pActiveView.Extent = pActiveView.FullExtent;
|
|
|
|
|
PartialRefresh(pActiveView);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
IEnvelope pGeometry = new EnvelopeClass();//GetEnvByCoor(minValue, maxValue, dlYMax, dlYMin);
|
|
|
|
|
pGeometry.XMax = minValue;
|
|
|
|
|
pGeometry.XMin = maxValue;
|
|
|
|
|
pGeometry.YMax = dlYMax;
|
|
|
|
|
pGeometry.YMin = dlYMin;
|
|
|
|
|
|
|
|
|
|
LocateGeometry(pActiveView, pGeometry, 0.2);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug("全图展示异常:" + ex);
|
|
|
|
|
throw ex;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
private bool GetCompositeLayerSideCoordinate(ICompositeLayer pCompositeLayer, ref double dlXMax, ref double dlXMin, ref double dlYMax, ref double dlYMin)
|
|
|
|
|
{
|
|
|
|
|
if (pCompositeLayer == null)
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
for (int i = 0; i < pCompositeLayer.Count; i++)
|
|
|
|
|
{
|
|
|
|
|
ILayer pLayer = pCompositeLayer.get_Layer(i);
|
|
|
|
|
if (pLayer is ICompositeLayer)
|
|
|
|
|
{
|
|
|
|
|
if (!GetCompositeLayerSideCoordinate(pLayer as ICompositeLayer, ref dlXMax, ref dlXMin, ref dlYMax, ref dlYMin))
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else if (!GetLayerSideCoordinate(pLayer, ref dlXMax, ref dlXMin, ref dlYMax, ref dlYMin))
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
private bool GetLayerSideCoordinate(ILayer pLayer, ref double dlXMax, ref double dlXMin, ref double dlYMax, ref double dlYMin)
|
|
|
|
|
{
|
|
|
|
|
if (pLayer == null || !pLayer.Valid)
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
if (pLayer.Name.ToUpper() == "DEFAULT")
|
|
|
|
|
return true;
|
|
|
|
|
if (pLayer is ITable)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if ((pLayer as ITable).RowCount(null) == 0)
|
|
|
|
|
{
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
IEnvelope areaOfInterest = pLayer.AreaOfInterest;
|
|
|
|
|
if (areaOfInterest != null)
|
|
|
|
|
{
|
|
|
|
|
dlXMax = Math.Max(dlXMax, areaOfInterest.XMax);
|
|
|
|
|
dlXMin = Math.Min(dlXMin, areaOfInterest.XMin);
|
|
|
|
|
dlYMax = Math.Max(dlYMax, areaOfInterest.YMax);
|
|
|
|
|
dlYMin = Math.Min(dlYMin, areaOfInterest.YMin);
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
public bool LocateGeometry(IActiveView pActiveView, IGeometry pGeometry, double dblRatio)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if ((pGeometry == null) || (pActiveView == null))
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
if (pGeometry.IsEmpty)
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
if ((pGeometry is IPoint) || (pGeometry is IMultipoint))
|
|
|
|
|
{
|
|
|
|
|
ITopologicalOperator @operator = pGeometry as ITopologicalOperator;
|
|
|
|
|
@operator.Simplify();
|
|
|
|
|
pGeometry = @operator.Buffer(100.0);
|
|
|
|
|
}
|
|
|
|
|
IEnvelope envelope = pGeometry.Envelope;
|
|
|
|
|
IPoint p = new PointClass();
|
|
|
|
|
if (envelope != null)
|
|
|
|
|
{
|
|
|
|
|
p.X = (envelope.XMin + envelope.XMax) / 2.0;
|
|
|
|
|
p.Y = (envelope.YMin + envelope.YMax) / 2.0;
|
|
|
|
|
}
|
|
|
|
|
double num = pActiveView.Extent.Width / pActiveView.Extent.Height;
|
|
|
|
|
double num2 = envelope.Width / envelope.Height;
|
|
|
|
|
if (num > num2)
|
|
|
|
|
{
|
|
|
|
|
envelope.Width = envelope.Height * num;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
envelope.Height = envelope.Width / num;
|
|
|
|
|
}
|
|
|
|
|
envelope.Expand(1.0 + dblRatio, 1.0 + dblRatio, true);
|
|
|
|
|
envelope.CenterAt(p);
|
|
|
|
|
if (envelope.SpatialReference != pActiveView.FocusMap.SpatialReference)
|
|
|
|
|
{
|
|
|
|
|
envelope.Project(pActiveView.FocusMap.SpatialReference);
|
|
|
|
|
}
|
|
|
|
|
pActiveView.Extent = envelope;
|
|
|
|
|
//pActiveView.Extent.PutCoords(envelope.XMin, envelope.YMin, envelope.XMax, envelope.YMax);
|
|
|
|
|
PartialRefresh(pActiveView);
|
|
|
|
|
pActiveView.ScreenDisplay.UpdateWindow();
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception)
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public bool PartialRefresh(IActiveView pActiveView)
|
|
|
|
|
{
|
|
|
|
|
if (pActiveView == null)
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
PartialRefresh(pActiveView, esriViewDrawPhase.esriViewForeground | esriViewDrawPhase.esriViewGraphicSelection | esriViewDrawPhase.esriViewGraphics | esriViewDrawPhase.esriViewGeoSelection | esriViewDrawPhase.esriViewGeography | esriViewDrawPhase.esriViewBackground);
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
public bool PartialRefresh(IActiveView pActiveView, esriViewDrawPhase enumViewDrawPhase)
|
|
|
|
|
{
|
|
|
|
|
if (pActiveView == null)
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
pActiveView.PartialRefresh(enumViewDrawPhase, null, pActiveView.Extent);
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region 缩放至基础地类图斑
|
|
|
|
|
private void ZoomToJCDLTB()
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (hookHelper == null)
|
|
|
|
|
return;
|
|
|
|
|
object layer = MapsManager.Instance.MapService.GetFeatureLayerByLayerName("基础_地类图斑");
|
|
|
|
|
if (layer is ILayer)
|
|
|
|
|
{
|
|
|
|
|
if (hookHelper.Hook is IPageLayoutControlDefault)
|
|
|
|
|
{
|
|
|
|
|
IActiveView activeView = hookHelper.ActiveView;
|
|
|
|
|
IDisplayTransformation displayTransformation = activeView.ScreenDisplay.DisplayTransformation;
|
|
|
|
|
displayTransformation.VisibleBounds = (layer as ILayer).AreaOfInterest;
|
|
|
|
|
hookHelper.ActiveView.Refresh();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
this.hookHelper.ActiveView.Extent = (layer as ILayer).AreaOfInterest;
|
|
|
|
|
}
|
|
|
|
|
this.hookHelper.ActiveView.Refresh();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug("ZoomToJCDLTB异常:" + ex.Message);
|
|
|
|
|
LogAPI.Debug("ZoomToJCDLTB异常:" + ex.StackTrace);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|