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.
262 lines
11 KiB
262 lines
11 KiB
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.DBOperator; |
|
using KGIS.Framework.Maps; |
|
using KGIS.Framework.Utils; |
|
using KGIS.Framework.Utils.Helper; |
|
using KGIS.Framework.Views; |
|
using Kingo.PluginServiceInterface; |
|
using Kingo.PluginServiceInterface.Model; |
|
using stdole; |
|
using System; |
|
using System.Collections.Generic; |
|
using System.Data; |
|
using System.Linq; |
|
using System.Text; |
|
using System.Windows.Controls; |
|
using System.Windows.Input; |
|
|
|
namespace Kingo.Plugin.General.View |
|
{ |
|
/// <summary> |
|
/// UCSHBZSketch.xaml 的交互逻辑 |
|
/// </summary> |
|
public partial class UCSHBZSketch : UserControl, IElementInfo |
|
{ |
|
private IHookHelper hookHelper { get; set; } |
|
private NYYSInfo NYYSInfo { get; set; } |
|
private TaskPackage taskPackage { get; set; } |
|
public UCSHBZSketch() |
|
{ |
|
InitializeComponent(); |
|
Title = "审核标注草图"; |
|
DevExpress.Xpf.Core.ThemeManager.SetTheme(this, DevExpress.Xpf.Core.Theme.Office2013LightGray); |
|
NYYSInfo = new NYYSInfo(); |
|
this.DataContext = NYYSInfo; |
|
this.Loaded += (s, e) => |
|
{ |
|
hookHelper = new HookHelperClass(); |
|
hookHelper.Hook = MapsManager.Instance.MapService.getAxMapControl().Object; |
|
}; |
|
} |
|
public bool IsShow { get; set; } |
|
public int ShowIndex { get; set; } |
|
public bool ResetSize { get; set; } |
|
public bool AllowEdit { get; set; } |
|
public Guid ID { get; set; } |
|
public DockStyle DockAreas { get; set; } |
|
public System.Drawing.Size FloatSize { get; set; } |
|
public int DockWidth { get; set; } |
|
public int DockHeight { get; set; } |
|
public DockStyle DefaultArea { get; set; } |
|
public bool ShowCloseButton { get; set; } |
|
public bool ShowAutoHideButton { get; set; } |
|
public string Title { get; set; } |
|
public void BindData(object obj) |
|
{ |
|
dgSHBZSketch.ItemsSource = null; |
|
IWorkspaceAPI workspaceAPI = null; |
|
IRDBHelper rdbHelper = null; |
|
try |
|
{ |
|
NYYSInfo nYYSInfo = obj as NYYSInfo; |
|
if (nYYSInfo == null) return; |
|
this.NYYSInfo = nYYSInfo; |
|
taskPackage = nYYSInfo.TaskPackages; |
|
if (taskPackage == null || taskPackage.PackageTempPath == null || !System.IO.File.Exists(taskPackage.PackageTempPath)) return; |
|
rdbHelper = RDBFactory.CreateDbHelper($"{taskPackage.PackageTempPath}{(MapsManager.Instance.CurrProjectInfo as ProjectInfo).Pathpassword}", DatabaseType.SQLite); |
|
//审核标注 |
|
DataTable dataTable = rdbHelper.ExecuteDatatable("SJSHBZ", $"select * from SJSHBZ ", true); |
|
if (dataTable == null || dataTable.Rows.Count <= 0) |
|
nYYSInfo.SHBZSketch = new List<SHBZSketch>(); |
|
else |
|
this.NYYSInfo.SHBZSketch = KGIS.Framework.Utils.Utility.TBToList.ToList<SHBZSketch>(dataTable); |
|
|
|
dgSHBZSketch.ItemsSource = this.NYYSInfo.SHBZSketch; |
|
} |
|
catch (Exception ex) |
|
{ |
|
LogAPI.Debug("审核标注绑定数据异常:" + ex.Message); |
|
LogAPI.Debug("审核标注绑定数据异常:" + ex); |
|
LogAPI.Debug("审核标注绑定数据异常:" + ex.StackTrace); |
|
throw ex; |
|
} |
|
finally |
|
{ |
|
if (rdbHelper != null) |
|
{ |
|
rdbHelper.DisConnect(); |
|
} |
|
if (workspaceAPI != null) |
|
{ |
|
workspaceAPI.CloseWorkspace(); |
|
} |
|
} |
|
} |
|
|
|
public void SaveEdit() |
|
{ |
|
|
|
} |
|
public static IElement TextElement(IGeometry pGeometry, string textLabel) |
|
{ |
|
IRgbColor pColor = new RgbColorClass() |
|
{ |
|
Red = 0, |
|
Blue = 255, |
|
Green = 0 |
|
}; |
|
IFontDisp pFont = new StdFont() |
|
{ |
|
Name = "宋体", |
|
Size = 12 |
|
} as IFontDisp; |
|
|
|
ITextSymbol pTextSymbol = new TextSymbolClass() |
|
{ |
|
Color = pColor, |
|
Font = pFont, |
|
Size = 12 |
|
}; |
|
IGeometry geometry = pGeometry; |
|
switch (geometry.GeometryType) |
|
{ |
|
case esriGeometryType.esriGeometryPolygon: |
|
geometry = (pGeometry as IArea).Centroid; |
|
break; |
|
} |
|
IElement pTextElment = new TextElementClass() |
|
{ |
|
Symbol = pTextSymbol, |
|
ScaleText = true, |
|
Text = textLabel, |
|
Geometry = geometry |
|
}; |
|
return pTextElment; |
|
} |
|
|
|
public static IElement PolygonElement(IGeometry pGeometry) |
|
{ |
|
IElement pElement = new PolygonElementClass(); |
|
//填充符号设置 |
|
ISimpleFillSymbol pSimpleFillSymbol = new SimpleFillSymbolClass(); |
|
//填充符号的边框设置 |
|
ILineSymbol pLineSymbol = new SimpleLineSymbolClass(); |
|
IRgbColor pRgbColol = new RgbColorClass(); |
|
pRgbColol.Red = 0; |
|
pRgbColol.Green = 0; |
|
pRgbColol.Blue = 110; |
|
pLineSymbol.Color = pRgbColol; |
|
pLineSymbol.Width = 1; |
|
pSimpleFillSymbol.Outline = pLineSymbol; |
|
//填充符号颜色 |
|
pRgbColol = new RgbColorClass(); |
|
pRgbColol.Red = 229; |
|
pRgbColol.Green = 103; |
|
pRgbColol.Blue = 102; |
|
pSimpleFillSymbol.Color = pRgbColol; |
|
pSimpleFillSymbol.Style = esriSimpleFillStyle.esriSFSCross; //.esriSFSBackwardDiagonal; |
|
//面元素设置 |
|
IFillShapeElement pFillShapeElement = (IFillShapeElement)pElement; |
|
pFillShapeElement.Symbol = pSimpleFillSymbol; |
|
pElement.Geometry = pGeometry; |
|
return pElement; |
|
} |
|
|
|
private void LocationBZ(SHBZSketch wySketch) |
|
{ |
|
IPointCollection poly2 = new PolygonClass(); |
|
IGeometry tempgeometry = null; |
|
try |
|
{ |
|
MapsManager.Instance.MapService.ClearFeatureSelection(this.hookHelper.Hook as IMapControlDefault); |
|
//this.hookHelper.ActiveView.GraphicsContainer.DeleteAllElements(); |
|
ESRI.ArcGIS.Geometry.IGeometry geometry = null; |
|
switch (wySketch.BZLX) |
|
{ |
|
case "1":// "点" |
|
geometry = GeometryConvertHelper.ConverJsonToIGeoemtry(wySketch.Geometry, ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPoint); |
|
using (ESRI.ArcGIS.ADF.ComReleaser comReleaser = new ESRI.ArcGIS.ADF.ComReleaser()) |
|
{ |
|
ESRI.ArcGIS.esriSystem.IJSONReader reader = new ESRI.ArcGIS.esriSystem.JSONReaderClass(); |
|
comReleaser.ManageLifetime(reader); |
|
reader.ReadFromString(wySketch.Geometry); |
|
ESRI.ArcGIS.Geometry.JSONConverterGeometryClass jsonConverter = new JSONConverterGeometryClass(); |
|
comReleaser.ManageLifetime(jsonConverter); |
|
ISpatialReference spatialReference = jsonConverter.ReadSpatialReference(reader); |
|
if (geometry.SpatialReference == null) |
|
{ |
|
geometry.SpatialReference = spatialReference; |
|
} |
|
else |
|
geometry.Project(spatialReference); |
|
} |
|
MapsManager.Instance.MapService.DrawGraph(geometry, true); |
|
MapsManager.Instance.MapService.Zoom(geometry); |
|
//为了实现地图界面放大效果 |
|
if (geometry != null && !geometry.IsEmpty) |
|
{ |
|
poly2.AddPoint(new PointClass() { X = geometry.Envelope.XMin - 10, Y = geometry.Envelope.YMax + 10 }); |
|
poly2.AddPoint(new PointClass() { X = geometry.Envelope.XMax + 10, Y = geometry.Envelope.YMax + 10 }); |
|
poly2.AddPoint(new PointClass() { X = geometry.Envelope.XMax + 10, Y = geometry.Envelope.YMin - 10 }); |
|
poly2.AddPoint(new PointClass() { X = geometry.Envelope.XMin - 10, Y = geometry.Envelope.YMin - 10 }); |
|
poly2.AddPoint(new PointClass() { X = geometry.Envelope.XMin - 10, Y = geometry.Envelope.YMax + 10 }); |
|
tempgeometry = poly2 as IGeometry; |
|
MapsManager.Instance.MapService.Zoom(tempgeometry); |
|
} |
|
break; |
|
case "2"://"线" |
|
geometry = GeometryConvertHelper.ConverJsonToIGeoemtry(wySketch.Geometry, ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolyline); |
|
geometry.Project(MapsManager.Instance.MapService.getAxMapControl().SpatialReference); |
|
break; |
|
case "3"://"面" |
|
geometry = GeometryConvertHelper.ConverJsonToIGeoemtry(wySketch.Geometry); |
|
geometry.Project(MapsManager.Instance.MapService.getAxMapControl().SpatialReference); |
|
break; |
|
} |
|
if (wySketch.BZLX != "1" && geometry != null) |
|
{ |
|
MapsManager.Instance.MapService.DrawGraph(geometry, true); |
|
MapsManager.Instance.MapService.Zoom(geometry); |
|
} |
|
if (!string.IsNullOrWhiteSpace(wySketch.BZMS) && geometry != null) |
|
MapsManager.Instance.MapService.getAxMapControl().ActiveView.GraphicsContainer.AddElement(TextElement(geometry, wySketch.BZMS), 1); |
|
|
|
} |
|
catch (Exception ex) |
|
{ |
|
MessageHelper.ShowError("绘制图形失败:" + ex.Message); |
|
LogAPI.Debug("绘制图形失败:" + ex.Message); |
|
LogAPI.Debug("绘制图形失败:" + ex.StackTrace); |
|
} |
|
finally |
|
{ |
|
System.Runtime.InteropServices.Marshal.ReleaseComObject(poly2); |
|
if (tempgeometry != null) |
|
System.Runtime.InteropServices.Marshal.ReleaseComObject(tempgeometry); |
|
} |
|
} |
|
|
|
private void dgSHBZSketch_PreviewMouseDoubleClick(object sender, MouseButtonEventArgs e) |
|
{ |
|
try |
|
{ |
|
if ((sender as KUI.PagingDataGrid) == null || (sender as KUI.PagingDataGrid).CurrentCell == null || (sender as KUI.PagingDataGrid).CurrentCell.Item == null || ((sender as KUI.PagingDataGrid).CurrentCell.Item as SHBZSketch) == null) |
|
{ |
|
return; |
|
} |
|
SHBZSketch wySketch = (SHBZSketch)(sender as KUI.PagingDataGrid).CurrentCell.Item; |
|
LocationBZ(wySketch); |
|
} |
|
catch (Exception ex) |
|
{ |
|
MessageHelper.ShowError("定位失败:" + ex.Message); |
|
} |
|
} |
|
} |
|
}
|
|
|