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.
2713 lines
136 KiB
2713 lines
136 KiB
using DevExpress.Xpf.Editors.Settings; |
|
using DevExpress.Xpf.Grid; |
|
using ESRI.ArcGIS.Carto; |
|
using ESRI.ArcGIS.DataSourcesGDB; |
|
using ESRI.ArcGIS.Geodatabase; |
|
using ESRI.ArcGIS.Geometry; |
|
using KGIS.Framework.AE; |
|
using KGIS.Framework.AE.ExtensionMethod; |
|
using KGIS.Framework.AE.GPHelper; |
|
using KGIS.Framework.Maps; |
|
using KGIS.Framework.OpenData.Control; |
|
using KGIS.Framework.Platform; |
|
using KGIS.Framework.Utils; |
|
using KGIS.Framework.Utils.ExtensionMethod; |
|
using KGIS.Framework.Utils.Helper; |
|
using KGIS.Plugin.BoundaryReadjust; |
|
using Kingo.Plugin.BoundaryReadjust.EntityModel; |
|
using Kingo.PluginServiceInterface; |
|
using KUI.Windows; |
|
using System; |
|
using System.Collections.Generic; |
|
using System.Data; |
|
using System.IO; |
|
using System.Linq; |
|
using System.Runtime.InteropServices; |
|
using System.Text; |
|
using System.Windows; |
|
using System.Windows.Controls; |
|
|
|
namespace Kingo.Plugin.BoundaryReadjust.View |
|
{ |
|
/// <summary> |
|
/// 区划调整页面视图逻辑 的交互逻辑 |
|
/// </summary> |
|
public partial class UCRegionAdjust : BaseWindow |
|
{ |
|
/// <summary> |
|
/// 新县级控制界限 |
|
/// </summary> |
|
private IFeatureClass New_XJKZJX_FC = null; |
|
private IFeatureLayer New_XJXZQJX_Layer = null; |
|
private IFeatureLayer XJJXTQTB_Layer = null; |
|
/// <summary> |
|
/// 新增/划入数据 |
|
/// </summary> |
|
private IFeatureLayer XZDLTB_Layer = null; |
|
/// <summary> |
|
/// 基础_地类图斑 |
|
/// </summary> |
|
private IFeatureLayer JCDLTB_Layer = null; |
|
/// <summary> |
|
/// 基础_城镇村 |
|
/// </summary> |
|
private IFeatureLayer JCCZC_Layer = null; |
|
private IFeatureLayer YSDLTBLayer = null; |
|
/// <summary> |
|
/// 基础地类图斑API_FC |
|
/// </summary> |
|
private IFeatureClassAPI FcAPI_JC_DLTB { get; set; } |
|
/// <summary> |
|
/// 基础行政区API_FC |
|
/// </summary> |
|
private IFeatureClassAPI FcAPI_JC_XZQ { get; set; } |
|
/// <summary> |
|
/// 县级控制界限API_FC |
|
/// </summary> |
|
private IFeatureClassAPI FcAPI_XJKZJX { get; set; } |
|
private IFeatureClassAPI FcAPI_XJJXTQTB { get; set; } |
|
/// <summary> |
|
/// 地类图斑变更API_FC |
|
/// </summary> |
|
private IFeatureClassAPI FcAPI_DLTBBG { get; set; } |
|
/// <summary> |
|
/// 地类图斑划入过程FcAPI_DLTBHRGC |
|
/// </summary> |
|
private IFeatureClassAPI FcAPI_DLTBHRGC { get; set; } |
|
/// <summary> |
|
/// 县级控制界限图斑 |
|
/// </summary> |
|
private IGeometry XJKZJX_IGeo { get; set; } |
|
/// <summary> |
|
/// 当前工程信息 |
|
/// </summary> |
|
public static ProjectInfo ProjectInfo = MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo; |
|
/// <summary> |
|
/// 基础库工作空间 |
|
/// </summary> |
|
private WorkspaceAPI JcWsAPI { get; set; } |
|
/// <summary> |
|
/// 县级控制界限Union基础行政区 |
|
/// </summary> |
|
private IFeatureLayer tempKZJXUnionxzqLayer = null; |
|
/// <summary> |
|
/// 视图数据 |
|
/// </summary> |
|
private List<DataModel> Data { get; set; } |
|
/// <summary> |
|
/// 变更视图数据 |
|
/// </summary> |
|
private List<DataModel> SaveDatas { get; set; } |
|
/// <summary> |
|
/// 提取图斑视图数据 |
|
/// </summary> |
|
private DataTable IntoData { get; set; } |
|
/// <summary> |
|
/// 坐落单位字典 |
|
/// </summary> |
|
private List<DataDicTionary> ZLDMdataDic = null; |
|
public UCRegionAdjust() |
|
{ |
|
try |
|
{ |
|
InitializeComponent(); |
|
DevExpress.Xpf.Core.ThemeManager.SetTheme(this, DevExpress.Xpf.Core.Theme.Office2013LightGray); |
|
InitData(); |
|
//初始禁用新加数据 |
|
btnAddData.IsEnabled = false; |
|
btn.IsEnabled = false; |
|
} |
|
catch (Exception ex) |
|
{ |
|
LogAPI.Debug(ex); |
|
throw; |
|
} |
|
} |
|
|
|
/// <summary> |
|
/// 初始化数据 |
|
/// </summary> |
|
private void InitData() |
|
{ |
|
try |
|
{ |
|
New_XJKZJX_FC = MapsManager.Instance.MapService.GetFeatureClassByName("XJKZJX"); |
|
XJJXTQTB_Layer = MapsManager.Instance.MapService.GetFeatureLayerByName("XJJXTQTB"); |
|
if (XJJXTQTB_Layer != null) |
|
FcAPI_XJJXTQTB = new FeatureClassAPI(XJJXTQTB_Layer.FeatureClass); |
|
if (New_XJKZJX_FC != null) |
|
{ |
|
New_XJXZQJX_Layer = GeoDBAPI.CreateFeatureLayerInmemeory("XJKZJX", "新县级控制界线", (New_XJKZJX_FC as IGeoDataset).SpatialReference, New_XJKZJX_FC.ShapeType, New_XJKZJX_FC.Fields); |
|
JXTZBGHelper.InsertDataToMemeoryLayer(New_XJKZJX_FC, New_XJXZQJX_Layer.FeatureClass, null); |
|
} |
|
|
|
JCDLTB_Layer = MapsManager.Instance.MapService.GetFeatureLayerByLayerName("地类图斑"); |
|
IFeatureLayer JCXZQ_layer = MapsManager.Instance.MapService.GetFeatureLayerByLayerName("行政区"); |
|
JCCZC_Layer = MapsManager.Instance.MapService.GetFeatureLayerByLayerName("城镇村等用地"); |
|
if (JCDLTB_Layer != null) |
|
FcAPI_JC_DLTB = new FeatureClassAPI(JCDLTB_Layer.FeatureClass); |
|
if (JCXZQ_layer != null) |
|
FcAPI_JC_XZQ = new FeatureClassAPI(JCXZQ_layer.FeatureClass); |
|
if (JCDLTB_Layer != null && JCDLTB_Layer.FeatureClass.FindField("XZQTZLX") == -1) |
|
{ |
|
//添加字段 |
|
IFieldEdit _field = new FieldClass(); |
|
_field.Name_2 = "XZQTZLX"; |
|
_field.AliasName_2 = "行政区调整类型"; |
|
_field.Type_2 = esriFieldType.esriFieldTypeString; |
|
_field.Length_2 = 5; |
|
JCDLTB_Layer.FeatureClass.AddField(_field as IField); |
|
} |
|
|
|
if (YSDLTBLayer == null) |
|
YSDLTBLayer = MapsManager.Instance.MapService.GetFeatureLayerByName("YSDLTB"); |
|
IQueryFilter queryFilter = new QueryFilterClass() { WhereClause = "XZQTZLX is Null OR XZQTZLX =''" }; |
|
int fieldIndex = JCDLTB_Layer.FeatureClass.FindField("XZQTZLX"); |
|
if (fieldIndex > -1) |
|
{ |
|
IField field = JCDLTB_Layer.FeatureClass.Fields.Field[fieldIndex]; |
|
if (field.Type != esriFieldType.esriFieldTypeString) |
|
{ |
|
IFieldEdit fieldEdit = field as IFieldEdit; |
|
fieldEdit.Type_2 = esriFieldType.esriFieldTypeString; |
|
fieldEdit.Length_2 = 20; |
|
field = fieldEdit as IField; |
|
} |
|
} |
|
if (YSDLTBLayer != null && YSDLTBLayer.FeatureClass.FeatureCount(null) == 0)//不存在数据,则备份 |
|
FcAPI_JC_DLTB.FcToFc(YSDLTBLayer.FeatureClass, queryFilter, false);//避免原始地类图斑混淆数据 |
|
//JXTZBGHelper.InsertDataToMemeoryLayer(JCDLTB_Layer.FeatureClass, YSDLTBLayer.FeatureClass, queryFilter); |
|
if (JCCZC_Layer != null && JCCZC_Layer.FeatureClass.FindField("XZQTZLX") == -1) |
|
{ |
|
//添加字段 |
|
IFieldEdit _field = new FieldClass(); |
|
_field.Name_2 = "XZQTZLX"; |
|
_field.AliasName_2 = "行政区调整类型"; |
|
_field.Type_2 = esriFieldType.esriFieldTypeString; |
|
_field.Length_2 = 5; |
|
JCCZC_Layer.FeatureClass.AddField(_field as IField); |
|
} |
|
FcAPI_DLTBBG = new FeatureClassAPI(MapsManager.Instance.MapService.GetFeatureClassByName("DLTBBG")); |
|
FcAPI_DLTBHRGC = new FeatureClassAPI(MapsManager.Instance.MapService.GetFeatureClassByName("DLTBHRGC")); |
|
|
|
LoadData(true); |
|
if (XJJXTQTB_Layer != null) |
|
LoadXJJXTQTBToData(); |
|
|
|
if (ProjectInfo.KZMJ != null)//填充系统配置(平方米) |
|
{ |
|
txtTZQLDMJ.Text = ProjectInfo.KZMJ.TZQ_LDMJ.ToString(); |
|
txtTZHLDMJ.Text = ProjectInfo.KZMJ.TZH_LDMJ.ToString(); |
|
txtTZQHDMJ.Text = ProjectInfo.KZMJ.TZQ_HDMJ.ToString(); |
|
txtTZHHDMJ.Text = ProjectInfo.KZMJ.TZH_HDMJ.ToString(); |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
LogAPI.Debug(ex); |
|
throw; |
|
} |
|
} |
|
|
|
/// <summary> |
|
/// 加载视图数据 |
|
/// </summary> |
|
private void LoadData() |
|
{ |
|
IFeatureCursor cursor = null; |
|
IFeature xzqtqtbFeature = null; |
|
try |
|
{ |
|
if (FcAPI_DLTBHRGC.FeatureClass == null || FcAPI_DLTBHRGC.FeatureClass.FeatureCount(null) <= 0) return; |
|
IntoData = new DataTable();//从地类图斑图层取数据 |
|
ConstructColumn(FcAPI_DLTBHRGC.FeatureClass.Fields); |
|
IQueryFilter queryfilter = new QueryFilterClass |
|
{ |
|
WhereClause = string.Format("XZQTZLX='1' or XZQTZLX='2' or XZQTZLX='3' or XZQTZLX='4'") |
|
}; |
|
cursor = FcAPI_DLTBHRGC.FeatureClass.Search(queryfilter, true); |
|
int BGMJ = FcAPI_DLTBHRGC.FeatureClass.FindField("TBBGMJ"); |
|
int XZQLX = FcAPI_DLTBHRGC.FeatureClass.FindField("XZQTZLX"); |
|
double XZQLX1 = 0; |
|
double XZQLX2 = 0; |
|
double XZQLX3 = 0; |
|
double XZQLX4 = 0; |
|
while ((xzqtqtbFeature = cursor.NextFeature()) != null) |
|
{ |
|
if (string.IsNullOrWhiteSpace(xzqtqtbFeature.Value[BGMJ].ToTrim())) continue; |
|
if (xzqtqtbFeature.Value[XZQLX].ToTrim() == "1") |
|
XZQLX1 += Convert.ToDouble(xzqtqtbFeature.Value[BGMJ]); |
|
else if (xzqtqtbFeature.Value[XZQLX].ToTrim() == "2") |
|
XZQLX2 += Convert.ToDouble(xzqtqtbFeature.Value[BGMJ]); |
|
else if (xzqtqtbFeature.Value[XZQLX].ToTrim() == "3") |
|
XZQLX3 += Convert.ToDouble(xzqtqtbFeature.Value[BGMJ]); |
|
else if (xzqtqtbFeature.Value[XZQLX].ToTrim() == "4") |
|
XZQLX4 += Convert.ToDouble(xzqtqtbFeature.Value[BGMJ]); |
|
} |
|
cursor = null; |
|
cursor = FcAPI_DLTBHRGC.FeatureClass.Search(queryfilter, true); |
|
int lxIndex = (int)IntoData.Columns["XZQTZLX"].ExtendedProperties["index"]; |
|
while ((xzqtqtbFeature = cursor.NextFeature()) != null) |
|
{ |
|
DataRow dr = IntoData.NewRow(); |
|
bool IsInto = true; |
|
dr[0] = false; |
|
for (int i = 0; i < IntoData.Columns.Count; i++) |
|
{ |
|
if (i == 0) |
|
{ |
|
dr[i] = false; |
|
continue; |
|
} |
|
object obj = xzqtqtbFeature.get_Value((int)IntoData.Columns[i].ExtendedProperties["index"]); |
|
if (obj == null) |
|
{ |
|
continue; |
|
} |
|
else |
|
{ |
|
if (obj.ToString().Contains("1899/12/30 0:00:00")) |
|
{ |
|
obj = DBNull.Value; |
|
} |
|
} |
|
if (obj is string) |
|
obj = obj.ToString().Trim(); |
|
dr[i] = obj; |
|
} |
|
string XZQLXValue = xzqtqtbFeature.Value[XZQLX].ToTrim(); |
|
if (XZQLXValue == "1" && XZQLX1 != 0) |
|
dr[lxIndex] = xzqtqtbFeature.get_Value(lxIndex) + " " + $"总面积:{XZQLX1}"; |
|
else if (XZQLXValue == "2" && XZQLX2 != 0) |
|
dr[lxIndex] = xzqtqtbFeature.get_Value(lxIndex) + " " + $"总面积:{XZQLX2}"; |
|
else if (XZQLXValue == "3" && XZQLX3 != 0) |
|
dr[lxIndex] = xzqtqtbFeature.get_Value(lxIndex) + " " + $"总面积:{XZQLX3}"; |
|
else if (XZQLXValue == "4" && XZQLX4 != 0) |
|
dr[lxIndex] = xzqtqtbFeature.get_Value(lxIndex) + " " + $"总面积:{XZQLX4}"; |
|
if (IsInto) |
|
IntoData.Rows.Add(dr); |
|
Marshal.ReleaseComObject(xzqtqtbFeature); |
|
} |
|
dgInto2.ItemsSource = null; |
|
dgInto2.ItemsSource = IntoData; |
|
dgInto2.ClearGrouping(); |
|
dgInto2.GroupBy("XZQTZLX", true);//是否分组 |
|
|
|
//绑定权属字典 |
|
if (ZLDMdataDic == null) |
|
{ |
|
//List<DataDicTionary> dataDics = Platform.Instance.DicHelper.GetAllDic(); |
|
ZLDMdataDic = Platform.Instance.DicHelper.GetNoGroupDic(DicTypeEnum.QSDM); |
|
if (ZLDMdataDic == null) |
|
MessageHelper.Show("权属字典未生成!"); |
|
else |
|
ZLDMdataDic = ZLDMdataDic.Where(x => x.CODE.Length == 19).ToList(); |
|
} |
|
//cobZLDW.ItemsSource = ZLDMdataDic; |
|
//cobZLDW.DisplayMember = "NAME"; |
|
//cobZLDW.ValueMember = "CODE"; |
|
for (int i = 0; i < ZLDMdataDic.Count; i++) |
|
{ |
|
if (ZLDMdataDic.Count(x => x.CODE == ZLDMdataDic[i].CODE) == 2) |
|
{ |
|
ZLDMdataDic.Remove(ZLDMdataDic[i]); |
|
i--;//去重 |
|
} |
|
} |
|
|
|
BGQZL.ItemsSource = BingBGQZL(); |
|
BGHZL.ItemsSource = ZLDMdataDic; |
|
} |
|
catch (Exception ex) |
|
{ |
|
LogAPI.Debug("加载区划调整数据失败,异常信息如下:"); |
|
LogAPI.Debug(ex); |
|
MessageHelper.ShowError("加载区划调整数据失败:" + ex.Message); |
|
} |
|
} |
|
|
|
/// <summary> |
|
/// 自定义创建列加载DLTBHRGC数据 |
|
/// </summary> |
|
/// <param name="IsUSerDefinedFileds">是否由自定义字段加载数据</param> |
|
private void LoadData(bool IsUSerDefinedFileds = true) |
|
{ |
|
IFeatureCursor cursor = null; |
|
IFeature xzqtqtbFeature = null; |
|
try |
|
{ |
|
if (FcAPI_DLTBHRGC.FeatureClass == null || FcAPI_DLTBHRGC.FeatureClass.FeatureCount(null) <= 0) return; |
|
IntoData = new DataTable();//从地类图斑图层取数据 |
|
ConstructColumn(); |
|
IQueryFilter queryfilter = new QueryFilterClass |
|
{ |
|
WhereClause = string.Format("XZQTZLX='0' or XZQTZLX='1' or XZQTZLX='2' or XZQTZLX='3' or XZQTZLX='4'") |
|
}; |
|
cursor = FcAPI_DLTBHRGC.FeatureClass.Search(queryfilter, true); |
|
int BGMJ = FcAPI_DLTBHRGC.FeatureClass.FindField("TBBGMJ"); |
|
int XZQLX = FcAPI_DLTBHRGC.FeatureClass.FindField("XZQTZLX"); |
|
double XZQLX0 = 0; |
|
double XZQLX1 = 0; |
|
double XZQLX2 = 0; |
|
double XZQLX3 = 0; |
|
double XZQLX4 = 0; |
|
while ((xzqtqtbFeature = cursor.NextFeature()) != null) |
|
{ |
|
if (string.IsNullOrWhiteSpace(xzqtqtbFeature.Value[BGMJ].ToTrim())) continue; |
|
if (xzqtqtbFeature.Value[XZQLX].ToTrim() == "0") |
|
XZQLX0 += Convert.ToDouble(xzqtqtbFeature.Value[BGMJ]); |
|
else if (xzqtqtbFeature.Value[XZQLX].ToTrim() == "1") |
|
XZQLX1 += Convert.ToDouble(xzqtqtbFeature.Value[BGMJ]); |
|
else if (xzqtqtbFeature.Value[XZQLX].ToTrim() == "2") |
|
XZQLX2 += Convert.ToDouble(xzqtqtbFeature.Value[BGMJ]); |
|
else if (xzqtqtbFeature.Value[XZQLX].ToTrim() == "3") |
|
XZQLX3 += Convert.ToDouble(xzqtqtbFeature.Value[BGMJ]); |
|
else if (xzqtqtbFeature.Value[XZQLX].ToTrim() == "4") |
|
XZQLX4 += Convert.ToDouble(xzqtqtbFeature.Value[BGMJ]); |
|
} |
|
cursor = null; |
|
cursor = FcAPI_DLTBHRGC.FeatureClass.Search(queryfilter, true); |
|
int lxIndex = (int)IntoData.Columns["XZQTZLX"].ExtendedProperties["index"]; |
|
int BGQQSDMIndex = FcAPI_DLTBHRGC.FeatureClass.FindField("BGQQSDWDM"); |
|
int BGQQSMCIndex = FcAPI_DLTBHRGC.FeatureClass.FindField("BGQQSDWMC"); |
|
int BGQZLDMIndex = FcAPI_DLTBHRGC.FeatureClass.FindField("BGQZLDWDM"); |
|
int BGQZLMCIndex = FcAPI_DLTBHRGC.FeatureClass.FindField("BGQZLDWMC"); |
|
int BGHQSDMIndex = FcAPI_DLTBHRGC.FeatureClass.FindField("BGHQSDWDM"); |
|
int BGHQSMCIndex = FcAPI_DLTBHRGC.FeatureClass.FindField("BGHQSDWMC"); |
|
int BGHZLDMIndex = FcAPI_DLTBHRGC.FeatureClass.FindField("BGHZLDWDM"); |
|
int BGHZLMCIndex = FcAPI_DLTBHRGC.FeatureClass.FindField("BGHZLDWMC"); |
|
int JCTBBSMIndex = FcAPI_DLTBHRGC.FeatureClass.FindField("JCTBBSM"); |
|
int IsCompleteOutIndex = FcAPI_DLTBHRGC.FeatureClass.FindField("IsCompleteOut"); |
|
while ((xzqtqtbFeature = cursor.NextFeature()) != null) |
|
{ |
|
DataRow dr = IntoData.NewRow(); |
|
bool IsInto = true; |
|
dr[0] = false; |
|
for (int i = 0; i < IntoData.Columns.Count; i++) |
|
{ |
|
if (i == 0) |
|
{ |
|
dr[i] = false; |
|
continue; |
|
} |
|
else if (i == 1) { dr[i] = xzqtqtbFeature.OID.ToTrim(); } |
|
else if (IntoData.Columns[i].ColumnName == "TBBGMJ") |
|
{ |
|
dr[i] = xzqtqtbFeature.Value[BGMJ].ToTrim(); |
|
} |
|
else if (IntoData.Columns[i].ColumnName == "BGQQS") |
|
{ |
|
dr[i] = xzqtqtbFeature.Value[BGQQSMCIndex].ToTrim() + "-" + xzqtqtbFeature.Value[BGQQSDMIndex].ToTrim(); |
|
} |
|
else if (IntoData.Columns[i].ColumnName == "BGHQS" && !string.IsNullOrWhiteSpace(xzqtqtbFeature.Value[BGHQSDMIndex].ToTrim())) |
|
{ |
|
dr[i] = xzqtqtbFeature.Value[BGHQSMCIndex].ToTrim() + "-" + xzqtqtbFeature.Value[BGHQSDMIndex].ToTrim(); |
|
} |
|
else if (IntoData.Columns[i].ColumnName == "BGQZL") |
|
{ |
|
dr[i] = xzqtqtbFeature.Value[BGQZLMCIndex].ToTrim() + "-" + xzqtqtbFeature.Value[BGQZLDMIndex].ToTrim(); |
|
} |
|
else if (IntoData.Columns[i].ColumnName == "BGHZL") |
|
{ |
|
dr[i] = xzqtqtbFeature.Value[BGHZLMCIndex].ToTrim() + "-" + xzqtqtbFeature.Value[BGHZLDMIndex].ToTrim(); |
|
} |
|
else if (IntoData.Columns[i].ColumnName == "JCTBBSM") |
|
{ |
|
dr[i] = xzqtqtbFeature.Value[JCTBBSMIndex].ToTrim(); |
|
} |
|
else if (IntoData.Columns[i].ColumnName == "IsCompleteOut") |
|
{ |
|
dr[i] = xzqtqtbFeature.Value[IsCompleteOutIndex].ToTrim(); |
|
} |
|
} |
|
string XZQLXValue = xzqtqtbFeature.Value[XZQLX].ToTrim(); |
|
if (XZQLXValue == "0" && XZQLX0 != 0) |
|
dr[lxIndex] = XZQLXValue + " " + $"总面积:{XZQLX0.ToDouble(2)}"; |
|
else if (XZQLXValue == "1" && XZQLX1 != 0) |
|
dr[lxIndex] = XZQLXValue + " " + $"总面积:{XZQLX1.ToDouble(2)}"; |
|
else if (XZQLXValue == "2" && XZQLX2 != 0) |
|
dr[lxIndex] = XZQLXValue + " " + $"总面积:{XZQLX2.ToDouble(2)}"; |
|
else if (XZQLXValue == "3" && XZQLX3 != 0) |
|
dr[lxIndex] = XZQLXValue + " " + $"总面积:{XZQLX3.ToDouble(2)}"; |
|
else if (XZQLXValue == "4" && XZQLX4 != 0) |
|
dr[lxIndex] = XZQLXValue + " " + $"总面积:{XZQLX4.ToDouble(2)}"; |
|
if (IsInto) |
|
IntoData.Rows.Add(dr); |
|
Marshal.ReleaseComObject(xzqtqtbFeature); |
|
} |
|
dgInto2.ItemsSource = null; |
|
dgInto2.ItemsSource = IntoData; |
|
dgInto2.ClearGrouping(); |
|
if (ckbBGQZLDWDMByGroup.IsChecked == false && ckbBGHZLDWDMByGroup.IsChecked == false)//是否 |
|
{ |
|
dgInto2.GroupBy("XZQTZLX", true); |
|
} |
|
else |
|
{ |
|
if (ckbBGQZLDWDMByGroup.IsChecked == true) |
|
{ |
|
dgInto2.GroupBy("BGQZL", true); |
|
} |
|
if (ckbBGHZLDWDMByGroup.IsChecked == true) |
|
{ |
|
dgInto2.GroupBy("BGHZL", true); |
|
} |
|
} |
|
|
|
//绑定权属字典 |
|
if (ZLDMdataDic == null) |
|
{ |
|
ZLDMdataDic = Platform.Instance.DicHelper.GetNoGroupDic(DicTypeEnum.QSDM); |
|
if (ZLDMdataDic == null) |
|
MessageHelper.Show("权属字典未生成!"); |
|
else |
|
ZLDMdataDic = ZLDMdataDic.Where(x => x.CODE.Length == 19).ToList(); |
|
} |
|
for (int i = 0; i < ZLDMdataDic.Count; i++) |
|
{ |
|
if (ZLDMdataDic.Count(x => x.CODE == ZLDMdataDic[i].CODE) == 2) |
|
{ |
|
ZLDMdataDic.Remove(ZLDMdataDic[i]); |
|
i--;//去重 |
|
} |
|
} |
|
|
|
BGQZL.ItemsSource = BingBGQZL(); |
|
BGHZL.ItemsSource = ZLDMdataDic; |
|
} |
|
catch (Exception ex) |
|
{ |
|
LogAPI.Debug("加载区划调整数据失败,异常信息如下:"); |
|
LogAPI.Debug(ex); |
|
MessageHelper.ShowError("加载区划调整数据失败:" + ex.Message); |
|
} |
|
} |
|
|
|
private List<DataDicTionary> BingBGQZL() |
|
{ |
|
IQueryFilter filter = new QueryFilterClass |
|
{ |
|
WhereClause = "XZQTZLX = '1' OR XZQTZLX = '3'" |
|
}; |
|
ICursor cursor = (FcAPI_DLTBHRGC.FeatureClass as ITable).Search(filter, true); |
|
IRow rowHR = null; |
|
int BGQZLDMIndex = FcAPI_DLTBHRGC.FeatureClass.FindField("BGQZLDWDM"); |
|
int BGQZLMCIndex = FcAPI_DLTBHRGC.FeatureClass.FindField("BGQZLDWMC"); |
|
List<DataDicTionary> keyValuePairs = new List<DataDicTionary>(); |
|
while ((rowHR = cursor.NextRow()) != null) |
|
{ |
|
if (!string.IsNullOrWhiteSpace(rowHR.Value[BGQZLDMIndex].ToTrim())) |
|
{ |
|
DataDicTionary zLDMMC = new DataDicTionary |
|
{ |
|
DisplayName = rowHR.Value[BGQZLDMIndex].ToTrim() + "-" + rowHR.Value[BGQZLMCIndex].ToTrim(), |
|
CODE = rowHR.Value[BGQZLDMIndex].ToTrim(), |
|
NAME = rowHR.Value[BGQZLMCIndex].ToTrim() |
|
}; |
|
if (keyValuePairs.FirstOrDefault(x => x.CODE == rowHR.Value[BGQZLDMIndex].ToTrim()) == null) |
|
keyValuePairs.Add(zLDMMC); |
|
} |
|
} |
|
return keyValuePairs; |
|
} |
|
|
|
/// <summary> |
|
/// 提取范围(灭失/划出数据) |
|
/// </summary> |
|
/// <param name="sender"></param> |
|
/// <param name="e"></param> |
|
private void BtnGetBGRange_Click(object sender, RoutedEventArgs e) |
|
{ |
|
try |
|
{ |
|
if (tempKZJXUnionxzqLayer != null) |
|
tempKZJXUnionxzqLayer = null; |
|
if (New_XJXZQJX_Layer == null || New_XJXZQJX_Layer.FeatureClass.FeatureCount(null) == 0) |
|
{ |
|
MessageHelper.ShowTips("县级控制界线数据不存在!"); |
|
return; |
|
} |
|
//if (FcAPI_JC_XZQ == null || FcAPI_JC_XZQ.FeatureClass.FeatureCount(null) == 0) |
|
if (FcAPI_JC_XZQ == null) |
|
{ |
|
MessageHelper.ShowTips("基础行政区数据不存在!"); |
|
return; |
|
} |
|
this.ShowLoading("正在进行提取范围操作......", 0, 0); |
|
IFeatureLayer JCXZQ_Layer = GeoDBAPI.CreateFeatureLayerInmemeory("JC_XZQ", "基础行政区", (FcAPI_JC_XZQ.FeatureClass as IGeoDataset).SpatialReference, FcAPI_JC_XZQ.FeatureClass.ShapeType, FcAPI_JC_XZQ.FeatureClass.Fields); |
|
(JCXZQ_Layer.FeatureClass as ITable).DeleteSearchedRows(null); |
|
JXTZBGHelper.InsertDataToMemeoryLayer(FcAPI_JC_XZQ.FeatureClass, JCXZQ_Layer.FeatureClass, null); |
|
//存放结果在APP运行目录下 |
|
string gdbFolder = Directory.GetCurrentDirectory() + "\\Temp\\QHTZDataSet"; |
|
if (!Directory.Exists(gdbFolder)) |
|
Directory.CreateDirectory(gdbFolder); |
|
try |
|
{ |
|
JXTZBGHelper.DelectDir(gdbFolder);//能删除就删除 删除报错不处理 |
|
} |
|
catch |
|
{ } |
|
string gdbFileName = DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".gdb"; |
|
string path = System.IO.Path.Combine(gdbFolder, gdbFileName); |
|
IWorkspaceFactory pFtWsFct = new FileGDBWorkspaceFactory(); |
|
IWorkspaceName workspaceName = pFtWsFct.Create(gdbFolder, gdbFileName, null, 0); |
|
if (New_XJXZQJX_Layer.FeatureClass.FeatureCount(null) > 0) |
|
XJKZJX_IGeo = (New_XJXZQJX_Layer.FeatureClass.Search(null, false) as IFeatureCursor).NextFeature().ShapeCopy; |
|
else |
|
return; |
|
//将合并后的基础行政区与调整后控制界线进行联合 |
|
GPParamClass gPParamClass = new GPParamClass(); |
|
gPParamClass = new GPParamClass |
|
{ |
|
FirstFeatureLayer = JCXZQ_Layer, |
|
OutFeatureClassPath = path + "\\" + "JC_XZQ", |
|
IsGetOutPutFeature = true, |
|
ListDissolveFiledName = new List<string>() { "MSSM" } |
|
}; |
|
IFeatureLayer tempLayers = null; |
|
GeoprocessorHelper.DissolveAnalysis(gPParamClass, ref tempLayers); |
|
//IWorkspaceAPI psTempWorkspaceAPI = new WorkspaceAPI(path, WorkspaceTypeEnum.GDBFile, true); |
|
gPParamClass = new GPParamClass |
|
{ |
|
FirstFeatureLayer = New_XJXZQJX_Layer, |
|
SecondFeatureLayer = tempLayers, |
|
OutFeatureClassPath = path + "\\" + "TempXZQUnionKZJX2", |
|
IsGetOutPutFeature = true |
|
}; |
|
IFeatureLayer tempLayer = null; |
|
GeoprocessorHelper.UnionAnalysis(gPParamClass, ref tempLayer); |
|
gPParamClass = new GPParamClass |
|
{ |
|
FirstFeatureLayer = tempLayer, |
|
OutFeatureClassPath = path + "\\" + "TempXZQUnionKZJX", |
|
IsGetOutPutFeature = true |
|
}; |
|
GeoprocessorHelper.MultipartToSinglePath(gPParamClass, ref tempKZJXUnionxzqLayer); |
|
IQueryFilter queryfilter = new QueryFilterClass |
|
{ |
|
WhereClause = ""//获取灭失/划出的图斑 |
|
}; |
|
//if (JCXZQ_Layer.FeatureClass.FeatureCount(queryfilter) > 0) |
|
//{ |
|
// MessageHelper.ShowTips("新县级控制界线MSSM字段不能为空!"); |
|
// return; |
|
//} |
|
Data = new List<DataModel>(); |
|
this.UpdateMsg("正在进行数据赋值......"); |
|
//queryfilter.WhereClause = string.Format("FID_XJKZJX=-1 OR FID_JC_XZQ=-1 OR (MSSM='00' AND MSSM_1='01')");//获取灭失/划出的图斑 |
|
queryfilter.WhereClause = string.Format("FID_XJKZJX=-1 OR FID_JC_XZQ=-1)");//获取灭失/划出的图斑 |
|
if (tempKZJXUnionxzqLayer == null || tempKZJXUnionxzqLayer.FeatureClass.FeatureCount(null) <= 0) return; |
|
IFeatureCursor msCursor = tempKZJXUnionxzqLayer.FeatureClass.Search(null, true);//涉及海岛转陆地设置queryfilter=null |
|
IFeature DelFearure = null; |
|
int XJ_XZQDM = tempKZJXUnionxzqLayer.FeatureClass.FindField("XZQDM"); |
|
int XJ_XZQMC = tempKZJXUnionxzqLayer.FeatureClass.FindField("XZQMC"); |
|
int FID_XJKZJX = tempKZJXUnionxzqLayer.FeatureClass.FindField("FID_XJKZJX"); |
|
int FID_JC_XZQ = tempKZJXUnionxzqLayer.FeatureClass.FindField("FID_JC_XZQ"); |
|
int XJ_MSSM = tempKZJXUnionxzqLayer.FeatureClass.FindField("MSSM"); |
|
int XZQ_MSSM = tempKZJXUnionxzqLayer.FeatureClass.FindField("MSSM_1"); |
|
while ((DelFearure = msCursor.NextFeature()) != null) |
|
{ |
|
double area = DelFearure.ShapeCopy.GetEllipseArea(); |
|
if (area == 0) continue; |
|
DataModel modelItem = new DataModel(); |
|
modelItem.TC = "XZQUnionXJKZJX"; |
|
modelItem.DLTBOid = DelFearure.OID; |
|
if (DelFearure.Value[FID_JC_XZQ].ToString() == "-1")//划入-新增 |
|
{ |
|
modelItem.XZQDM = DelFearure.Value[XJ_XZQDM].ToString(); |
|
modelItem.XZQMC = DelFearure.Value[XJ_XZQMC].ToString(); |
|
modelItem.XZQInfo = DelFearure.Value[XJ_XZQDM].ToString() + "-" + DelFearure.Value[XJ_XZQMC].ToString(); |
|
modelItem.IsAdd = true; |
|
modelItem.BGZT = ""; |
|
} |
|
else if (DelFearure.Value[FID_XJKZJX].ToString() == "-1")//划出-灭失 |
|
{ |
|
modelItem.XZQDM = DelFearure.Value[XJ_XZQDM].ToString(); |
|
modelItem.XZQMC = DelFearure.Value[XJ_XZQMC].ToString(); |
|
modelItem.XZQInfo = DelFearure.Value[XJ_XZQDM].ToString() + "-" + DelFearure.Value[XJ_XZQMC].ToString(); |
|
modelItem.IsOut = true; |
|
modelItem.BGZT = ""; |
|
} |
|
else if (!string.IsNullOrWhiteSpace(DelFearure.Value[XJ_MSSM].ToTrim()) && DelFearure.Value[XZQ_MSSM].ToTrim() == "01") |
|
{ |
|
if (DelFearure.Value[XJ_MSSM].ToTrim() != DelFearure.Value[XZQ_MSSM].ToTrim()) |
|
{ |
|
modelItem.XZQDM = DelFearure.Value[XJ_XZQDM].ToString(); |
|
modelItem.XZQMC = DelFearure.Value[XJ_XZQMC].ToString(); |
|
modelItem.XZQInfo = DelFearure.Value[XJ_XZQDM].ToString() + "-" + DelFearure.Value[XJ_XZQMC].ToString(); |
|
modelItem.IsHDZLD = true; |
|
modelItem.BGZT = "属性变化"; |
|
} |
|
else |
|
{ |
|
modelItem = null; |
|
continue; |
|
} |
|
} |
|
else |
|
{ |
|
continue; |
|
} |
|
modelItem.Geo = DelFearure.ShapeCopy; |
|
Data.Add(modelItem); |
|
} |
|
if (XJJXTQTB_Layer != null) |
|
ImprotDataToXJJXTQTB(); |
|
dgInto.ItemsSource = Data.FindAll(x => x.IsHDZLD == false).ToList(); |
|
this.CloseLoading(); |
|
MessageHelper.ShowTips("提取完成!"); |
|
} |
|
catch (Exception ex) |
|
{ |
|
this.CloseLoading(); |
|
LogAPI.Debug("提取范围失败:" + ex.Message); |
|
MessageHelper.ShowError("提取范围失败!"); |
|
LogAPI.Debug(ex); |
|
} |
|
finally |
|
{ |
|
this.CloseLoading(); |
|
} |
|
} |
|
|
|
private void ImprotDataToXJJXTQTB() |
|
{ |
|
IFeatureCursor cursor = XJJXTQTB_Layer.FeatureClass.Insert(true); |
|
(XJJXTQTB_Layer.FeatureClass as ITable).DeleteSearchedRows(null); |
|
int XZQDMIndex = XJJXTQTB_Layer.FeatureClass.FindField("XZQDM"); |
|
int XZQMCIndex = XJJXTQTB_Layer.FeatureClass.FindField("XZQMC"); |
|
int BZIndex = XJJXTQTB_Layer.FeatureClass.FindField("BZ"); |
|
int JSMJIndex = XJJXTQTB_Layer.FeatureClass.FindField("JSMJ"); |
|
int MSSMIndex = XJJXTQTB_Layer.FeatureClass.FindField("MSSM"); |
|
int HDMCIndex = XJJXTQTB_Layer.FeatureClass.FindField("HDMC"); |
|
int TZZTIndex = XJJXTQTB_Layer.FeatureClass.FindField("TZZT"); |
|
foreach (DataModel itemTQ in Data) |
|
{ |
|
IFeatureBuffer featureBuffer = XJJXTQTB_Layer.FeatureClass.CreateFeatureBuffer(); |
|
featureBuffer.Shape = itemTQ.Geo; |
|
featureBuffer.Value[XZQDMIndex] = itemTQ.XZQDM; |
|
featureBuffer.Value[XZQMCIndex] = itemTQ.XZQMC; |
|
featureBuffer.Value[JSMJIndex] = itemTQ.Geo.GetEllipseArea(); |
|
if (itemTQ.IsAdd == true) |
|
featureBuffer.Value[TZZTIndex] = "Add"; |
|
else if (itemTQ.IsOut == true) |
|
featureBuffer.Value[TZZTIndex] = "Out"; |
|
else if (itemTQ.IsHDZLD == true) |
|
featureBuffer.Value[TZZTIndex] = "AttChange";//海岛转陆地,属性变化 |
|
cursor.InsertFeature(featureBuffer); |
|
} |
|
cursor.Flush(); |
|
} |
|
|
|
private void LoadXJJXTQTBToData() |
|
{ |
|
IFeatureCursor cursor = XJJXTQTB_Layer.FeatureClass.Search(null, true); |
|
int XZQDMIndex = XJJXTQTB_Layer.FeatureClass.FindField("XZQDM"); |
|
int XZQMCIndex = XJJXTQTB_Layer.FeatureClass.FindField("XZQMC"); |
|
int BZIndex = XJJXTQTB_Layer.FeatureClass.FindField("BZ"); |
|
int MSSMIndex = XJJXTQTB_Layer.FeatureClass.FindField("MSSM"); |
|
int TZZTIndex = XJJXTQTB_Layer.FeatureClass.FindField("TZZT"); |
|
IFeature feature = null; |
|
Data = new List<DataModel>(); |
|
while ((feature = cursor.NextFeature()) != null) |
|
{ |
|
DataModel modelItem = new DataModel(); |
|
modelItem.XZQInfo = modelItem.XZQMC + "-" + modelItem.XZQDM; |
|
modelItem.DLTBOid = feature.OID; |
|
modelItem.Geo = feature.ShapeCopy; |
|
modelItem.XZQDM = feature.Value[XZQDMIndex].ToString(); |
|
modelItem.XZQMC = feature.Value[XZQMCIndex].ToString(); |
|
modelItem.TC = "XZQUnionXJKZJX"; |
|
if (feature.Value[TZZTIndex].ToString() == "AttChange") |
|
{ |
|
modelItem.BGZT = "属性变化"; |
|
modelItem.IsHDZLD = true; |
|
} |
|
else |
|
{ |
|
modelItem.IsAdd = feature.Value[TZZTIndex].ToString() == "Add" ? true : false; |
|
modelItem.IsOut = feature.Value[TZZTIndex].ToString() == "Out" ? true : false; |
|
} |
|
Data.Add(modelItem); |
|
} |
|
dgInto.ItemsSource = Data.FindAll(x => x.IsHDZLD == false).ToList(); |
|
} |
|
|
|
/// <summary> |
|
/// 数据入库 |
|
/// </summary> |
|
/// <param name="sender"></param> |
|
/// <param name="e"></param> |
|
private void BtnAddData_Click(object sender, RoutedEventArgs e) |
|
{ |
|
try |
|
{ |
|
if (!(double.TryParse(txtTZQLDMJ.Text, out double TryPaseResults) && double.TryParse(txtTZHLDMJ.Text, out TryPaseResults) && double.TryParse(txtTZQHDMJ.Text, out TryPaseResults) && double.TryParse(txtTZHHDMJ.Text, out TryPaseResults))) |
|
{ |
|
MessageHelper.ShowError("当前控制面积信息填写不符合规范,请重新填写!"); |
|
return; |
|
} |
|
|
|
if (Data != null && Data.FirstOrDefault(x => x.BGZT == "" && x.IsHDZLD != true) == null) |
|
{ |
|
if (Data.FirstOrDefault(x => x.BGZT.ToTrim() == "新增" || x.BGZT.ToTrim() == "划入") != null && XZDLTB_Layer == null) |
|
{ |
|
MessageHelper.ShowTips("未获取到新增/划入图斑-新增/划入图斑数据为空."); |
|
return; |
|
} |
|
SaveDatas = new List<DataModel>(); |
|
this.ShowLoading("正在进行数据入库操作......", 0, 0); |
|
//if (JCDLTB_Layer == null || JCDLTB_Layer.FeatureClass == null || JCDLTB_Layer.FeatureClass.FeatureCount(null) == 0) |
|
if (JCDLTB_Layer == null || JCDLTB_Layer.FeatureClass == null) |
|
{ |
|
MessageHelper.ShowTips("未获取到基础地类图斑/基础地类图斑数据为空."); |
|
return; |
|
} |
|
IQueryFilter queryFilter = new QueryFilterClass() { WhereClause = "XZQTZLX IS NOT NULL AND XZQTZLX <>''" }; |
|
if (JCDLTB_Layer.FeatureClass.FeatureCount(queryFilter) != 0)//发生变化,则还原(再次入库遵循条件是否还原基础数据库) |
|
{ |
|
(JCDLTB_Layer.FeatureClass as FeatureClass).Workspace.ExecuteSQL("Delete From DLTB WHERE 1=1");//DeleteSearchedRows重复操作出现BUG |
|
JXTZBGHelper.InsertDataToMemeoryLayer(YSDLTBLayer.FeatureClass, JCDLTB_Layer.FeatureClass, null); |
|
} |
|
#region 注释 |
|
//在内存上创建一个基础地类图斑用于后续操作 |
|
//JCDLTB_Layer = GeoDBAPI.CreateFeatureLayerInmemeory("JC_DLTB", "基础地类图斑", (FcAPI_JC_DLTB.FeatureClass as IGeoDataset).SpatialReference, FcAPI_JC_DLTB.FeatureClass.ShapeType, FcAPI_JC_DLTB.FeatureClass.Fields); |
|
//(JCDLTB_Layer.FeatureClass as ITable).DeleteSearchedRows(null); |
|
//JXTZBGHelper.InsertDataToMemeoryLayer(FcAPI_JC_DLTB.FeatureClass, JCDLTB_Layer.FeatureClass, null); |
|
//JCDLTB_Layer.FeatureClass = FcAPI_JC_DLTB.FeatureClass; |
|
#endregion |
|
|
|
IFeatureLayer JCXZQ_Layer = GeoDBAPI.CreateFeatureLayerInmemeory("JC_XZQ", "基础行政区", (FcAPI_JC_XZQ.FeatureClass as IGeoDataset).SpatialReference, FcAPI_JC_XZQ.FeatureClass.ShapeType, FcAPI_JC_XZQ.FeatureClass.Fields); |
|
(JCXZQ_Layer.FeatureClass as ITable).DeleteSearchedRows(null); |
|
JXTZBGHelper.InsertDataToMemeoryLayer(FcAPI_JC_XZQ.FeatureClass, JCXZQ_Layer.FeatureClass, null); |
|
#region 国界零米线调整 |
|
if (Data.FirstOrDefault(x => x.BGZT.ToTrim() == "灭失" || x.BGZT.ToTrim() == "新增") != null) |
|
{ |
|
this.UpdateMsg("正在进行国界零米线调整操作......"); |
|
foreach (DataModel item in Data.FindAll(x => x.IsHDZLD == true)) |
|
{ |
|
ExtractHDZLDData(item.Geo); |
|
} |
|
foreach (DataModel item in Data.FindAll(x => x.BGZT.ToTrim().Contains("灭失"))) |
|
{ |
|
ExtractMSData(item.Geo);//暂存SaveDatas |
|
} |
|
double BGQLDKZMJ = double.TryParse(txtTZQLDMJ.Text, out double TryPaseResult) ? TryPaseResult : 0; |
|
double BGHLDKZMJ = double.TryParse(txtTZHLDMJ.Text, out TryPaseResult) ? TryPaseResult : 0; |
|
double BGQHDKZMJ = double.TryParse(txtTZQHDMJ.Text, out TryPaseResult) ? TryPaseResult : 0; |
|
double BGHHDKZMJ = double.TryParse(txtTZHHDMJ.Text, out TryPaseResult) ? TryPaseResult : 0; |
|
|
|
//海岛转陆地实际面积 |
|
double HDZLDMJ = SaveDatas.Where(w => w.IsHDZLD).Sum(s => s.BGMJ).ToDouble(2); |
|
//陆地-海岛灭失数据-陆地-海岛新增图斑 |
|
double LDMSMJ = SaveDatas.Where(w => w.IsOut && w.BGZT.Contains("灭失") && w.MSSM == "00").Sum(s => s.BGMJ); |
|
double HDMSMJ = SaveDatas.Where(w => w.IsOut && w.BGZT.Contains("灭失") && w.MSSM == "01").Sum(s => s.BGMJ); |
|
//海岛转陆地控制面积 = (变更前海岛控制面积-变更后海岛控制面积-灭失面积) |
|
double HDZLDKZMJ = Math.Round((BGQHDKZMJ - BGHHDKZMJ - HDMSMJ).ToDouble(2), 2); |
|
//调整后的平差总面积(海岛/陆地) |
|
double LDXZMJ = Math.Round(BGHLDKZMJ - HDZLDKZMJ - (BGQLDKZMJ - LDMSMJ).ToDouble(2), 2); |
|
double HDXZMJ = Math.Round(BGHHDKZMJ + HDZLDKZMJ - (BGQHDKZMJ - HDMSMJ).ToDouble(2), 2); |
|
if (BGQLDKZMJ == 0 && BGHLDKZMJ == 0) |
|
{ |
|
HDXZMJ = LDXZMJ; |
|
LDXZMJ = 0; |
|
HDZLDKZMJ = 0; |
|
} |
|
if (SaveDatas.Count != 0 && SaveDatas.FirstOrDefault(w => w.IsOut && w.BGZT.Contains("灭失")) != null) |
|
SaveDataInsertDLTBHRGC(JCDLTB_Layer.FeatureClass, "灭失", "4"); |
|
//SaveDatasInsertDLTBBG(JCDLTB_Layer.FeatureClass, FcAPI_DLTBBG.FeatureClass, "灭失", "4"); |
|
|
|
foreach (DataModel item in Data.FindAll(x => x.BGZT.ToTrim().Contains("新增"))) |
|
{ |
|
ExtractXZData(item.Geo);//暂存SaveDatas |
|
} |
|
//新增陆地/海岛面积 |
|
double PCQ_LDXZMJ = SaveDatas.Where(w => w.IsAdd && w.BGZT.Contains("新增") && w.MSSM == "00").Sum(s => s.BGMJ); |
|
double PCQ_HDXZMJ = SaveDatas.Where(w => w.IsAdd && w.BGZT.Contains("新增") && w.MSSM == "01").Sum(s => s.BGMJ); |
|
#region 新增地类图斑面积平差 |
|
this.UpdateMsg("正在进行地类图斑面积平差......"); |
|
while ((HDZLDKZMJ - HDZLDMJ).ToDecimal(2) != 0)//海岛转陆地进行平差 |
|
{ |
|
double mjc = Math.Round(HDZLDKZMJ - HDZLDMJ, 2); |
|
SaveDatas = SaveDatas.OrderByDescending(o => o.BGMJ).ToList(); |
|
foreach (var item in SaveDatas) |
|
{ |
|
if (!item.IsHDZLD) continue; |
|
if (mjc < 0) |
|
{ |
|
item.BGMJ = Math.Round(item.BGMJ - 0.01, 2); |
|
mjc = Math.Round(mjc + 0.01, 2); |
|
} |
|
else |
|
{ |
|
item.BGMJ = Math.Round(item.BGMJ + 0.01, 2); |
|
mjc = Math.Round(mjc - 0.01, 2); |
|
} |
|
if (mjc == 0) |
|
break; |
|
} |
|
HDZLDMJ = SaveDatas.Where(w => w.IsHDZLD).Sum(s => s.BGMJ); |
|
} |
|
if (SaveDatas.FirstOrDefault(x => x.IsHDZLD == true) != null) |
|
SaveDataInsertDLTBHRGC(JCDLTB_Layer.FeatureClass, "属性变化", "0"); |
|
while ((PCQ_LDXZMJ - LDXZMJ).ToDecimal(2) != 0) |
|
{ |
|
double mjc = Math.Round(LDXZMJ - PCQ_LDXZMJ, 2); |
|
SaveDatas = SaveDatas.OrderByDescending(o => o.BGMJ).ToList(); |
|
foreach (var item in SaveDatas) |
|
{ |
|
if (!item.IsAdd && !item.BGZT.Contains("新增")) continue; |
|
if (mjc < 0) |
|
{ |
|
item.BGMJ = Math.Round(item.BGMJ - 0.01, 2); |
|
mjc = Math.Round(mjc + 0.01, 2); |
|
} |
|
else |
|
{ |
|
item.BGMJ = Math.Round(item.BGMJ + 0.01, 2); |
|
mjc = Math.Round(mjc - 0.01, 2); |
|
} |
|
if (mjc == 0) |
|
break; |
|
} |
|
PCQ_LDXZMJ = SaveDatas.Where(w => w.IsAdd && w.BGZT.Contains("新增") && w.MSSM == "00").Sum(s => s.BGMJ); |
|
} |
|
while ((PCQ_HDXZMJ - HDXZMJ).ToDecimal(2) != 0 && PCQ_HDXZMJ != 0) |
|
{ |
|
double mjc = Math.Round(HDXZMJ - PCQ_HDXZMJ, 2); |
|
SaveDatas = SaveDatas.OrderByDescending(o => o.BGMJ).ToList(); |
|
foreach (var item in SaveDatas) |
|
{ |
|
if (!item.IsAdd && !item.BGZT.Contains("新增")) continue; |
|
if (mjc < 0) |
|
{ |
|
item.BGMJ = Math.Round(item.BGMJ - 0.01, 2); |
|
mjc = Math.Round(mjc + 0.01, 2); |
|
} |
|
else |
|
{ |
|
item.BGMJ = Math.Round(item.BGMJ + 0.01, 2); |
|
mjc = Math.Round(mjc - 0.01, 2); |
|
} |
|
if (mjc == 0) |
|
break; |
|
} |
|
PCQ_HDXZMJ = SaveDatas.Where(w => w.IsAdd && w.BGZT.Contains("新增") && w.MSSM == "01").Sum(s => s.BGMJ); |
|
} |
|
#endregion |
|
if (SaveDatas.FindAll(x => x.BGZT.Contains("新增")).Count != 0) |
|
SaveDataInsertDLTBHRGC(XZDLTB_Layer.FeatureClass, "新增", "3"); |
|
} |
|
#endregion |
|
|
|
foreach (DataModel item in Data.FindAll(x => x.BGZT.Contains("划出"))) |
|
{ |
|
this.UpdateMsg("正在进行行政区划出操作......"); |
|
ExtractHCSaveDatas(item.Geo);//暂存SaveDatas |
|
SetCZCDYDZT(item.Geo, "2"); |
|
} |
|
if (SaveDatas.FindAll(x => x.BGZT.Contains("划出")).Count != 0) |
|
{ |
|
//SaveDatasInsertDLTBBG(JCDLTB_Layer.FeatureClass, FcAPI_DLTBBG.FeatureClass, "划出", "2"); |
|
SaveDataInsertDLTBHRGC(JCDLTB_Layer.FeatureClass, "划出", "2"); |
|
} |
|
|
|
queryFilter.WhereClause = "XZQTZLX='1'"; |
|
if (FcAPI_DLTBHRGC != null) |
|
(FcAPI_DLTBHRGC.FeatureClass as ITable).DeleteSearchedRows(queryFilter);//插入之前做一次清空 |
|
foreach (DataModel item in Data.FindAll(x => x.BGZT.Contains("划入"))) |
|
{ |
|
this.UpdateMsg("正在进行行政区划入操作......"); |
|
ExtractHR(item.Geo); |
|
} |
|
|
|
//加载全部数据 |
|
this.UpdateMsg("正在进行数据加载,入库成功!"); |
|
LoadData(true); |
|
this.CloseLoading(); |
|
MessageHelper.ShowTips("入库成功!"); |
|
} |
|
else |
|
{ |
|
MessageHelper.ShowError("范围图斑数据变更状态缺失,请修改状态!"); |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
this.CloseLoading(); |
|
MessageHelper.ShowError("入库失败:" + ex.Message); |
|
LogAPI.Debug("入库失败:" + ex.Message); |
|
LogAPI.Debug(ex); |
|
} |
|
finally |
|
{ |
|
this.CloseLoading(); |
|
} |
|
} |
|
|
|
/// <summary> |
|
/// 地类图斑划入过程图斑插入到变更层 |
|
/// </summary> |
|
private void IntoTBDataToDLTBBG(object sender, RoutedEventArgs e) |
|
{ |
|
IFeatureClass targetFc = null; |
|
IWorkspaceFactory pFtWsFct = null; |
|
IWorkspaceName workspaceName = null; |
|
try |
|
{ |
|
if (FcAPI_DLTBHRGC != null) |
|
targetFc = FcAPI_DLTBHRGC.FeatureClass;//地类图斑划入过程图斑 |
|
QueryFilter queryfilter = new QueryFilterClass |
|
{ |
|
WhereClause = string.Format("XZQTZLX='0' OR XZQTZLX='1' OR XZQTZLX='2' OR XZQTZLX='3' OR XZQTZLX='4'")//XZQTZLX-行政区调整类型 |
|
}; |
|
if (targetFc.FeatureCount(queryfilter) == 0) return; |
|
//(FcAPI_DLTBBG.FeatureClass as ITable).DeleteSearchedRows(queryfilter); |
|
if (FcAPI_DLTBBG == null || FcAPI_DLTBBG.FeatureClass == null) |
|
FcAPI_DLTBBG = new FeatureClassAPI(MapsManager.Instance.MapService.GetFeatureClassByName("DLTBBG")); |
|
(FcAPI_DLTBBG.FeatureClass as FeatureClass).Workspace.ExecuteSQL("Delete From DLTBBG WHERE XZQTZLX='0' OR XZQTZLX='1' OR XZQTZLX='2' OR XZQTZLX='3' OR XZQTZLX='4'"); |
|
this.ShowLoading("正在进行地类图斑划入过程图斑插入到变更层操作......", 0, 0); |
|
if (FcAPI_DLTBBG.FeatureClass.FeatureCount(null) != 0) |
|
{ |
|
pFtWsFct = new FileGDBWorkspaceFactory(); |
|
string saveFile = SysAppPath.GetTempPath() + @"QYTZTemp\";//临时GDB数据 |
|
if (!Directory.Exists(saveFile)) |
|
Directory.CreateDirectory(saveFile); |
|
//删除saveFile当前路径下,所有的文件和目录 |
|
PluginServiceInterface.CommonHelper.DelectDir(saveFile); |
|
IFeatureLayer HRBGDataLayer = null; |
|
IFeatureLayer HRBGMultipartDataLayer = null; |
|
string path = System.IO.Path.Combine(saveFile, DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".gdb"); |
|
workspaceName = pFtWsFct.Create(saveFile, DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".gdb", null, 0); |
|
IFeatureLayer dltbbg_Layer = MapsManager.Instance.MapService.GetFeatureLayerByName("DLTBBG"); |
|
IFeatureLayer DLTBHRGC_Layer = MapsManager.Instance.MapService.GetFeatureLayerByName("DLTBHRGC"); |
|
GPParamClass gPParamClass = new GPParamClass(); |
|
gPParamClass.FirstFeatureLayer = DLTBHRGC_Layer; |
|
gPParamClass.SecondFeatureLayer = dltbbg_Layer; |
|
gPParamClass.IsGetOutPutFeature = true; |
|
gPParamClass.GPType = EnumGPType.Erase; |
|
gPParamClass.OutFeatureClassPath = System.IO.Path.Combine(path, "QYTZTempHR"); |
|
IDGForNDBG.GPHelper.Instance.ExeGPForProces(gPParamClass, ref HRBGDataLayer); |
|
gPParamClass = new GPParamClass(); |
|
gPParamClass.FirstFeatureLayer = HRBGDataLayer; |
|
gPParamClass.OutFeatureClassPath = $"{path}\\QYTZTempHRMultipart"; |
|
gPParamClass.IsGetOutPutFeature = true; |
|
gPParamClass.GPType = EnumGPType.MultipartToSinglePath; |
|
IDGForNDBG.GPHelper.Instance.ExeGPForProces(gPParamClass, ref HRBGMultipartDataLayer); |
|
targetFc = HRBGMultipartDataLayer.FeatureClass; |
|
} |
|
if (targetFc == null) return; |
|
IFeatureCursor cursor = targetFc.Search(null, true); |
|
IFeature f = null; |
|
IFeatureClassLoad pFclsLoad = FcAPI_DLTBBG.FeatureClass as IFeatureClassLoad; |
|
if (pFclsLoad != null) |
|
pFclsLoad.LoadOnlyMode = true; |
|
IFeatureCursor gxCursor = FcAPI_DLTBBG.FeatureClass.Insert(true); |
|
while ((f = cursor.NextFeature()) != null)//地类图斑划入过程图斑要素 |
|
{ |
|
IFeatureBuffer gxBuff = CreateGxFeature(f, FcAPI_DLTBBG.FeatureClass); |
|
gxCursor.InsertFeature(gxBuff); |
|
Marshal.ReleaseComObject(gxBuff); |
|
} |
|
gxCursor.Flush(); |
|
if (pFclsLoad != null) |
|
pFclsLoad.LoadOnlyMode = false; |
|
if (pFclsLoad != null) |
|
Marshal.ReleaseComObject(pFclsLoad); |
|
#region |
|
try |
|
{ |
|
IQueryFilter filter = new QueryFilterClass |
|
{ |
|
WhereClause = "XZQTZLX = '3'" |
|
}; |
|
int idx = JCDLTB_Layer.FeatureClass.FindField("XZQTZLX"); |
|
if (idx != -1) |
|
{ |
|
(JCDLTB_Layer.FeatureClass as FeatureClass).Workspace.ExecuteSQL("Delete From DLTB WHERE XZQTZLX = '3'"); |
|
FcAPI_DLTBBG.FcToFc(JCDLTB_Layer.FeatureClass, filter, false); |
|
//JXTZBGHelper.InsertDataToMemeoryLayer(FcAPI_DLTBBG.FeatureClass, JCDLTB_Layer.FeatureClass, filter); |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
MessageHelper.ShowError(ex.Message); |
|
LogAPI.Debug(ex); |
|
} |
|
#endregion |
|
this.CloseLoading(); |
|
MessageHelper.ShowTips("统赋后数据入变更库成功!"); |
|
if (gxCursor != null) |
|
Marshal.ReleaseComObject(gxCursor); |
|
if (cursor != null) |
|
Marshal.ReleaseComObject(cursor); |
|
} |
|
catch (Exception ex) |
|
{ |
|
this.CloseLoading(); |
|
LogAPI.Debug(ex); |
|
MessageHelper.ShowTips("统赋后数据入变更库失败!"); |
|
} |
|
finally |
|
{ |
|
this.CloseLoading(); |
|
} |
|
} |
|
|
|
/// <summary> |
|
/// |
|
/// </summary> |
|
/// <param name="pBgFeature">地类图斑划入过程数据</param> |
|
/// <param name="pGxFc">地类图斑变更层</param> |
|
/// <returns></returns> |
|
private IFeatureBuffer CreateGxFeature(IFeature pBgFeature, IFeatureClass pBGTBFC) |
|
{ |
|
IFeatureBuffer buffer = pBGTBFC.CreateFeatureBuffer(); |
|
IGeometry _Geo = pBgFeature.ShapeCopy; |
|
try |
|
{ |
|
buffer.Shape = _Geo; |
|
int idxBGMJ = pBgFeature.Fields.FindField("TBBGMJ"); |
|
int idxTBMJ = pBGTBFC.FindField("TBMJ"); |
|
for (int i = 0; i < buffer.Fields.FieldCount; i++) |
|
{ |
|
IField field = buffer.Fields.Field[i]; |
|
if (field.Name.Contains(pBGTBFC.ShapeFieldName) || !field.Editable) continue; |
|
if (field.Name.ToUpper() == "XZQTZLX") |
|
{ |
|
buffer.Value[i] = pBgFeature.Value[FcAPI_DLTBHRGC.FeatureClass.FindField("XZQTZLX")]; |
|
continue; |
|
} |
|
int index = pBgFeature.Fields.FindField("BGH" + field.Name); |
|
if ("2,4".Contains(pBgFeature.Value[pBGTBFC.FindField("XZQTZLX")].ToTrim())) |
|
{ |
|
index = pBgFeature.Fields.FindField("BGQ" + field.Name); |
|
} |
|
if (index == -1) continue; |
|
if (string.IsNullOrWhiteSpace(pBgFeature.Value[index].ToTrim())) |
|
buffer.Value[i] = DBNull.Value; |
|
else |
|
buffer.Value[i] = pBgFeature.Value[index]; |
|
} |
|
if (idxTBMJ != -1 && idxBGMJ != -1) |
|
buffer.Value[idxTBMJ] = pBgFeature.Value[idxBGMJ]; |
|
return buffer; |
|
} |
|
catch (Exception) |
|
{ |
|
LogAPI.Debug("划入过程数据加载到变更层失败,OIDBging:" + pBgFeature != null ? pBgFeature.OID.ToString() : "-1"); |
|
return null; |
|
} |
|
} |
|
|
|
/// <summary> |
|
/// 存储划入数据ToDLTBHRGC |
|
/// </summary> |
|
/// <param name="HRgeometry"></param> |
|
private void ExtractHR(IGeometry HRgeometry) |
|
{ |
|
if (XZDLTB_Layer == null) return; |
|
IFeatureCursor tarCursor = null; |
|
IFeatureCursor jcCursor = null; |
|
IGeometry tempGeo = HRgeometry;//县级控制界限 |
|
ITopologicalOperator topo = HRgeometry as ITopologicalOperator; |
|
tempGeo = topo.Buffer(-.01); |
|
List<IFeature> features = FeatureAPI.Identify(tempGeo, XZDLTB_Layer);//tempGeo-县级控制界限,layer-选择的新增图斑 |
|
IGeometry tempGeo_B = topo.Buffer(0.01); |
|
IRelationalOperator rele = tempGeo_B as IRelationalOperator; |
|
int tbmjindex = XZDLTB_Layer.FeatureClass.FindField("TBMJ");//新增的图斑面积 |
|
IFeatureClass targetFc = FcAPI_DLTBHRGC.FeatureClass;//MapsManager.Instance.MapService.GetFeatureClassByName("DLTBHRGC"); |
|
tarCursor = targetFc.Insert(true);//地类图斑划入过程游标 |
|
jcCursor = JCDLTB_Layer.FeatureClass.Insert(true); |
|
|
|
int XZQTZLXIndex = JCDLTB_Layer.FeatureClass.FindField("XZQTZLX"); |
|
foreach (var f in features) |
|
{ |
|
List<IFeature> jcFeature = FeatureAPI.Identify2(f.ShapeCopy, JCDLTB_Layer); |
|
foreach (IFeature item in jcFeature) |
|
{ |
|
IGeometry jcGeo = FeatureAPI.Difference(item.ShapeCopy, f.ShapeCopy); |
|
item.Shape = jcGeo; |
|
item.Store(); |
|
} |
|
IFeatureBuffer jcBuff = JCDLTB_Layer.FeatureClass.CreateFeatureBuffer(); |
|
jcBuff.Shape = f.ShapeCopy; |
|
for (int i = 0; i < jcBuff.Fields.FieldCount; i++) |
|
{ |
|
IField field = jcBuff.Fields.Field[i]; |
|
if (field.Name.Contains(targetFc.ShapeFieldName) || !field.Editable) |
|
continue; |
|
|
|
int index = XZDLTB_Layer.FeatureClass.FindField(field.Name); |
|
if (index != -1) |
|
{ |
|
jcBuff.Value[i] = f.Value[index]; |
|
} |
|
jcBuff.Value[XZQTZLXIndex] = "1"; |
|
} |
|
jcCursor.InsertFeature(jcBuff); |
|
|
|
IFeatureBuffer tFBuff = targetFc.CreateFeatureBuffer(); |
|
for (int i = 0; i < tFBuff.Fields.FieldCount; i++) |
|
{ |
|
IField field = tFBuff.Fields.Field[i]; |
|
if (field.Name.Contains(targetFc.ShapeFieldName) || field.Name.ToUpper() == "OBJECTID" || field.Name.ToUpper() == "BSM" || "BGHTBBH,BGHTBBSM,BGHZLDWDM,BGHQSDWDM,BGHZLDWMC,BGHQSDWMC".Contains(field.Name)) |
|
continue; |
|
if (field.Name == "XZQTZLX") |
|
{ |
|
tFBuff.Value[i] = "1"; |
|
continue; |
|
} |
|
string fieldName = field.Name.Replace("BGQ", ""); |
|
fieldName = fieldName.Replace("BGH", ""); |
|
if (fieldName == "TBBSM") |
|
{ |
|
fieldName = "BSM"; |
|
} |
|
if (fieldName == "TBBGMJ") |
|
{ |
|
fieldName = "TBMJ"; |
|
} |
|
int index = XZDLTB_Layer.FeatureClass.FindField(fieldName); |
|
if (index != -1) |
|
{ |
|
tFBuff.Value[i] = f.Value[index]; |
|
} |
|
} |
|
if (rele.Contains(f.ShapeCopy))//在界限内-整图斑划入 |
|
{ |
|
tFBuff.Shape = f.ShapeCopy; |
|
int index = targetFc.FindField("IsCompleteOut"); |
|
if (index > -1) |
|
{ |
|
tFBuff.Value[targetFc.FindField("IsCompleteOut")] = "True"; |
|
} |
|
if (string.IsNullOrWhiteSpace(f.Value[tbmjindex].ToTrim())) |
|
tFBuff.Value[targetFc.FindField("TBBGMJ")] = f.ShapeCopy.GetEllipseArea(); |
|
} |
|
else |
|
{ |
|
double kzmj = f.Value[tbmjindex].ToDouble(); |
|
IGeometry geo = FeatureAPI.InterSect(f.ShapeCopy, HRgeometry); |
|
List<IGeometry> geoList = FeatureAPI.DissolveGeometryByRing(geo); |
|
//geo如果存在重叠问题,会导致geoListNULL |
|
List<DataModel> dataList = new List<DataModel>(); |
|
foreach (var item in geoList) |
|
{ |
|
DataModel model = new DataModel(); |
|
dataList.Add(model); |
|
model.TC = "DLTB"; |
|
model.Geo = item; |
|
model.BGMJ = (item as IPolygon).GetEllipseArea(); |
|
model.IsOut = true; |
|
model.DLTBOid = f.OID; |
|
model.BGZT = "划入"; |
|
} |
|
JXTZBGHelper.AreaAdjustment(dataList, "BGMJ", kzmj);//平差 |
|
foreach (DataModel item in dataList) |
|
{ |
|
tFBuff.Shape = item.Geo; |
|
tFBuff.Value[targetFc.FindField("IsCompleteOut")] = "False"; |
|
tFBuff.Value[targetFc.FindField("TBBGMJ")] = item.BGMJ; |
|
} |
|
} |
|
tarCursor.InsertFeature(tFBuff); |
|
} |
|
jcCursor.Flush(); |
|
tarCursor.Flush(); |
|
} |
|
|
|
/// <summary> |
|
/// 入库数据(灭失-新增-划出)存入变更层 |
|
/// </summary> |
|
/// <param name="jcFc"></param> |
|
/// <param name="BGFc"></param> |
|
/// <param name="BGZTTemp"></param> |
|
private void SaveDatasInsertDLTBBG(IFeatureClass jcFc, IFeatureClass tzFc, string BGZTTemp, string XZQTZLXIndex) |
|
{ |
|
IFeatureCursor tzCursor = tzFc.Insert(true); |
|
try |
|
{ |
|
(tzFc as ITable).DeleteSearchedRows(new QueryFilterClass() { WhereClause = string.Format("XZQTZLX='{0}'", XZQTZLXIndex) }); |
|
foreach (var item in SaveDatas) |
|
{ |
|
if ((item.IsOut || item.IsAdd) && item.BGZT.Contains(BGZTTemp)) |
|
{ |
|
IFeature jc_f = jcFc.GetFeature(item.DLTBOid); |
|
int idxJCXZQTZLX = jcFc.FindField("XZQTZLX"); |
|
if (idxJCXZQTZLX != -1) |
|
{ |
|
jc_f.Value[idxJCXZQTZLX] = XZQTZLXIndex; |
|
jc_f.Store(); |
|
} |
|
IFeatureBuffer gxBuff = CreateXzqGxFeature(jc_f, item.Geo, tzFc, false, "", item.BGZT); |
|
int index = gxBuff.Fields.FindField("XZQTZLX"); |
|
if (index != -1) |
|
gxBuff.Value[index] = XZQTZLXIndex; |
|
if (item.BGZT.Contains("新增") || item.BGZT.Contains("灭失")) |
|
{ |
|
int bgmjIndex = gxBuff.Fields.FindField("TBMJ"); |
|
if (bgmjIndex != -1) |
|
gxBuff.Value[bgmjIndex] = item.BGMJ.ToDecimal(2); |
|
} |
|
tzCursor.InsertFeature(gxBuff); |
|
} |
|
} |
|
tzCursor.Flush(); |
|
} |
|
catch (Exception ex) |
|
{ |
|
LogAPI.Debug(ex); |
|
} |
|
finally |
|
{ |
|
Marshal.ReleaseComObject(tzCursor); |
|
} |
|
} |
|
|
|
/// <summary> |
|
/// 将SaveDatas数据存入地类图斑划入过程层 |
|
/// </summary> |
|
private void SaveDataInsertDLTBHRGC(IFeatureClass jcFc, string BGZTTemp, string XZQTZLXIndex) |
|
{ |
|
IFeatureCursor tzCursor = FcAPI_DLTBHRGC.FeatureClass.Insert(true); |
|
try |
|
{ |
|
(FcAPI_DLTBHRGC.FeatureClass as ITable).DeleteSearchedRows(new QueryFilterClass() { WhereClause = string.Format("XZQTZLX='{0}'", XZQTZLXIndex) }); |
|
foreach (var item in SaveDatas) |
|
{ |
|
if ((item.IsOut || item.IsAdd) && item.BGZT.Contains(BGZTTemp)) |
|
{ |
|
IFeature jc_f = jcFc.GetFeature(item.DLTBOid); |
|
int idxJCXZQTZLX = jcFc.FindField("XZQTZLX"); |
|
int idxTBMJ = jcFc.FindField("TBMJ"); |
|
int idxBSM = jcFc.FindField("BSM"); |
|
string bsm = jc_f.Value[idxBSM].ToTrim(); |
|
double kzmj = jc_f.Value[idxTBMJ].ToDouble(); |
|
#region 注释 |
|
//if (item.IsCompleteOut == false && item.IsOut) |
|
//{ |
|
// IGeometry geo = FeatureAPI.InterSect(jc_f.ShapeCopy, item.Geo); |
|
// if (!geo.IsEmpty) |
|
// { |
|
// List<IGeometry> geoList = FeatureAPI.DissolveGeometryByRing(geo); |
|
// List<DataModel> dataList = new List<DataModel>(); |
|
// foreach (var itemF in geoList) |
|
// { |
|
// DataModel model = new DataModel |
|
// { |
|
// TC = "DLTB", |
|
// Geo = itemF, |
|
// DLTBOid = jc_f.OID, |
|
// IsOut = true, |
|
// BGMJ = (itemF as IPolygon).GetEllipseArea() |
|
// }; |
|
// dataList.Add(model); |
|
// } |
|
// IGeometry geo_out = FeatureAPI.Difference(jc_f.ShapeCopy, item.Geo); |
|
// geoList = FeatureAPI.DissolveGeometryByRing(geo_out); |
|
// foreach (var itemF in geoList) |
|
// { |
|
// DataModel model = new DataModel |
|
// { |
|
// TC = "DLTB", |
|
// Geo = itemF, |
|
// DLTBOid = jc_f.OID, |
|
// BGMJ = (itemF as IPolygon).GetEllipseArea() |
|
// }; |
|
// dataList.Add(model); |
|
// } |
|
// if (dataList.Count > 0) |
|
// { |
|
// JXTZBGHelper.AreaAdjustment<DataModel>(dataList, "BGMJ", kzmj); |
|
// //IFeatureCursor cursorJCDLTB = jcFc.Insert(true); |
|
// //foreach (DataModel itemXZDLTB in dataList.FindAll(x => x.IsOut == true)) |
|
// //{ |
|
// // IFeatureBuffer buffer = jcFc.CreateFeatureBuffer(); |
|
// // buffer.Shape = itemXZDLTB.Geo; |
|
// // for (int i = 0; i < jc_f.Fields.FieldCount; i++) |
|
// // { |
|
// // IField field = jc_f.Fields.Field[i]; |
|
// // if (field.Editable == false || field.Name.ToUpper().Contains("SHAPE")) continue; |
|
// // if (field.Name.ToUpper().Contains("TBMJ")) |
|
// // { |
|
// // buffer.Value[i] = kzmj;// itemXZDLTB.BGMJ; |
|
// // continue; |
|
// // } |
|
// // buffer.Value[i] = jc_f.Value[i]; |
|
// // } |
|
// // buffer.Value[idxJCXZQTZLX] = XZQTZLXIndex; |
|
// // cursorJCDLTB.InsertFeature(buffer); |
|
// // cursorJCDLTB.Flush(); |
|
// //} |
|
// //for (int i = 0; i < dataList.Count; i++) |
|
// //{ |
|
// // if (i == 0) |
|
// // { |
|
// // jc_f.Shape = dataList[i].Geo; |
|
// // if (dataList[i].IsOut) |
|
// // jc_f.Value[idxJCXZQTZLX] = XZQTZLXIndex; |
|
// // //jc_f.Value[idxTBMJ] = kzmj; |
|
// // jc_f.Store(); |
|
// // } |
|
// // else |
|
// // { |
|
// // IFeatureBuffer buffer = jcFc.CreateFeatureBuffer(); |
|
// // buffer.Shape = dataList[i].Geo; |
|
// // for (int j = 0; j < jc_f.Fields.FieldCount; j++) |
|
// // { |
|
// // IField field = jc_f.Fields.Field[j]; |
|
// // if (field.Editable == false || field.Name.ToUpper().Contains("SHAPE")) continue; |
|
// // if (field.Name.ToUpper().Contains("TBMJ")) |
|
// // { |
|
// // buffer.Value[j] = kzmj;// itemXZDLTB.BGMJ; |
|
// // continue; |
|
// // } |
|
// // buffer.Value[j] = jc_f.Value[j]; |
|
// // } |
|
// // if (dataList[i].IsOut) |
|
// // buffer.Value[idxJCXZQTZLX] = XZQTZLXIndex; |
|
// // else |
|
// // buffer.Value[idxJCXZQTZLX] = DBNull.Value; |
|
// // cursorJCDLTB.InsertFeature(buffer); |
|
// // cursorJCDLTB.Flush(); |
|
// // } |
|
// //} |
|
// //jc_f.Shape = dataList.FirstOrDefault(x => x.IsOut == false).Geo; |
|
// //jc_f.Value[idxTBMJ] = kzmj;// dataList.FirstOrDefault(x => x.IsOut == true).BGMJ; |
|
// ////jc_f.Value[idxJCXZQTZLX] = XZQTZLXIndex; |
|
// //jc_f.Store(); |
|
// } |
|
// } |
|
//} |
|
//if (idxJCXZQTZLX != -1 && item.IsCompleteOut) |
|
//{ |
|
// jc_f.Value[idxJCXZQTZLX] = XZQTZLXIndex; |
|
// jc_f.Store(); |
|
//} |
|
#endregion |
|
IFeatureBuffer gxBuff = FcAPI_DLTBHRGC.FeatureClass.CreateFeatureBuffer(); |
|
gxBuff.Shape = item.Geo; |
|
for (int i = 0; i < jc_f.Fields.FieldCount; i++)//划出-灭失 |
|
{ |
|
IField field = jc_f.Fields.Field[i]; |
|
int indexs = gxBuff.Fields.FindField("BGQ" + field.Name); |
|
if (BGZTTemp.Trim() == "新增") |
|
indexs = gxBuff.Fields.FindField("BGH" + field.Name); |
|
if (indexs == -1) continue; |
|
if (string.IsNullOrWhiteSpace(jc_f.Value[i].ToTrim())) |
|
gxBuff.Value[indexs] = DBNull.Value; |
|
else |
|
gxBuff.Value[indexs] = jc_f.Value[i]; |
|
} |
|
int index = gxBuff.Fields.FindField("XZQTZLX"); |
|
int IsCompleteOutIndex = gxBuff.Fields.FindField("IsCompleteOut"); |
|
if (index != -1) |
|
gxBuff.Value[index] = XZQTZLXIndex; |
|
if (IsCompleteOutIndex != -1) |
|
gxBuff.Value[IsCompleteOutIndex] = item.IsCompleteOut ? "true" : "false"; |
|
if (item.BGZT.Contains("新增") || item.BGZT.Contains("灭失") || item.BGZT.Contains("划出")) |
|
{ |
|
int bgmjIndex = gxBuff.Fields.FindField("TBBGMJ"); |
|
if (bgmjIndex != -1) |
|
gxBuff.Value[bgmjIndex] = item.BGMJ.ToDecimal(2); |
|
} |
|
tzCursor.InsertFeature(gxBuff); |
|
} |
|
else if (item.IsHDZLD && BGZTTemp == "属性变化") |
|
{ |
|
IFeature jc_f = jcFc.GetFeature(item.DLTBOid); |
|
int idxJCXZQTZLX = jcFc.FindField("XZQTZLX"); |
|
if (idxJCXZQTZLX != -1) |
|
{ |
|
//jc_f.Value[idxJCXZQTZLX] = XZQTZLXIndex; |
|
//jc_f.Store(); |
|
} |
|
IFeatureBuffer gxBuff = FcAPI_DLTBHRGC.FeatureClass.CreateFeatureBuffer(); |
|
gxBuff.Shape = item.Geo; |
|
for (int i = 0; i < jc_f.Fields.FieldCount; i++) |
|
{ |
|
IField field = jc_f.Fields.Field[i]; |
|
int indexBGQ = gxBuff.Fields.FindField("BGQ" + field.Name); |
|
if (indexBGQ != -1) |
|
{ |
|
if (string.IsNullOrWhiteSpace(jc_f.Value[i].ToTrim())) |
|
gxBuff.Value[indexBGQ] = DBNull.Value; |
|
else |
|
gxBuff.Value[indexBGQ] = jc_f.Value[i]; |
|
} |
|
int indexBGH = gxBuff.Fields.FindField("BGH" + field.Name); |
|
if (indexBGH != -1) |
|
{ |
|
if (string.IsNullOrWhiteSpace(jc_f.Value[i].ToTrim())) |
|
gxBuff.Value[indexBGH] = DBNull.Value; |
|
else |
|
gxBuff.Value[indexBGH] = jc_f.Value[i]; |
|
if (field.Name.Contains("MSSM")) |
|
{ |
|
gxBuff.Value[indexBGH] = "00";//海岛转陆地-变更后描述说明00 |
|
} |
|
int indexBGHHDMC = gxBuff.Fields.FindField("BGHMSSM"); |
|
if (field.Name.Contains("HDMC") && gxBuff.Value[indexBGHHDMC].ToTrim() == "00") |
|
{ |
|
gxBuff.Value[indexBGH] = "";//海岛转陆地-清空海岛名称 |
|
} |
|
} |
|
} |
|
int index = gxBuff.Fields.FindField("XZQTZLX"); |
|
int IsCompleteOutIndex = gxBuff.Fields.FindField("IsCompleteOut"); |
|
if (index != -1) |
|
gxBuff.Value[index] = XZQTZLXIndex; |
|
if (IsCompleteOutIndex != -1) |
|
gxBuff.Value[IsCompleteOutIndex] = item.IsCompleteOut ? "true" : "false"; |
|
int bgmjIndex = gxBuff.Fields.FindField("TBBGMJ"); |
|
if (bgmjIndex != -1) |
|
gxBuff.Value[bgmjIndex] = item.BGMJ.ToDecimal(2); |
|
tzCursor.InsertFeature(gxBuff); |
|
} |
|
} |
|
tzCursor.Flush(); |
|
} |
|
catch (Exception ex) |
|
{ |
|
LogAPI.Debug(ex); |
|
} |
|
finally |
|
{ |
|
Marshal.ReleaseComObject(tzCursor); |
|
} |
|
} |
|
|
|
/// <summary> |
|
/// 划入数据存入SaveDatas |
|
/// </summary> |
|
/// <param name="msGeo"></param> |
|
private void ExtractHCSaveDatas(IGeometry msGeo) |
|
{ |
|
ITopologicalOperator topo = msGeo as ITopologicalOperator; |
|
IGeometry tempGeo = msGeo;// topo.Buffer(-.0001); |
|
List<IFeature> features = FeatureAPI.Identify(tempGeo, JCDLTB_Layer); |
|
IGeometry tempGeo_B = msGeo;// topo.Buffer(0.01); |
|
IRelationalOperator rele = tempGeo_B as IRelationalOperator; |
|
int zldmindex = JCDLTB_Layer.FeatureClass.FindField("ZLDWDM"); |
|
int zlmcindex = JCDLTB_Layer.FeatureClass.FindField("ZLDWMC"); |
|
int tbmjindex = JCDLTB_Layer.FeatureClass.FindField("TBMJ"); |
|
int idxBSM = JCDLTB_Layer.FeatureClass.FindField("BSM"); |
|
int idxJCXZQTZLX = JCDLTB_Layer.FeatureClass.FindField("XZQTZLX"); |
|
int completeCount = 0; |
|
//double completeSumMJ = 0; |
|
int splitCount = 0; |
|
double splitSumMJ = 0; |
|
IFeatureCursor cursorJCDLTB = JCDLTB_Layer.FeatureClass.Insert(true); |
|
foreach (var f in features) |
|
{ |
|
IGeometry jc_Geo = f.ShapeCopy; |
|
if (f.OID == 297803) |
|
{ |
|
} |
|
string bsm = f.Value[idxBSM].ToTrim(); |
|
//if (bsm == "330604211000009840" || bsm == "330604211000014881" || bsm == "330604211000009841" || bsm == "330604211000150767") |
|
//{ |
|
// //continue; |
|
//} |
|
DataModel modelItem = new DataModel(); |
|
modelItem.TC = "DLTB"; |
|
if (rele.Contains(jc_Geo)) |
|
{ |
|
f.Value[idxJCXZQTZLX] = "2"; |
|
f.Store(); |
|
SaveDatas.Add(modelItem); |
|
modelItem.IsCompleteOut = true; |
|
modelItem.DLTBOid = f.OID; |
|
modelItem.IsOut = true; |
|
if (zldmindex != -1) |
|
{ |
|
modelItem.CJDCQInfo = f.Value[zlmcindex].ToTrim() + "-" + f.Value[zldmindex].ToTrim().Substring(0, 12); |
|
modelItem.XZQInfo = f.Value[zldmindex].ToTrim().Substring(0, 9); |
|
modelItem.XJXZQInfo = f.Value[zldmindex].ToTrim().Substring(0, 6); |
|
} |
|
modelItem.BGMJ = f.Value[tbmjindex].ToDouble(); |
|
modelItem.Geo = jc_Geo; |
|
modelItem.BGZT = "划出"; |
|
completeCount++; |
|
//completeSumMJ += modelItem.BGMJ; |
|
continue; |
|
} |
|
else |
|
{ |
|
double kzmj = f.Value[tbmjindex].ToDouble(); |
|
splitCount++; |
|
IGeometry geo = FeatureAPI.InterSect(jc_Geo, msGeo); |
|
if (geo.IsEmpty) continue; |
|
List<IGeometry> geoList = FeatureAPI.DissolveGeometryByRing(geo); |
|
List<DataModel> dataList = new List<DataModel>(); |
|
int i = 0; |
|
foreach (var item in geoList) |
|
{ |
|
i++; |
|
if (i == 1) |
|
{ |
|
f.Shape = item; |
|
f.Value[idxJCXZQTZLX] = "2"; |
|
f.Store(); |
|
} |
|
else |
|
{ |
|
IFeatureBuffer buffer = JCDLTB_Layer.FeatureClass.CreateFeatureBuffer(); |
|
buffer.Shape = item; |
|
for (int j = 0; j < f.Fields.FieldCount; j++) |
|
{ |
|
IField field = f.Fields.Field[j]; |
|
if (field.Editable == false || field.Name.ToUpper().Contains("SHAPE")) continue; |
|
if (field.Name.ToUpper().Contains("TBMJ")) |
|
{ |
|
buffer.Value[j] = kzmj;// itemXZDLTB.BGMJ; |
|
continue; |
|
} |
|
buffer.Value[j] = f.Value[j]; |
|
} |
|
buffer.Value[idxJCXZQTZLX] = "2"; |
|
cursorJCDLTB.InsertFeature(buffer); |
|
cursorJCDLTB.Flush(); |
|
} |
|
DataModel model = new DataModel(); |
|
dataList.Add(model); |
|
model.TC = "DLTB"; |
|
model.Geo = item; |
|
model.BGMJ = (item as IPolygon).GetEllipseArea(); |
|
model.IsOut = true; |
|
model.BGZT = "划出"; |
|
model.DLTBOid = f.OID; |
|
model.CJDCQInfo = f.Value[zlmcindex].ToTrim() + "-" + f.Value[zldmindex].ToTrim().Substring(0, 12); |
|
model.XZQInfo = f.Value[zldmindex].ToTrim().Substring(0, 9); |
|
model.XJXZQInfo = f.Value[zldmindex].ToTrim().Substring(0, 6); |
|
} |
|
IGeometry geo_out = FeatureAPI.Difference(jc_Geo, msGeo); |
|
if (geo_out.IsEmpty) continue; |
|
geoList = FeatureAPI.DissolveGeometryByRing(geo_out); |
|
foreach (var item in geoList) |
|
{ |
|
IFeatureBuffer buffer = JCDLTB_Layer.FeatureClass.CreateFeatureBuffer(); |
|
buffer.Shape = item; |
|
for (int j = 0; j < f.Fields.FieldCount; j++) |
|
{ |
|
IField field = f.Fields.Field[j]; |
|
if (field.Editable == false || field.Name.ToUpper().Contains("SHAPE")) continue; |
|
if (field.Name.ToUpper().Contains("TBMJ")) |
|
{ |
|
buffer.Value[j] = kzmj;// itemXZDLTB.BGMJ; |
|
continue; |
|
} |
|
buffer.Value[j] = f.Value[j]; |
|
} |
|
buffer.Value[idxJCXZQTZLX] = DBNull.Value; |
|
cursorJCDLTB.InsertFeature(buffer); |
|
cursorJCDLTB.Flush(); |
|
|
|
DataModel model = new DataModel(); |
|
dataList.Add(model); |
|
model.TC = "DLTB"; |
|
model.Geo = item; |
|
model.BGMJ = (item as IPolygon).GetEllipseArea(); |
|
model.DLTBOid = f.OID; |
|
model.BGZT = "划出"; |
|
model.CJDCQInfo = f.Value[zlmcindex].ToTrim() + "-" + f.Value[zldmindex].ToTrim().Substring(0, 12); |
|
model.XZQInfo = f.Value[zldmindex].ToTrim().Substring(0, 9); |
|
model.XJXZQInfo = f.Value[zldmindex].ToTrim().Substring(0, 6); |
|
} |
|
JXTZBGHelper.AreaAdjustment(dataList, "BGMJ", kzmj); |
|
splitSumMJ += dataList.Where(w => w.IsOut).Sum(s => s.BGMJ); |
|
SaveDatas.AddRange(dataList); |
|
} |
|
} |
|
} |
|
|
|
/// <summary> |
|
/// 标记城镇村图层数据划出 |
|
/// </summary> |
|
/// <param name="msGeo"></param> |
|
private void SetCZCDYDZT(IGeometry msGeo, string pXZQTZLX) |
|
{ |
|
ITopologicalOperator topo = msGeo as ITopologicalOperator; |
|
IGeometry tempGeo = msGeo;// topo.Buffer(-.01); |
|
List<IFeature> features = FeatureAPI.Identify(tempGeo, JCCZC_Layer); |
|
IGeometry tempGeo_B = msGeo;// topo.Buffer(0.01); |
|
IRelationalOperator rele = tempGeo_B as IRelationalOperator; |
|
int idxXZQTZLX = JCCZC_Layer.FeatureClass.FindField("XZQTZLX"); |
|
IFeatureCursor cursorJCDLTB = JCCZC_Layer.FeatureClass.Insert(true); |
|
foreach (var f in features) |
|
{ |
|
IGeometry jc_Geo = f.ShapeCopy; |
|
if (idxXZQTZLX == -1) continue; |
|
if (!rele.Contains(f.ShapeCopy)) |
|
{ |
|
IGeometry geo = FeatureAPI.InterSect(jc_Geo, msGeo); |
|
if (!geo.IsEmpty) |
|
{ |
|
List<IGeometry> geoList = FeatureAPI.DissolveGeometryByRing(geo); |
|
int i = 0; |
|
foreach (var item in geoList) |
|
{ |
|
i++; |
|
if (i == 1) |
|
{ |
|
f.Shape = item; |
|
f.Value[idxXZQTZLX] = pXZQTZLX; |
|
f.Store(); |
|
} |
|
else |
|
{ |
|
IFeatureBuffer buffer = JCCZC_Layer.FeatureClass.CreateFeatureBuffer(); |
|
buffer.Shape = item; |
|
for (int j = 0; j < f.Fields.FieldCount; j++) |
|
{ |
|
IField field = f.Fields.Field[j]; |
|
if (field.Editable == false || field.Name.ToUpper().Contains("SHAPE")) continue; |
|
buffer.Value[j] = f.Value[j]; |
|
} |
|
buffer.Value[idxXZQTZLX] = pXZQTZLX; |
|
cursorJCDLTB.InsertFeature(buffer); |
|
cursorJCDLTB.Flush(); |
|
} |
|
} |
|
IGeometry geo_out = FeatureAPI.Difference(jc_Geo, msGeo); |
|
if (geo_out.IsEmpty) continue; |
|
geoList = FeatureAPI.DissolveGeometryByRing(geo_out); |
|
foreach (var item in geoList) |
|
{ |
|
IFeatureBuffer buffer = JCCZC_Layer.FeatureClass.CreateFeatureBuffer(); |
|
buffer.Shape = item; |
|
for (int j = 0; j < f.Fields.FieldCount; j++) |
|
{ |
|
IField field = f.Fields.Field[j]; |
|
if (field.Editable == false || field.Name.ToUpper().Contains("SHAPE")) continue; |
|
//if (field.Name.ToUpper().Contains("TBMJ")) |
|
//{ |
|
// buffer.Value[j] = kzmj;// itemXZDLTB.BGMJ; |
|
// continue; |
|
//} |
|
buffer.Value[j] = f.Value[j]; |
|
} |
|
buffer.Value[idxXZQTZLX] = DBNull.Value; |
|
cursorJCDLTB.InsertFeature(buffer); |
|
cursorJCDLTB.Flush(); |
|
} |
|
} |
|
} |
|
else |
|
{ |
|
f.Value[idxXZQTZLX] = pXZQTZLX; |
|
f.Store(); |
|
} |
|
} |
|
} |
|
|
|
/// <summary> |
|
/// 海岛转陆地 |
|
/// </summary> |
|
/// <param name="msGeo"></param> |
|
private void ExtractHDZLDData(IGeometry msGeo) |
|
{ |
|
IGeometry tempGeo = msGeo; |
|
ITopologicalOperator topo = msGeo as ITopologicalOperator; |
|
tempGeo = topo.Buffer(-.01); |
|
//压盖的是海岛转陆地地类图斑 |
|
List<IFeature> features = FeatureAPI.Identify(tempGeo, JCDLTB_Layer); |
|
IGeometry tempGeo_B = topo.Buffer(0.01); |
|
IRelationalOperator rele = tempGeo_B as IRelationalOperator; |
|
int zldmindex = JCDLTB_Layer.FeatureClass.FindField("ZLDWDM"); |
|
int zlmcindex = JCDLTB_Layer.FeatureClass.FindField("ZLDWMC"); |
|
int tbmjindex = JCDLTB_Layer.FeatureClass.FindField("TBMJ"); |
|
int mssmindex = JCDLTB_Layer.FeatureClass.FindField("MSSM"); |
|
int completeCount = 0; |
|
double completeSumMJ = 0; |
|
int splitCount = 0; |
|
double splitSumMJ = 0; |
|
foreach (var f in features) |
|
{ |
|
DataModel modelItem = new DataModel |
|
{ |
|
TC = "DLTB" |
|
}; |
|
if (rele.Contains(f.ShapeCopy)) |
|
{ |
|
SaveDatas.Add(modelItem); |
|
modelItem.IsCompleteOut = true; |
|
modelItem.DLTBOid = f.OID; |
|
modelItem.IsHDZLD = true; |
|
if (zldmindex != -1) |
|
{ |
|
string zldm = f.Value[zldmindex].ToTrim(); |
|
modelItem.CJDCQInfo = f.Value[zlmcindex].ToTrim() + "-" + (zldm.Length > 12 ? zldm.Substring(0, 12) : zldm); |
|
modelItem.XZQInfo = f.Value[zldmindex].ToTrim().Substring(0, 9); |
|
modelItem.XJXZQInfo = f.Value[zldmindex].ToTrim().Substring(0, 6); |
|
} |
|
modelItem.BGMJ = f.ShapeCopy.GetEllipseArea();// f.Value[tbmjindex].ToDouble(); |
|
modelItem.MSSM = "00"; |
|
modelItem.Geo = f.ShapeCopy; |
|
modelItem.BGZT = "海岛转陆地"; |
|
completeCount++; |
|
completeSumMJ += modelItem.BGMJ; |
|
continue; |
|
} |
|
else |
|
{ |
|
double kzmj = f.Value[tbmjindex].ToDouble(); |
|
splitCount++; |
|
IGeometry geo = FeatureAPI.InterSect(f.ShapeCopy, msGeo); |
|
List<IGeometry> geoList = FeatureAPI.DissolveGeometryByRing(geo); |
|
List<DataModel> dataList = new List<DataModel>(); |
|
foreach (var item in geoList) |
|
{ |
|
DataModel model = new DataModel(); |
|
dataList.Add(model); |
|
model.TC = "DLTB"; |
|
model.Geo = item; |
|
model.BGMJ = (item as IPolygon).GetEllipseArea(); |
|
model.DLTBOid = f.OID; |
|
model.IsHDZLD = true; |
|
model.CJDCQInfo = f.Value[zlmcindex].ToTrim() + "-" + f.Value[zldmindex].ToTrim().Substring(0, 12); |
|
model.XZQInfo = f.Value[zldmindex].ToTrim().Substring(0, 9); |
|
model.XJXZQInfo = f.Value[zldmindex].ToTrim().Substring(0, 6); |
|
modelItem.MSSM = "00"; |
|
model.BGZT = "海岛转陆地"; |
|
} |
|
IGeometry geo_out = FeatureAPI.Difference(f.ShapeCopy, msGeo); |
|
geoList = FeatureAPI.DissolveGeometryByRing(geo_out); |
|
foreach (var item in geoList) |
|
{ |
|
DataModel model = new DataModel(); |
|
dataList.Add(model); |
|
model.TC = "DLTB"; |
|
model.Geo = item; |
|
model.BGMJ = (item as IPolygon).GetEllipseArea(); |
|
model.DLTBOid = f.OID; |
|
model.CJDCQInfo = f.Value[zlmcindex].ToTrim() + "-" + f.Value[zldmindex].ToTrim().Substring(0, 12); |
|
model.XZQInfo = f.Value[zldmindex].ToTrim().Substring(0, 9); |
|
model.XJXZQInfo = f.Value[zldmindex].ToTrim().Substring(0, 6); |
|
model.BGZT = "海岛转陆地"; |
|
modelItem.MSSM = "01"; |
|
} |
|
JXTZBGHelper.AreaAdjustment<DataModel>(dataList, "BGMJ", kzmj); |
|
splitSumMJ += dataList.Where(w => w.IsHDZLD).Sum(s => s.BGMJ); |
|
SaveDatas.AddRange(dataList.FindAll(x => x.BGZT.Contains("海岛转陆地") && x.IsHDZLD)); |
|
} |
|
} |
|
} |
|
|
|
/// <summary> |
|
/// 新增数据存入SaveDatas |
|
/// </summary> |
|
/// <param name="msGeo"></param> |
|
private void ExtractXZData(IGeometry msGeo) |
|
{ |
|
IGeometry tempGeo = msGeo; |
|
ITopologicalOperator topo = msGeo as ITopologicalOperator; |
|
tempGeo = topo.Buffer(-.01); |
|
//压盖的是新增地类图斑 |
|
List<IFeature> features = FeatureAPI.Identify(tempGeo, XZDLTB_Layer); |
|
IGeometry tempGeo_B = topo.Buffer(0.01); |
|
IRelationalOperator rele = tempGeo_B as IRelationalOperator; |
|
int zldmindex = XZDLTB_Layer.FeatureClass.FindField("ZLDWDM"); |
|
int zlmcindex = XZDLTB_Layer.FeatureClass.FindField("ZLDWMC"); |
|
int tbmjindex = XZDLTB_Layer.FeatureClass.FindField("TBMJ"); |
|
int mssmindex = XZDLTB_Layer.FeatureClass.FindField("MSSM"); |
|
int completeCount = 0; |
|
double completeSumMJ = 0; |
|
int splitCount = 0; |
|
double splitSumMJ = 0; |
|
foreach (var f in features) |
|
{ |
|
DataModel modelItem = new DataModel(); |
|
modelItem.TC = "DLTB"; |
|
if (rele.Contains(f.ShapeCopy))//rele灭失图斑 |
|
{ |
|
SaveDatas.Add(modelItem); |
|
modelItem.IsCompleteOut = true; |
|
modelItem.DLTBOid = f.OID; |
|
modelItem.IsAdd = true; |
|
if (zldmindex != -1) |
|
{ |
|
string zldm = f.Value[zldmindex].ToTrim(); |
|
modelItem.CJDCQInfo = f.Value[zlmcindex].ToTrim() + "-" + (zldm.Length > 12 ? zldm.Substring(0, 12) : zldm); |
|
modelItem.XZQInfo = f.Value[zldmindex].ToTrim().Substring(0, 9); |
|
modelItem.XJXZQInfo = f.Value[zldmindex].ToTrim().Substring(0, 6); |
|
} |
|
modelItem.BGMJ = (f.ShapeCopy as IPolygon).GetEllipseArea(); |
|
if (mssmindex != -1) |
|
modelItem.MSSM = f.Value[mssmindex].ToTrim(); |
|
modelItem.Geo = f.ShapeCopy; |
|
modelItem.BGZT = "新增"; |
|
completeCount++; |
|
completeSumMJ += modelItem.BGMJ; |
|
continue; |
|
} |
|
else |
|
{ |
|
double kzmj = f.Value[tbmjindex].ToDouble(); |
|
|
|
splitCount++; |
|
IGeometry geo = FeatureAPI.InterSect(f.ShapeCopy, msGeo); |
|
List<IGeometry> geoList = FeatureAPI.DissolveGeometryByRing(geo); |
|
List<DataModel> dataList = new List<DataModel>(); |
|
foreach (var item in geoList) |
|
{ |
|
DataModel model = new DataModel(); |
|
dataList.Add(model); |
|
model.TC = "DLTB"; |
|
model.Geo = item; |
|
model.BGMJ = (item as IPolygon).GetEllipseArea(); |
|
model.IsAdd = true; |
|
model.DLTBOid = f.OID; |
|
model.CJDCQInfo = f.Value[zlmcindex].ToTrim() + "-" + f.Value[zldmindex].ToTrim().Substring(0, 12); |
|
model.XZQInfo = f.Value[zldmindex].ToTrim().Substring(0, 9); |
|
model.XJXZQInfo = f.Value[zldmindex].ToTrim().Substring(0, 6); |
|
if (mssmindex != -1) |
|
modelItem.MSSM = f.Value[mssmindex].ToTrim(); |
|
model.BGZT = "新增"; |
|
} |
|
IGeometry geo_out = FeatureAPI.Difference(f.ShapeCopy, msGeo); |
|
geoList = FeatureAPI.DissolveGeometryByRing(geo_out); |
|
foreach (var item in geoList) |
|
{ |
|
DataModel model = new DataModel(); |
|
dataList.Add(model); |
|
model.TC = "DLTB"; |
|
model.Geo = item; |
|
model.IsOut = false; |
|
model.BGMJ = (item as IPolygon).GetEllipseArea(); |
|
model.DLTBOid = f.OID; |
|
model.CJDCQInfo = f.Value[zlmcindex].ToTrim() + "-" + f.Value[zldmindex].ToTrim().Substring(0, 12); |
|
model.XZQInfo = f.Value[zldmindex].ToTrim().Substring(0, 9); |
|
model.XJXZQInfo = f.Value[zldmindex].ToTrim().Substring(0, 6); |
|
model.BGZT = "新增"; |
|
if (mssmindex != -1) |
|
modelItem.MSSM = f.Value[mssmindex].ToTrim(); |
|
} |
|
JXTZBGHelper.AreaAdjustment<DataModel>(dataList, "BGMJ", kzmj); |
|
splitSumMJ += dataList.Where(w => w.IsOut).Sum(s => s.BGMJ); |
|
SaveDatas.AddRange(dataList.FindAll(x => x.BGZT.Contains("新增") && x.IsOut)); |
|
} |
|
} |
|
} |
|
|
|
/// <summary> |
|
/// 灭失数据存入SaveDatas |
|
/// </summary> |
|
/// <param name="msGeo"></param> |
|
private void ExtractMSData(IGeometry msGeo) |
|
{ |
|
try |
|
{ |
|
IGeometry tempGeo = msGeo; |
|
ITopologicalOperator topo = msGeo as ITopologicalOperator; |
|
tempGeo = topo.Buffer(-.01); |
|
List<IFeature> features = FeatureAPI.Identify(tempGeo, JCDLTB_Layer); |
|
IGeometry tempGeo_B = topo.Buffer(0.01); |
|
IRelationalOperator rele = tempGeo_B as IRelationalOperator; |
|
int zldmindex = JCDLTB_Layer.FeatureClass.FindField("ZLDWDM"); |
|
int zlmcindex = JCDLTB_Layer.FeatureClass.FindField("ZLDWMC"); |
|
int tbmjindex = JCDLTB_Layer.FeatureClass.FindField("TBMJ"); |
|
int mssmindex = JCDLTB_Layer.FeatureClass.FindField("MSSM"); |
|
int completeCount = 0; |
|
double completeSumMJ = 0; |
|
int splitCount = 0; |
|
double splitSumMJ = 0; |
|
|
|
foreach (var JC_f in features) |
|
{ |
|
DataModel modelItem = new DataModel(); |
|
modelItem.TC = "DLTB"; |
|
if (rele.Contains(JC_f.ShapeCopy))//灭失图斑是否包含当前压盖到的基础地类图斑; |
|
{ |
|
modelItem.IsCompleteOut = true; |
|
modelItem.DLTBOid = JC_f.OID; |
|
modelItem.IsOut = true; |
|
if (zldmindex != -1) |
|
{ |
|
modelItem.CJDCQInfo = JC_f.Value[zlmcindex].ToTrim() + "-" + JC_f.Value[zldmindex].ToTrim().Substring(0, 12); |
|
modelItem.XZQInfo = JC_f.Value[zldmindex].ToTrim().Substring(0, 9); |
|
modelItem.XJXZQInfo = JC_f.Value[zldmindex].ToTrim().Substring(0, 6); |
|
} |
|
modelItem.BGMJ = JC_f.Value[tbmjindex].ToDouble(); |
|
modelItem.MSSM = JC_f.Value[mssmindex].ToTrim(); |
|
modelItem.Geo = JC_f.ShapeCopy; |
|
modelItem.BGZT = "灭失"; |
|
completeCount++; |
|
completeSumMJ += modelItem.BGMJ; |
|
SaveDatas.Add(modelItem); |
|
continue; |
|
} |
|
else |
|
{ |
|
double kzmj = JC_f.Value[tbmjindex].ToDouble(); |
|
splitCount++; |
|
IGeometry geo = FeatureAPI.InterSect(JC_f.ShapeCopy, msGeo);//取地类图斑与,灭失图斑相交的部分 |
|
List<IGeometry> geoList = FeatureAPI.DissolveGeometryByRing(geo); |
|
List<DataModel> dataList = new List<DataModel>(); |
|
foreach (var item in geoList) |
|
{ |
|
DataModel model = new DataModel(); |
|
model.TC = "DLTB"; |
|
model.Geo = item; |
|
model.BGMJ = (item as IPolygon).GetEllipseArea(); |
|
model.IsOut = true; |
|
model.DLTBOid = JC_f.OID; |
|
model.CJDCQInfo = JC_f.Value[zlmcindex].ToTrim() + "-" + JC_f.Value[zldmindex].ToTrim().Substring(0, 12); |
|
model.XZQInfo = JC_f.Value[zldmindex].ToTrim().Substring(0, 9); |
|
model.XJXZQInfo = JC_f.Value[zldmindex].ToTrim().Substring(0, 6); |
|
model.MSSM = JC_f.Value[mssmindex].ToTrim(); |
|
model.BGZT = "灭失"; |
|
dataList.Add(model); |
|
} |
|
IGeometry geo_out = FeatureAPI.Difference(JC_f.ShapeCopy, msGeo);//地类图斑擦除灭失图斑 |
|
geoList = FeatureAPI.DissolveGeometryByRing(geo_out); |
|
foreach (var item in geoList) |
|
{ |
|
DataModel model = new DataModel(); |
|
model.TC = "DLTB"; |
|
model.Geo = item; |
|
model.BGMJ = (item as IPolygon).GetEllipseArea(); |
|
model.DLTBOid = JC_f.OID; |
|
model.CJDCQInfo = JC_f.Value[zlmcindex].ToTrim() + "-" + JC_f.Value[zldmindex].ToTrim().Substring(0, 12); |
|
model.XZQInfo = JC_f.Value[zldmindex].ToTrim().Substring(0, 9); |
|
model.XJXZQInfo = JC_f.Value[zldmindex].ToTrim().Substring(0, 6); |
|
model.MSSM = JC_f.Value[mssmindex].ToTrim(); |
|
model.BGZT = "灭失"; |
|
dataList.Add(model); |
|
} |
|
JXTZBGHelper.AreaAdjustment<DataModel>(dataList, "BGMJ", kzmj); |
|
splitSumMJ += dataList.Where(w => w.IsOut && w.BGZT == "灭失").Sum(s => s.BGMJ); |
|
SaveDatas.AddRange(dataList); |
|
} |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
LogAPI.Debug(ex.Message); |
|
throw; |
|
} |
|
} |
|
|
|
/// <summary> |
|
/// 选中 |
|
/// </summary> |
|
/// <param name="sender"></param> |
|
/// <param name="e"></param> |
|
private void CheckBoxClick(object sender, RoutedEventArgs e) |
|
{ |
|
try |
|
{ |
|
if ((sender as CheckBox).IsChecked == true && !string.IsNullOrWhiteSpace((sender as CheckBox).Tag.ToTrim())) |
|
{ |
|
string OIDTemp = (sender as CheckBox).Tag.ToTrim(); |
|
//IFeature feature = XJJXTQTB_Layer.FeatureClass.GetFeature(OIDTemp); |
|
MapsManager.Instance.MapService.SelectFeature("XJJXTQTB", OIDTemp); |
|
} |
|
else |
|
{ |
|
List<int> unSelectedRowsList = new List<int>() { Convert.ToInt32((sender as CheckBox).Tag.ToTrim()) }; |
|
ISelectionSet pSelectionSet = (XJJXTQTB_Layer as IFeatureSelection).SelectionSet;//获取图层要素已被选择的 |
|
pSelectionSet.RemoveList(unSelectedRowsList.Count, ref unSelectedRowsList.ToArray()[0]); |
|
//视图部分刷新 |
|
MapsManager.Instance.MapService.getAxMapControl().ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, null, MapsManager.Instance.MapService.getAxMapControl().ActiveView.Extent); |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
LogAPI.Debug(ex); |
|
} |
|
} |
|
|
|
/// <summary> |
|
/// 坐落/权属批量赋值 |
|
/// </summary> |
|
/// <param name="sender"></param> |
|
/// <param name="e"></param> |
|
private void BtnSetZL_Click(object sender, RoutedEventArgs e) |
|
{ |
|
IFeature feature = null; |
|
IFeatureCursor pCursor = null; |
|
try |
|
{ |
|
if (!string.IsNullOrWhiteSpace(BGQZL.SelectedValue.ToTrim())) |
|
{ |
|
if (!(BGQZL.ItemsSource is List<DataDicTionary> list)) return; |
|
DataDicTionary dic = list.FirstOrDefault(f => f.CODE == BGQZL.SelectedValue.ToTrim()); |
|
if (dic == null) return; |
|
string where = string.Format("(XZQTZLX='1' OR XZQTZLX='3')"); |
|
if (BGQZL.SelectedValue != null && !string.IsNullOrWhiteSpace(dic.NAME)) |
|
where += string.Format(" AND BGQZLDWDM='{0}' ", dic.CODE.ToTrim()); |
|
SetAttribute(where); |
|
LoadData(true); |
|
MessageHelper.ShowTips("坐落/权属批量赋值成功!"); |
|
return; |
|
} |
|
else if (!string.IsNullOrWhiteSpace(btnPath.Text) && External_FC != null && External_FC.FeatureCount(null) > 0) |
|
{ |
|
this.ShowLoading("正在进行坐落/权属批量赋值......", 0, 0); |
|
//FcAPI_DLTBHRGC与External_FC相交 |
|
var idxZLDWDM = External_FC.FindField("ZLDWDM"); |
|
var idxZLDWMC = External_FC.FindField("ZLDWMC"); |
|
if (idxZLDWDM == -1 || idxZLDWMC == -1) |
|
{ |
|
MessageHelper.ShowTips($"当前选择矢量数据{btnPath.Text}中未找到ZLDWDM字段,请确认数据是否正确。"); |
|
return; |
|
} |
|
pCursor = External_FC.Search(null, true); |
|
while ((feature = pCursor.NextFeature()) != null) |
|
{ |
|
string strZLDWDM = feature.Value[idxZLDWDM].ToTrim(); |
|
string strZLDWMC = feature.Value[idxZLDWMC].ToTrim(); |
|
ISpatialFilter spatialFilter = new SpatialFilterClass() |
|
{ |
|
Geometry = feature.ShapeCopy, |
|
SpatialRel = esriSpatialRelEnum.esriSpatialRelContains, |
|
}; |
|
SL_SetAttribute(spatialFilter, strZLDWDM, strZLDWMC); |
|
} |
|
LoadData(true); |
|
this.CloseLoading(); |
|
//查询 变更后 是否存在 没有赋值的ZLDWDM |
|
var count = FcAPI_DLTBHRGC.FeatureClass.FeatureCount(new QueryFilter() { WhereClause = "BGHZLDWDM='' or BGHZLDWDM is null or BGHZLDWMC='' or BGHZLDWMC is null or BGHQSDWDM='' or BGHQSDWDM is null or BGHQSDWMC='' or BGHQSDWMC is null " }); |
|
if (count > 0) |
|
{ |
|
MessageHelper.ShowTips("新增/划入图斑数据与当前选择的矢量数据未完全套合,请检查数据是否正确。"); |
|
} |
|
else |
|
{ |
|
MessageHelper.ShowTips("坐落/权属批量赋值成功!"); |
|
} |
|
return; |
|
} |
|
else |
|
{ |
|
MessageHelper.ShowTips("请选择坐落单位!"); |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
LogAPI.Debug("新增地类图斑坐落统赋:" + ex); |
|
MessageHelper.ShowError("新增地类图斑坐落统赋:" + ex); |
|
} |
|
} |
|
|
|
/// <summary> |
|
/// 权属统赋 |
|
/// </summary> |
|
/// <param name="sender"></param> |
|
/// <param name="e"></param> |
|
private void SetQSDW_Click(object sender, RoutedEventArgs e) |
|
{ |
|
try |
|
{ |
|
DataRow[] drs = (dgInto2.ItemsSource as DataTable).Select("IsValid=True"); |
|
if (drs.Length == 0) |
|
{ |
|
MessageHelper.Show("未选中需要权属统赋的新增图斑!!"); |
|
return; |
|
} |
|
string where = string.Format("XZQTZLX='3'"); |
|
object o = cobQSDWLX.EditValue; |
|
switch (o.ToTrim()) |
|
{ |
|
case "随坐落变化": |
|
SetAttribute("QSDWDM", "", where, "ZLDWDM"); |
|
SetAttribute("QSDWMC", "", where, "ZLDWMC"); |
|
SetAttribute("FRDBS", "0", where); |
|
break; |
|
case "随坐落变化(飞入地除外)": |
|
where = string.Format("XZQTZLX='3' and FRDBS = '0'"); |
|
SetAttribute("QSDWDM", "", where, "ZLDWDM"); |
|
SetAttribute("QSDWMC", "", where, "ZLDWMC"); |
|
break; |
|
case "继承原有权属": |
|
SetAttribute("QSDWDM", "", where, "QSDWDM"); |
|
SetAttribute("QSDWMC", "", where, "QSDWMC"); |
|
break; |
|
default: |
|
break; |
|
} |
|
LoadData(true); |
|
} |
|
catch (Exception ex) |
|
{ |
|
LogAPI.Debug("新增地类图斑权属统赋失败:" + ex); |
|
MessageHelper.ShowError("新增地类图斑权属统赋失败:" + ex); |
|
} |
|
} |
|
/// <summary> |
|
/// 坐落统赋 |
|
/// </summary> |
|
/// <param name="sender"></param> |
|
/// <param name="e"></param> |
|
private void SetZLDW_Click(object sender, RoutedEventArgs e) |
|
{ |
|
try |
|
{ |
|
if (cobZLDW.SelectedItemValue != null) |
|
{ |
|
DataRow[] drs = (dgInto2.ItemsSource as DataTable).Select("IsValid=True"); |
|
if (drs.Length == 0) |
|
{ |
|
MessageHelper.Show("未选中需要坐落统赋的新增图斑!!"); |
|
return; |
|
} |
|
string where = string.Format("XZQTZLX='3'"); |
|
SetAttribute("ZLDWDM", (cobZLDW.SelectedItem as DataDicTionary).CODE, where); |
|
SetAttribute("ZLDWMC", (cobZLDW.SelectedItem as DataDicTionary).NAME, where); |
|
LoadData(true); |
|
} |
|
else |
|
{ |
|
MessageHelper.ShowTips("请选择坐落单位!"); |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
LogAPI.Debug("新增地类图斑坐落统赋:" + ex); |
|
MessageHelper.ShowError("新增地类图斑坐落统赋:" + ex); |
|
} |
|
} |
|
/// <summary> |
|
/// 设置属性 |
|
/// </summary> |
|
/// <param name="pFieldName">字段名称</param> |
|
/// <param name="pValue">赋予值</param> |
|
/// <param name="pWhere">赋值条件</param> |
|
/// <param name="pJCFieldName">基础库字段名称</param> |
|
private void SetAttribute(string pFieldName, string pValue, string pWhere = "", string pJCFieldName = "") |
|
{ |
|
DataRow[] drs = (dgInto2.ItemsSource as DataTable).Select("IsValid=True"); |
|
IQueryFilter filter = null; |
|
if (!string.IsNullOrWhiteSpace(pWhere)) |
|
filter = new QueryFilterClass() { WhereClause = pWhere }; |
|
IFeatureClass targetFc = FcAPI_DLTBBG.FeatureClass; |
|
IFeatureCursor cursor = targetFc.Update(filter, true); |
|
try |
|
{ |
|
IFeature f = null; |
|
int index = targetFc.Fields.FindField(pFieldName); |
|
if (index == -1) |
|
return; |
|
while ((f = cursor.NextFeature()) != null) |
|
{ |
|
drs = (dgInto.ItemsSource as DataTable).Select("OBJECTID=" + f.Value[targetFc.FindField("OBJECTID")]); |
|
if (drs != null && drs.Length > 0 && drs[0]["IsValid"].ToString() != "True") |
|
continue; |
|
if (string.IsNullOrWhiteSpace(pValue) && !string.IsNullOrWhiteSpace(pJCFieldName)) |
|
{ |
|
int sIndex = targetFc.FindField(pJCFieldName); |
|
if (sIndex != -1) |
|
f.Value[index] = f.Value[sIndex]; |
|
} |
|
else |
|
{ |
|
f.Value[index] = pValue; |
|
} |
|
cursor.UpdateFeature(f); |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
LogAPI.Debug(ex); |
|
} |
|
} |
|
|
|
/// <summary> |
|
/// 权属/坐落批量设置属性 |
|
/// </summary> |
|
private void SetAttribute(string pWhere) |
|
{ |
|
IQueryFilter filter = null; |
|
if (!string.IsNullOrWhiteSpace(pWhere)) |
|
filter = new QueryFilterClass() { WhereClause = pWhere }; |
|
IFeatureClass tDLTBHRGCFc = FcAPI_DLTBHRGC.FeatureClass; |
|
IFeatureCursor DLTBHRGCcursor = tDLTBHRGCFc.Update(filter, true); |
|
try |
|
{ |
|
IFeature DLTBHRGCf = null; |
|
int BGHQSDWDMindex = tDLTBHRGCFc.Fields.FindField("BGHQSDWDM"); |
|
int BGHQSDWMCindex = tDLTBHRGCFc.Fields.FindField("BGHQSDWMC"); |
|
int BGQQSDWDMindex = tDLTBHRGCFc.Fields.FindField("BGQQSDWDM"); |
|
int BGQQSDWMCindex = tDLTBHRGCFc.Fields.FindField("BGQQSDWMC"); |
|
int BGHZLDWMCindex = tDLTBHRGCFc.Fields.FindField("BGHZLDWMC"); |
|
int BGHZLDWDMindex = tDLTBHRGCFc.Fields.FindField("BGHZLDWDM"); |
|
int BGHFRDBSindex = tDLTBHRGCFc.Fields.FindField("BGHFRDBS"); |
|
if (BGHQSDWDMindex == -1 || BGHFRDBSindex == -1 || BGQQSDWDMindex == -1 || BGHZLDWDMindex == -1) |
|
return; |
|
List<DataDicTionary> list = BGHZL.ItemsSource as List<DataDicTionary>; |
|
if (list == null) return; |
|
DataDicTionary dic = list.FirstOrDefault(f => f.CODE == BGHZL.SelectedValue.ToTrim()); |
|
if (dic == null) return; |
|
while ((DLTBHRGCf = DLTBHRGCcursor.NextFeature()) != null) |
|
{ |
|
|
|
DLTBHRGCf.Value[BGHZLDWMCindex] = dic.NAME; |
|
DLTBHRGCf.Value[BGHZLDWDMindex] = dic.CODE; |
|
|
|
if (QSBB.IsChecked == true) |
|
{ |
|
DLTBHRGCf.Value[BGHQSDWDMindex] = DLTBHRGCf.Value[BGQQSDWDMindex]; |
|
DLTBHRGCf.Value[BGHQSDWMCindex] = DLTBHRGCf.Value[BGQQSDWMCindex]; |
|
} |
|
else if (QSByZL.IsChecked == true) |
|
{ |
|
DLTBHRGCf.Value[BGHQSDWDMindex] = DLTBHRGCf.Value[BGHZLDWDMindex]; |
|
DLTBHRGCf.Value[BGHQSDWMCindex] = DLTBHRGCf.Value[BGHZLDWMCindex]; |
|
} |
|
else if (QSByZLExitFRD.IsChecked == true && DLTBHRGCf.Value[BGHZLDWMCindex].ToTrim() != "1") |
|
{ //权属随坐落变化(飞入地除外) |
|
DLTBHRGCf.Value[BGHQSDWDMindex] = DLTBHRGCf.Value[BGHZLDWDMindex]; |
|
DLTBHRGCf.Value[BGHQSDWMCindex] = DLTBHRGCf.Value[BGHZLDWMCindex]; |
|
} |
|
DLTBHRGCcursor.UpdateFeature(DLTBHRGCf); |
|
} |
|
DLTBHRGCcursor.Flush(); |
|
} |
|
catch (Exception ex) |
|
{ |
|
LogAPI.Debug(ex); |
|
} |
|
} |
|
|
|
private void SL_SetAttribute(string pWhere, string ZLDWDM, string ZLDWMC) |
|
{ |
|
IQueryFilter filter = null; |
|
if (!string.IsNullOrWhiteSpace(pWhere)) |
|
filter = new QueryFilterClass() { WhereClause = pWhere }; |
|
IFeatureClass tDLTBHRGCFc = FcAPI_DLTBHRGC.FeatureClass; |
|
IFeatureCursor DLTBHRGCcursor = tDLTBHRGCFc.Update(filter, true); |
|
try |
|
{ |
|
IFeature DLTBHRGCf = null; |
|
int BGHQSDWDMindex = tDLTBHRGCFc.Fields.FindField("BGHQSDWDM"); |
|
int BGHQSDWMCindex = tDLTBHRGCFc.Fields.FindField("BGHQSDWMC"); |
|
int BGQQSDWDMindex = tDLTBHRGCFc.Fields.FindField("BGQQSDWDM"); |
|
int BGQQSDWMCindex = tDLTBHRGCFc.Fields.FindField("BGQQSDWMC"); |
|
int BGHZLDWMCindex = tDLTBHRGCFc.Fields.FindField("BGHZLDWMC"); |
|
int BGHZLDWDMindex = tDLTBHRGCFc.Fields.FindField("BGHZLDWDM"); |
|
int BGHFRDBSindex = tDLTBHRGCFc.Fields.FindField("BGHFRDBS"); |
|
if (BGHQSDWDMindex == -1 || BGHFRDBSindex == -1 || BGQQSDWDMindex == -1 || BGHZLDWDMindex == -1) |
|
return; |
|
while ((DLTBHRGCf = DLTBHRGCcursor.NextFeature()) != null) |
|
{ |
|
|
|
DLTBHRGCf.Value[BGHZLDWMCindex] = ZLDWMC; |
|
DLTBHRGCf.Value[BGHZLDWDMindex] = ZLDWDM; |
|
if (QSBB.IsChecked == true) |
|
{ |
|
DLTBHRGCf.Value[BGHQSDWDMindex] = DLTBHRGCf.Value[BGQQSDWDMindex]; |
|
DLTBHRGCf.Value[BGHQSDWMCindex] = DLTBHRGCf.Value[BGQQSDWMCindex]; |
|
} |
|
else if (QSByZL.IsChecked == true) |
|
{ |
|
DLTBHRGCf.Value[BGHQSDWDMindex] = DLTBHRGCf.Value[BGHZLDWDMindex]; |
|
DLTBHRGCf.Value[BGHQSDWMCindex] = DLTBHRGCf.Value[BGHZLDWMCindex]; |
|
} |
|
else if (QSByZLExitFRD.IsChecked == true && DLTBHRGCf.Value[BGHZLDWMCindex].ToTrim() != "1") |
|
{ //权属随坐落变化(飞入地除外) |
|
DLTBHRGCf.Value[BGHQSDWDMindex] = DLTBHRGCf.Value[BGHZLDWDMindex]; |
|
DLTBHRGCf.Value[BGHQSDWMCindex] = DLTBHRGCf.Value[BGHZLDWMCindex]; |
|
} |
|
DLTBHRGCcursor.UpdateFeature(DLTBHRGCf); |
|
} |
|
DLTBHRGCcursor.Flush(); |
|
} |
|
catch (Exception ex) |
|
{ |
|
LogAPI.Debug(ex); |
|
} |
|
} |
|
private void SL_SetAttribute(ISpatialFilter pWhere, string ZLDWDM, string ZLDWMC) |
|
{ |
|
IFeatureClass tDLTBHRGCFc = FcAPI_DLTBHRGC.FeatureClass; |
|
IFeatureCursor DLTBHRGCcursor = tDLTBHRGCFc.Update(pWhere, true); |
|
var xx = tDLTBHRGCFc.FeatureCount(pWhere); |
|
try |
|
{ |
|
IFeature DLTBHRGCf = null; |
|
int BGHQSDWDMindex = tDLTBHRGCFc.Fields.FindField("BGHQSDWDM"); |
|
int BGHQSDWMCindex = tDLTBHRGCFc.Fields.FindField("BGHQSDWMC"); |
|
int BGQQSDWDMindex = tDLTBHRGCFc.Fields.FindField("BGQQSDWDM"); |
|
int BGQQSDWMCindex = tDLTBHRGCFc.Fields.FindField("BGQQSDWMC"); |
|
int BGHZLDWMCindex = tDLTBHRGCFc.Fields.FindField("BGHZLDWMC"); |
|
int BGHZLDWDMindex = tDLTBHRGCFc.Fields.FindField("BGHZLDWDM"); |
|
int BGHFRDBSindex = tDLTBHRGCFc.Fields.FindField("BGHFRDBS"); |
|
if (BGHQSDWDMindex == -1 || BGHFRDBSindex == -1 || BGQQSDWDMindex == -1 || BGHZLDWDMindex == -1) |
|
return; |
|
while ((DLTBHRGCf = DLTBHRGCcursor.NextFeature()) != null) |
|
{ |
|
|
|
DLTBHRGCf.Value[BGHZLDWMCindex] = ZLDWMC; |
|
DLTBHRGCf.Value[BGHZLDWDMindex] = ZLDWDM; |
|
if (QSBB.IsChecked == true) |
|
{ |
|
DLTBHRGCf.Value[BGHQSDWDMindex] = DLTBHRGCf.Value[BGQQSDWDMindex]; |
|
DLTBHRGCf.Value[BGHQSDWMCindex] = DLTBHRGCf.Value[BGQQSDWMCindex]; |
|
} |
|
else if (QSByZL.IsChecked == true) |
|
{ |
|
DLTBHRGCf.Value[BGHQSDWDMindex] = DLTBHRGCf.Value[BGHZLDWDMindex]; |
|
DLTBHRGCf.Value[BGHQSDWMCindex] = DLTBHRGCf.Value[BGHZLDWMCindex]; |
|
} |
|
else if (QSByZLExitFRD.IsChecked == true && DLTBHRGCf.Value[BGHZLDWMCindex].ToTrim() != "1") |
|
{ //权属随坐落变化(飞入地除外) |
|
DLTBHRGCf.Value[BGHQSDWDMindex] = DLTBHRGCf.Value[BGHZLDWDMindex]; |
|
DLTBHRGCf.Value[BGHQSDWMCindex] = DLTBHRGCf.Value[BGHZLDWMCindex]; |
|
} |
|
DLTBHRGCcursor.UpdateFeature(DLTBHRGCf); |
|
} |
|
DLTBHRGCcursor.Flush(); |
|
} |
|
catch (Exception ex) |
|
{ |
|
LogAPI.Debug(ex); |
|
} |
|
} |
|
/// <summary> |
|
/// 根据地类图斑划入过程构造列 |
|
/// </summary> |
|
/// <param name="fields"></param> |
|
private void ConstructColumn(IFields fields) |
|
{ |
|
if (fields != null) |
|
{ |
|
IntoData = new DataTable(); |
|
DataColumn col1 = new DataColumn(); |
|
col1.ColumnName = "IsValid"; |
|
col1.Caption = "选中"; |
|
col1.DataType = typeof(bool); |
|
IntoData.Columns.Add(col1); |
|
for (int i = 0; i < fields.FieldCount; i++) |
|
{ |
|
IField field = fields.get_Field(i); |
|
if (field.Name.ToUpper().StartsWith("SHAPE")) |
|
continue; |
|
DataColumn col = new DataColumn(); |
|
col.ExtendedProperties.Add("index", i); |
|
col.ColumnName = field.Name; |
|
col.Caption = field.AliasName; |
|
switch (field.Type) |
|
{ |
|
case esriFieldType.esriFieldTypeSmallInteger: |
|
col.DataType = typeof(short); |
|
break; |
|
case esriFieldType.esriFieldTypeInteger: |
|
col.DataType = typeof(int); |
|
break; |
|
case esriFieldType.esriFieldTypeSingle: |
|
break; |
|
case esriFieldType.esriFieldTypeDouble: |
|
col.DataType = typeof(double); |
|
break; |
|
case esriFieldType.esriFieldTypeString: |
|
col.DataType = typeof(string); |
|
break; |
|
case esriFieldType.esriFieldTypeDate: |
|
col.DataType = typeof(DateTime); |
|
break; |
|
case esriFieldType.esriFieldTypeOID: |
|
col.DataType = typeof(Int32); |
|
break; |
|
case esriFieldType.esriFieldTypeGeometry: |
|
break; |
|
case esriFieldType.esriFieldTypeBlob: |
|
break; |
|
case esriFieldType.esriFieldTypeRaster: |
|
break; |
|
case esriFieldType.esriFieldTypeGUID: |
|
break; |
|
case esriFieldType.esriFieldTypeGlobalID: |
|
break; |
|
case esriFieldType.esriFieldTypeXML: |
|
break; |
|
default: |
|
break; |
|
} |
|
col.ReadOnly = !field.Editable;//编辑状态启用默认是否可以编辑 |
|
IntoData.Columns.Add(col); |
|
Marshal.ReleaseComObject(field); |
|
} |
|
} |
|
} |
|
|
|
/// <summary> |
|
/// 自定义构造列 |
|
/// </summary> |
|
private void ConstructColumn() |
|
{ |
|
IntoData = new DataTable(); |
|
DataColumn col1 = new DataColumn(); |
|
col1.ColumnName = "IsValid"; |
|
col1.Caption = "选中"; |
|
col1.DataType = typeof(bool); |
|
IntoData.Columns.Add(col1); |
|
|
|
DataColumn col = new DataColumn(); |
|
col.ExtendedProperties.Add("index", 1); |
|
col.ColumnName = "OBJECTID"; |
|
col.Caption = "OID"; |
|
col.ReadOnly = true; |
|
IntoData.Columns.Add(col); |
|
col = new DataColumn(); |
|
col.ExtendedProperties.Add("index", 2); |
|
col.ColumnName = "TBBGMJ"; |
|
col.Caption = "图斑变更面积"; |
|
col.ReadOnly = true; |
|
IntoData.Columns.Add(col); |
|
col = new DataColumn(); |
|
col.ExtendedProperties.Add("index", 3); |
|
col.ColumnName = "BGQQS"; |
|
col.Caption = "变更前权属"; |
|
col.ReadOnly = true; |
|
IntoData.Columns.Add(col); |
|
col = new DataColumn(); |
|
col.ExtendedProperties.Add("index", 4); |
|
col.ColumnName = "BGHQS"; |
|
col.Caption = "变更后权属"; |
|
col.ReadOnly = true; |
|
IntoData.Columns.Add(col); |
|
col = new DataColumn(); |
|
col.ExtendedProperties.Add("index", 5); |
|
col.ColumnName = "BGQZL"; |
|
col.Caption = "变更前坐落"; |
|
col.ReadOnly = true; |
|
IntoData.Columns.Add(col); |
|
col = new DataColumn(); |
|
col.ExtendedProperties.Add("index", 6); |
|
col.ColumnName = "BGHZL"; |
|
col.Caption = "变更后坐落"; |
|
col.ReadOnly = true; |
|
IntoData.Columns.Add(col); |
|
col = new DataColumn(); |
|
col.ExtendedProperties.Add("index", 7); |
|
col.ColumnName = "XZQTZLX"; |
|
col.Caption = "行政区调整类型"; |
|
col.ReadOnly = true; |
|
IntoData.Columns.Add(col); |
|
col = new DataColumn(); |
|
col.ExtendedProperties.Add("index", 8); |
|
col.ColumnName = "IsCompleteOut"; |
|
col.Caption = "是否整图斑划入"; |
|
col.ReadOnly = true; |
|
IntoData.Columns.Add(col); |
|
col = new DataColumn(); |
|
col.ExtendedProperties.Add("index", 9); |
|
col.ColumnName = "JCTBBSM"; |
|
col.Caption = "基础图斑标识码"; |
|
col.ReadOnly = true; |
|
IntoData.Columns.Add(col); |
|
} |
|
|
|
/// <summary> |
|
/// 创建视图列 |
|
/// </summary> |
|
/// <param name="sender"></param> |
|
/// <param name="e"></param> |
|
private void DgInto_AutoGeneratedColumns(object sender, RoutedEventArgs e) |
|
{ |
|
GridControl grid = sender as GridControl; |
|
foreach (GridColumn column in grid.Columns) |
|
{ |
|
if (IntoData.Columns.Contains(column.FieldName)) |
|
{ |
|
string caption = IntoData.Columns[column.FieldName].Caption; |
|
|
|
if (caption != null) |
|
{ |
|
column.EditSettings = new TextEditSettings() { HorizontalContentAlignment = EditSettingsHorizontalAlignment.Left }; |
|
column.Header = caption; |
|
} |
|
} |
|
} |
|
} |
|
|
|
/// <summary> |
|
/// 创建变更层数据 |
|
/// </summary> |
|
/// <param name="jc_F"></param> |
|
/// <param name="Geo"></param> |
|
/// <param name="gxFc"></param> |
|
/// <param name="IsTXBG"></param> |
|
/// <param name="strXZQDM"></param> |
|
/// <param name="bgztTemp"></param> |
|
/// <returns></returns> |
|
private IFeatureBuffer CreateXzqGxFeature(IFeature jc_F, IGeometry Geo, IFeatureClass gxFc, bool IsTXBG, string strXZQDM, string bgztTemp) |
|
{ |
|
IFeatureBuffer buff = gxFc.CreateFeatureBuffer(); |
|
buff.Shape = Geo; |
|
for (int i = 0; i < buff.Fields.FieldCount; i++) |
|
{ |
|
IField field = buff.Fields.Field[i]; |
|
if (field.Name.ToUpper().Contains("SHAPE") || !field.Editable) continue; |
|
int _Index = -1; |
|
if (IsTXBG && field.Name == "BSM") |
|
{ |
|
//图形变更标识码重新赋值 |
|
buff.Value[i] = JXTZBGHelper.GetNewBSM(new List<IFeatureClass>() { jc_F.Class as IFeatureClass, gxFc }); |
|
continue; |
|
} |
|
if (field.Name == "DCMJ") |
|
{ |
|
_Index = jc_F.Fields.FindField(field.Name); |
|
double bgqdcmj = jc_F.Value[_Index].ToDouble(2); |
|
if (strXZQDM.Length == 9) |
|
buff.Value[i] = (bgqdcmj - SaveDatas.Where(w => w.XZQInfo.Contains(strXZQDM) && w.IsOut && w.BGZT.Contains(bgztTemp)).Sum(s => s.BGMJ)).ToDouble(2); |
|
else if (strXZQDM.Length >= 12) |
|
buff.Value[i] = (bgqdcmj - SaveDatas.Where(w => w.CJDCQInfo.Contains(strXZQDM.Substring(0, 12)) && w.IsOut && w.BGZT.Contains(bgztTemp)).Sum(s => s.BGMJ)).ToDouble(2); |
|
continue; |
|
} |
|
_Index = jc_F.Fields.FindField(field.Name); |
|
if (_Index != -1) |
|
{ |
|
buff.Value[i] = jc_F.Value[_Index]; |
|
} |
|
} |
|
return buff; |
|
} |
|
|
|
System.Windows.Forms.DialogResult dialogResultOut = new System.Windows.Forms.DialogResult(); |
|
System.Windows.Forms.DialogResult dialogResultAdd = new System.Windows.Forms.DialogResult(); |
|
/// <summary> |
|
/// 选择(新增,划入,划出,灭失)状态 |
|
/// </summary> |
|
/// <param name="sender"></param> |
|
/// <param name="e"></param> |
|
private void SetTBZT_SelectionChanged(object sender, SelectionChangedEventArgs e) |
|
{ |
|
string OIDTemp = (sender as ComboBox).Tag.ToString(); |
|
if (!string.IsNullOrWhiteSpace(OIDTemp) && (e.Source as ComboBox).SelectedValue != null) |
|
{ |
|
DataModel dataModel = Data.FirstOrDefault(x => x.DLTBOid == Convert.ToInt32(OIDTemp)); |
|
string TempZT = (e.Source as ComboBox).SelectedValue.ToString().Split(':')[1].ToTrim(); |
|
if (dataModel.IsOut && "划出,灭失".Contains(TempZT)) |
|
{ |
|
if (dialogResultOut == System.Windows.Forms.DialogResult.None) |
|
dialogResultOut = MessageHelper.ShowYesNoAndTips("是否同类型(划出/灭失)数据根据当前选择状态批量赋值?"); |
|
if (dialogResultOut == System.Windows.Forms.DialogResult.Yes) |
|
{ |
|
Data.FindAll(x => x.IsOut).ForEach(x => x.BGZT = TempZT); |
|
dialogResultOut = System.Windows.Forms.DialogResult.Ignore; |
|
} |
|
else |
|
Data.FirstOrDefault(x => x.DLTBOid == Convert.ToInt32(OIDTemp)).BGZT = TempZT; |
|
} |
|
else if (dataModel.IsAdd && "新增,划入".Contains(TempZT)) |
|
{ |
|
if (dialogResultAdd == System.Windows.Forms.DialogResult.None) |
|
dialogResultAdd = MessageHelper.ShowYesNoAndTips("是否同类型(划入/新增)数据根据当前选择状态批量赋值?"); |
|
if (dialogResultAdd == System.Windows.Forms.DialogResult.Yes) |
|
{ |
|
Data.FindAll(x => x.IsAdd).ForEach(x => x.BGZT = TempZT); |
|
dialogResultAdd = System.Windows.Forms.DialogResult.Ignore; |
|
} |
|
else |
|
Data.FirstOrDefault(x => x.DLTBOid == Convert.ToInt32(OIDTemp)).BGZT = TempZT; |
|
} |
|
else if (dataModel.IsHDZLD) |
|
MessageHelper.ShowTips("属性变化无需标记状态!"); |
|
else |
|
MessageHelper.ShowError("非期望状态值,请重新选择!"); |
|
dgInto.RefreshData(); |
|
(e.Source as ComboBox).SelectedValue = null; |
|
|
|
if (Data.FirstOrDefault(x => x.BGZT == "新增" || x.BGZT == "划入") != null) |
|
btnAddData.IsEnabled = true; |
|
else |
|
btnAddData.IsEnabled = false; |
|
if (Data.FirstOrDefault(x => string.IsNullOrWhiteSpace(x.BGZT) && x.IsHDZLD == false) != null) |
|
btn.IsEnabled = false; |
|
else |
|
btn.IsEnabled = true; |
|
} |
|
} |
|
|
|
/// <summary> |
|
/// 选择新增/划入的数据 |
|
/// </summary> |
|
/// <param name="sender"></param> |
|
/// <param name="e"></param> |
|
private void BtnSelData_Click(object sender, RoutedEventArgs e) |
|
{ |
|
string xzdltbPaths = ""; |
|
IFeatureClass dltbFc = JXTZBGHelper.GetFeatureClass("请选择新增的地类图斑数据", ref xzdltbPaths); |
|
if (dltbFc != null) |
|
{ |
|
this.btnNewData.Text = xzdltbPaths; |
|
XZDLTB_Layer = GeoDBAPI.CreateFeatureLayerInmemeory("XZDLTB", "新增地类图斑数据", (dltbFc as IGeoDataset).SpatialReference, dltbFc.ShapeType, dltbFc.Fields); |
|
(XZDLTB_Layer.FeatureClass as ITable).DeleteSearchedRows(null); |
|
JXTZBGHelper.InsertDataToMemeoryLayer(dltbFc, XZDLTB_Layer.FeatureClass, null); |
|
} |
|
} |
|
|
|
/// <summary> |
|
/// 坐落分组 |
|
/// </summary> |
|
/// <param name="sender"></param> |
|
/// <param name="e"></param> |
|
private void CheckBox_Click(object sender, RoutedEventArgs e) |
|
{ |
|
dgInto2.ClearGrouping(); |
|
if (ckbBGQZLDWDMByGroup.IsChecked == false || ckbBGHZLDWDMByGroup.IsChecked == false) |
|
ckbXZQTZLXByGroup.IsChecked = false; |
|
if (ckbBGQZLDWDMByGroup.IsChecked == true && dgInto2.ItemsSource != null) |
|
{ |
|
dgInto2.GroupBy("BGQZL", true); |
|
} |
|
if (ckbBGHZLDWDMByGroup.IsChecked == true && dgInto2.ItemsSource != null) |
|
{ |
|
dgInto2.GroupBy("BGHZL", true); |
|
} |
|
} |
|
|
|
private void ckbXZQTZLXByGroup_Click(object sender, RoutedEventArgs e) |
|
{ |
|
dgInto2.ClearGrouping(); |
|
if (ckbXZQTZLXByGroup.IsChecked == true && dgInto2.ItemsSource != null) |
|
{ |
|
dgInto2.GroupBy("XZQTZLX", true); |
|
ckbBGQZLDWDMByGroup.IsChecked = false; |
|
ckbBGHZLDWDMByGroup.IsChecked = false; |
|
} |
|
} |
|
|
|
/// <summary> |
|
/// 外部选择的区划调整数据 |
|
/// </summary> |
|
private IFeatureClass External_FC = null; |
|
|
|
private void btnSLPath_Click(object sender, RoutedEventArgs e) |
|
{ |
|
try |
|
{ |
|
KGIS.Framework.OpenData.Control.OpenDataDialog pDialog = new OpenDataDialog(); |
|
KGIS.Framework.OpenData.InterFace.ISpatialDataObjectFilter pOFilter; |
|
pOFilter = new KGIS.Framework.OpenData.Filter.FilterDatasetsAndLayers(); |
|
pDialog.AddFilter(pOFilter, true); |
|
pDialog.Title = "选择导入的数据"; |
|
pDialog.AllowMultiSelect = false; |
|
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) |
|
{ |
|
foreach (KGIS.Framework.OpenData.InterFace.ISpatialDataObject distObj in pDialog.Selection) |
|
{ |
|
if (distObj.DatasetType == esriDatasetType.esriDTFeatureClass) |
|
{ |
|
External_FC = (distObj.DatasetName as ESRI.ArcGIS.esriSystem.IName).Open() as IFeatureClass; |
|
btnPath.Text = distObj.FullName; |
|
break; |
|
} |
|
} |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
LogAPI.Debug("btnExternalData_Click异常:" + ex.Message); |
|
LogAPI.Debug("btnExternalData_Click异常:" + ex.StackTrace); |
|
} |
|
} |
|
} |
|
}
|
|
|