|
|
|
|
using ESRI.ArcGIS.AnalysisTools;
|
|
|
|
|
using ESRI.ArcGIS.Carto;
|
|
|
|
|
using ESRI.ArcGIS.DataSourcesGDB;
|
|
|
|
|
using ESRI.ArcGIS.Geodatabase;
|
|
|
|
|
using ESRI.ArcGIS.Geometry;
|
|
|
|
|
using ESRI.ArcGIS.Geoprocessing;
|
|
|
|
|
using ESRI.ArcGIS.Geoprocessor;
|
|
|
|
|
using KGIS.Framework.AE;
|
|
|
|
|
using KGIS.Framework.AE.GPHelper;
|
|
|
|
|
using KGIS.Framework.AE.ExtensionMethod;
|
|
|
|
|
using KGIS.Framework.DBOperator;
|
|
|
|
|
using KGIS.Framework.Maps;
|
|
|
|
|
using KGIS.Framework.Platform;
|
|
|
|
|
using KGIS.Framework.Platform.Helper;
|
|
|
|
|
using KGIS.Framework.Utils;
|
|
|
|
|
using KGIS.Framework.Utils.ExtensionMethod;
|
|
|
|
|
using KGIS.Framework.Utils.Helper;
|
|
|
|
|
using Kingo.PluginServiceInterface;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.IO;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Runtime.InteropServices;
|
|
|
|
|
|
|
|
|
|
namespace Kingo.Plugin.LocationChange
|
|
|
|
|
{
|
|
|
|
|
public class BGHelper
|
|
|
|
|
{
|
|
|
|
|
public static void GenerateGxgcData()
|
|
|
|
|
{
|
|
|
|
|
Geoprocessor gp = null;
|
|
|
|
|
IWorkspaceFactory pFtWsFct = null;
|
|
|
|
|
IWorkspaceName workspaceName = null;
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
ProgressHelper.ShowProcessBar("正在生成更新过程数据……");
|
|
|
|
|
IMapService _MapService = MapsManager.Instance.MapService;
|
|
|
|
|
gp = new Geoprocessor()
|
|
|
|
|
{
|
|
|
|
|
OverwriteOutput = true
|
|
|
|
|
};
|
|
|
|
|
IGpValueTableObject gpValueTableObject = new GpValueTableObjectClass();//对两个要素类进行相交运算
|
|
|
|
|
gpValueTableObject.SetColumns(2);
|
|
|
|
|
|
|
|
|
|
string gdbFolder = Directory.GetCurrentDirectory() + "\\Temp\\GXGC";
|
|
|
|
|
if (!Directory.Exists(gdbFolder))
|
|
|
|
|
{
|
|
|
|
|
Directory.CreateDirectory(gdbFolder);
|
|
|
|
|
}
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
DelectDir(gdbFolder);//能删除就删除 删除报错不处理
|
|
|
|
|
}
|
|
|
|
|
catch
|
|
|
|
|
{ }
|
|
|
|
|
|
|
|
|
|
pFtWsFct = new FileGDBWorkspaceFactory();
|
|
|
|
|
|
|
|
|
|
string gdbFileName = Guid.NewGuid().ToString() + ".gdb";
|
|
|
|
|
string path = System.IO.Path.Combine(gdbFolder, gdbFileName);
|
|
|
|
|
|
|
|
|
|
workspaceName = pFtWsFct.Create(gdbFolder, gdbFileName, null, 0);
|
|
|
|
|
|
|
|
|
|
object o1 = _MapService.GetFeatureClassByName("JC_DLTB");
|
|
|
|
|
|
|
|
|
|
IFeatureLayer pdltbFeatureLayer = null;
|
|
|
|
|
GPParamClass gPParamClass = new GPParamClass();
|
|
|
|
|
gPParamClass.FirstFeatureClass = o1 as IFeatureClass;
|
|
|
|
|
gPParamClass.OutFeatureClassPath = path;
|
|
|
|
|
gPParamClass.IsGetOutPutFeature = true;
|
|
|
|
|
GeoprocessorHelper.FeatureClassToFeatureClass(gPParamClass, "JC_DLTB", ref pdltbFeatureLayer);
|
|
|
|
|
IFeatureClass jcFc2 = _MapService.GetFeatureClassByName("XZQTZQJCTB");
|
|
|
|
|
IFeatureClassAPI fcAPI = new FeatureClassAPI(jcFc2);
|
|
|
|
|
fcAPI.FcToFc(pdltbFeatureLayer.FeatureClass, null, false);
|
|
|
|
|
|
|
|
|
|
o1 = pdltbFeatureLayer.FeatureClass;
|
|
|
|
|
object o2 = _MapService.GetFeatureClassByName("DLTBGX");
|
|
|
|
|
|
|
|
|
|
IFeatureClass bgtbFc = MapsManager.Instance.MapService.GetFeatureClassByName("DLTBBG");//PrjDB.gdb基础库
|
|
|
|
|
IFeatureLayer bgtb_Layer = GeoDBAPI.CreateFeatureLayerInmemeory("DLTBGX201", "地类图斑更新201数据", (bgtbFc as IGeoDataset).SpatialReference, bgtbFc.ShapeType, bgtbFc.Fields);
|
|
|
|
|
InsertDataToMemeoryLayer(bgtbFc, bgtb_Layer.FeatureClass, new QueryFilterClass() { WhereClause = "XZQTZLX='1' or XZQTZLX='2' or XZQTZLX='3' or XZQTZLX='4'" });
|
|
|
|
|
|
|
|
|
|
object o3 = bgtb_Layer.FeatureClass;
|
|
|
|
|
gpValueTableObject.AddRow(ref o1);
|
|
|
|
|
gpValueTableObject.AddRow(ref o2);
|
|
|
|
|
|
|
|
|
|
Intersect process = new Intersect();
|
|
|
|
|
process.in_features = gpValueTableObject;
|
|
|
|
|
process.out_feature_class = path + "\\" + "TempDLTBGXGC2";
|
|
|
|
|
process.join_attributes = "ALL";
|
|
|
|
|
IGeoProcessorResult tGeoResult = (IGeoProcessorResult)gp.Execute(process, null);
|
|
|
|
|
if (tGeoResult == null || tGeoResult.Status != ESRI.ArcGIS.esriSystem.esriJobStatus.esriJobSucceeded)
|
|
|
|
|
{
|
|
|
|
|
string msg = ReturnMessages(gp);
|
|
|
|
|
throw new Exception(msg);
|
|
|
|
|
}
|
|
|
|
|
IFeatureClass outFc = GetOutPutFeatureClass(tGeoResult);
|
|
|
|
|
|
|
|
|
|
IFeatureLayer pjbntFeatureLayer = null;
|
|
|
|
|
gPParamClass = new GPParamClass();
|
|
|
|
|
gPParamClass.FirstFeatureClass = outFc;
|
|
|
|
|
gPParamClass.SecondFeatureClass = bgtb_Layer.FeatureClass;
|
|
|
|
|
gPParamClass.OutFeatureClassPath = path + "\\" + "TempDLTBGXGC";
|
|
|
|
|
gPParamClass.IsGetOutPutFeature = true;
|
|
|
|
|
GeoprocessorHelper.UnionAnalysis(gPParamClass, ref pjbntFeatureLayer);
|
|
|
|
|
outFc = pjbntFeatureLayer.FeatureClass;
|
|
|
|
|
gPParamClass = new GPParamClass();
|
|
|
|
|
gPParamClass.FirstFeatureClass = outFc;
|
|
|
|
|
gPParamClass.OutFeatureClassPath = path + "\\" + "TempGXGC_MToS";
|
|
|
|
|
gPParamClass.IsGetOutPutFeature = true;
|
|
|
|
|
GeoprocessorHelper.MultipartToSinglePath(gPParamClass, ref pjbntFeatureLayer);
|
|
|
|
|
outFc = pjbntFeatureLayer.FeatureClass;
|
|
|
|
|
ProgressHelper.CloseProcessBar();
|
|
|
|
|
|
|
|
|
|
Dictionary<int, BGHAttributeModel> bghAttr = new Dictionary<int, BGHAttributeModel>();
|
|
|
|
|
Dictionary<int, GXAttributeModel> gxAttr = new Dictionary<int, GXAttributeModel>();
|
|
|
|
|
|
|
|
|
|
ProgressHelper.ShowProcessBar("正在进行属性赋值……");
|
|
|
|
|
SetAttribue(outFc, ref bghAttr, ref gxAttr);
|
|
|
|
|
ProgressHelper.CloseProcessBar();
|
|
|
|
|
|
|
|
|
|
IFeatureClass hrFc = _MapService.GetFeatureClassByName("DLTBHR");
|
|
|
|
|
ITable dltbhrTb = hrFc as ITable;
|
|
|
|
|
dltbhrTb.DeleteSearchedRows(null);
|
|
|
|
|
IFeatureClass gxgcFc = _MapService.GetFeatureClassByName("DLTBGXGC");
|
|
|
|
|
ITable dltbgxgcTb = gxgcFc as ITable;
|
|
|
|
|
dltbgxgcTb.DeleteSearchedRows(null);
|
|
|
|
|
Dictionary<int, int> target_SourMaping = new Dictionary<int, int>();
|
|
|
|
|
Dictionary<string, object> fieldValues = new Dictionary<string, object>();
|
|
|
|
|
for (int i = 0; i < gxgcFc.Fields.FieldCount; i++)
|
|
|
|
|
{
|
|
|
|
|
IField field = gxgcFc.Fields.Field[i];
|
|
|
|
|
if (!field.Editable || field.Name.Contains(gxgcFc.ShapeFieldName)) continue;
|
|
|
|
|
int sIndex = outFc.FindField(field.Name);
|
|
|
|
|
if (field.Name.StartsWith("BGQ"))
|
|
|
|
|
{
|
|
|
|
|
if (sIndex == -1)
|
|
|
|
|
sIndex = outFc.FindField(field.Name.Replace("BGQ", ""));
|
|
|
|
|
if (sIndex == -1)
|
|
|
|
|
sIndex = outFc.FindField(field.Name.Replace("BGQTB", ""));
|
|
|
|
|
if (sIndex != -1)
|
|
|
|
|
{
|
|
|
|
|
target_SourMaping.Add(i, sIndex);
|
|
|
|
|
fieldValues.Add(field.Name, sIndex);
|
|
|
|
|
}
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
else if (field.Name.StartsWith("BGH"))
|
|
|
|
|
{
|
|
|
|
|
if (sIndex == -1)
|
|
|
|
|
sIndex = outFc.FindField(field.Name.Replace("BGH", "") + "_1");
|
|
|
|
|
if (sIndex == -1)
|
|
|
|
|
sIndex = outFc.FindField(field.Name.Replace("BGHTB", "") + "_1");
|
|
|
|
|
if (sIndex != -1)
|
|
|
|
|
{
|
|
|
|
|
target_SourMaping.Add(i, sIndex);
|
|
|
|
|
fieldValues.Add(field.Name, sIndex);
|
|
|
|
|
}
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
else if (field.Name == "TBBGMJ")
|
|
|
|
|
{
|
|
|
|
|
if (sIndex == -1)
|
|
|
|
|
sIndex = outFc.FindField("TBMJ");
|
|
|
|
|
if (sIndex != -1)
|
|
|
|
|
{
|
|
|
|
|
target_SourMaping.Add(i, sIndex);
|
|
|
|
|
fieldValues.Add(field.Name, sIndex);
|
|
|
|
|
}
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
if (sIndex != -1)
|
|
|
|
|
{
|
|
|
|
|
target_SourMaping.Add(i, sIndex);
|
|
|
|
|
fieldValues.Add(field.Name, sIndex);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
IFeatureCursor hrCursor = hrFc.Insert(true);
|
|
|
|
|
IFeatureCursor t_cursor = gxgcFc.Insert(true);
|
|
|
|
|
IFeatureCursor s_cursor = outFc.Search(null, true);
|
|
|
|
|
IFeature s = null;
|
|
|
|
|
int kdIndex = gxgcFc.FindField("BGHXZDWKD");
|
|
|
|
|
int gxsjIndex = gxgcFc.FindField("GXSJ");
|
|
|
|
|
int bghTBBSMIndex = gxgcFc.FindField("BGHTBBSM");
|
|
|
|
|
int bghTBBHIndex = gxgcFc.FindField("BGHTBBH");
|
|
|
|
|
int bgmjIndex = gxgcFc.FindField("TBBGMJ");
|
|
|
|
|
int bgxwIndex = gxgcFc.FindField("BGXW");
|
|
|
|
|
int xzqtzlxIndex = gxgcFc.FindField("XZQTZLX");
|
|
|
|
|
int bgqkcxsIdx = gxgcFc.FindField("BGQKCXS");
|
|
|
|
|
int bgqkcmjIdx = gxgcFc.FindField("BGQKCMJ");
|
|
|
|
|
int bgqtbdlmjIdx = gxgcFc.FindField("BGQTBDLMJ");
|
|
|
|
|
int bghkcxsIdx = gxgcFc.FindField("BGHKCXS");
|
|
|
|
|
int bghkcmjIdx = gxgcFc.FindField("BGHKCMJ");
|
|
|
|
|
int bghtbdlmjIdx = gxgcFc.FindField("BGHTBDLMJ");
|
|
|
|
|
|
|
|
|
|
ProgressHelper.ShowProcessBar("正在写入数据……");
|
|
|
|
|
int count = outFc.FeatureCount(null);
|
|
|
|
|
double curr = 0;
|
|
|
|
|
IQueryFilter delFilter = new QueryFilterClass() { WhereClause = "1=2" };
|
|
|
|
|
//创建地类图斑变化信息表
|
|
|
|
|
string dbPath = System.IO.Path.GetDirectoryName((MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).GetProjFilePath()) + @"\BGTJ.sqlite";
|
|
|
|
|
IRDBHelper rdbHelper = RDBFactory.CreateDbHelper("Data Source=" + dbPath, DatabaseType.SQLite); ;
|
|
|
|
|
if (!rdbHelper.TableIsExist("BHXXB"))
|
|
|
|
|
{
|
|
|
|
|
rdbHelper.ExecuteSQL(" Create TABLE BHXXB ( BGQTBBSM text(100),BGHTBBSM text(100),BGQTBBH text(100),BGHTBBH text(100),BGQZLDWDM text(100),BGHZLDWDM text(100)," +
|
|
|
|
|
"BGQZLDWMC text(100),BGHZLDWMC text(100),BGQQSDWDM text(100),BGHQSDWDM text(100),BGQQSDWMC text(100),BGHQSDWMC text(100),BGQQSXZ text(100),BGHQSXZ text(100)," +
|
|
|
|
|
"BGQDLBM text(100),BGHDLBM text(100),BGQKCDLBM text(100),BGHKCDLBM text(100),BGQKCXS text(100),BGHKCXS text(100),BGQKCMJ NUMERIC,BGHKCMJ NUMERIC,BGQGDLX text(100),BGHGDLX text(100),BGQGDPDJB text(100),BGHGDPDJB text(100),BGQCZCSXM text(100),BGHCZCSXM text(100)," +
|
|
|
|
|
"BGQTBXHDM text(100),BGHTBXHDM text(100),BGQZZSXDM text(100),BGHZZSXDM text(100),BGQMSSM text(100),BGHMSSM text(100),BGQGDDB text(100),BGHGDDB text(100)," +
|
|
|
|
|
"BGMJ NUMERIC,XZQTZLX text(100),BZ text(10),BGXW text(10) ) ");
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
rdbHelper.ExecuteSQL(" delete from BHXXB where BZ='TBBG'");
|
|
|
|
|
}
|
|
|
|
|
string bhxxbField = "BGQTBBSM,BGHTBBSM,BGQTBBH,BGHTBBH,BGQZLDWDM,BGHZLDWDM,BGQZLDWMC,BGHZLDWMC,BGQQSDWDM,BGHQSDWDM,BGQQSDWMC,BGHQSDWMC,BGQQSXZ,BGHQSXZ,BGQDLBM,BGHDLBM,BGQKCDLBM,BGHKCDLBM,BGQKCXS,BGHKCXS,BGQKCMJ,BGHKCMJ,BGQGDLX,BGHGDLX,BGQGDPDJB,BGHGDPDJB,BGQCZCSXM,BGHCZCSXM,BGQTBXHDM,BGHTBXHDM,BGQZZSXDM,BGHZZSXDM,BGQMSSM,BGHMSSM,BGQGDDB,BGHGDDB,BGMJ,XZQTZLX,BZ,BGXW";
|
|
|
|
|
List<string> strSQL = new List<string>();
|
|
|
|
|
int bgqbsm = outFc.FindField("BSM");
|
|
|
|
|
List<string> delBGHBSM = new List<string>();
|
|
|
|
|
while ((s = s_cursor.NextFeature()) != null)
|
|
|
|
|
{
|
|
|
|
|
curr++;
|
|
|
|
|
if (curr % (count / 100) == 0)
|
|
|
|
|
ProgressHelper.Message = string.Format("正在写入数据……{0}", ((curr / count) * 100).ToDouble(0) + "%");
|
|
|
|
|
string[] bhxxbfieldArr = bhxxbField.Split(',');
|
|
|
|
|
string bhxxbValue = string.Empty;
|
|
|
|
|
foreach (var item in bhxxbfieldArr)
|
|
|
|
|
{
|
|
|
|
|
if (bghAttr.ContainsKey(s.OID))
|
|
|
|
|
{
|
|
|
|
|
if (item == "BGHTBBSM")
|
|
|
|
|
{
|
|
|
|
|
if (bghAttr.ContainsKey(s.OID) && bghAttr[s.OID].XZQTZLX != "4")
|
|
|
|
|
bhxxbValue += string.Format("'{0}',", bghAttr[s.OID].BGHTBBSM);
|
|
|
|
|
else
|
|
|
|
|
bhxxbValue += "'',";
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
if (item == "BGHTBBH")
|
|
|
|
|
{
|
|
|
|
|
if (bghAttr.ContainsKey(s.OID) && bghAttr[s.OID].XZQTZLX != "4")
|
|
|
|
|
bhxxbValue += string.Format("'{0}',", bghAttr[s.OID].BGHTBBH);
|
|
|
|
|
else
|
|
|
|
|
bhxxbValue += "'',";
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
if (item == "BGMJ")
|
|
|
|
|
{
|
|
|
|
|
if (bghAttr.ContainsKey(s.OID))
|
|
|
|
|
bhxxbValue += string.Format("{0},", bghAttr[s.OID].BGMJ);
|
|
|
|
|
else
|
|
|
|
|
bhxxbValue += "0,";
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
if (item == "XZQTZLX")
|
|
|
|
|
{
|
|
|
|
|
if (bghAttr.ContainsKey(s.OID))
|
|
|
|
|
{
|
|
|
|
|
bhxxbValue += string.Format("'{0}',", bghAttr[s.OID].XZQTZLX);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
bhxxbValue += string.Format("'{0}',", 0);
|
|
|
|
|
}
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
if (item == "BGXW")
|
|
|
|
|
{
|
|
|
|
|
if (bghAttr[s.OID].XZQTZLX == "4")
|
|
|
|
|
{
|
|
|
|
|
bhxxbValue += "'0',";
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
if (bghAttr.ContainsKey(s.OID))
|
|
|
|
|
bhxxbValue += string.Format("'{0}',", bghAttr[s.OID].BGXW);
|
|
|
|
|
else
|
|
|
|
|
bhxxbValue += "'',";
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (item == "BZ")
|
|
|
|
|
{
|
|
|
|
|
bhxxbValue += string.Format("'{0}',", "TBBG");
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
if (fieldValues.ContainsKey(item))
|
|
|
|
|
{
|
|
|
|
|
if (item == "BGQKCMJ")
|
|
|
|
|
{
|
|
|
|
|
double bgq_kcxs = s.Value[fieldValues["BGQKCXS"].ToInt()].ToDouble();
|
|
|
|
|
if (bghAttr.ContainsKey(s.OID) && bghAttr[s.OID].XZQTZLX != "3")
|
|
|
|
|
bhxxbValue += string.Format("{0},", (bghAttr[s.OID].BGMJ * bgq_kcxs).ToDecimal(2));
|
|
|
|
|
else
|
|
|
|
|
bhxxbValue += "0,";
|
|
|
|
|
}
|
|
|
|
|
else if (item == "BGHKCMJ")
|
|
|
|
|
{
|
|
|
|
|
double bgh_kcxs = s.Value[fieldValues["BGHKCXS"].ToInt()].ToDouble();
|
|
|
|
|
if (bghAttr.ContainsKey(s.OID) && bghAttr[s.OID].XZQTZLX != "4" && bghAttr[s.OID].XZQTZLX != "2")
|
|
|
|
|
bhxxbValue += string.Format("{0},", (bghAttr[s.OID].BGMJ * bgh_kcxs).ToDecimal(2));
|
|
|
|
|
else
|
|
|
|
|
bhxxbValue += "0,";
|
|
|
|
|
}
|
|
|
|
|
else if (item.StartsWith("BGQ") && bghAttr[s.OID].XZQTZLX == "3")
|
|
|
|
|
{
|
|
|
|
|
bhxxbValue += "'',";
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (bghAttr[s.OID].XZQTZLX == "4" && item.StartsWith("BGH"))
|
|
|
|
|
{
|
|
|
|
|
bhxxbValue += "'',";
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
bhxxbValue += string.Format("'{0}',", s.Value[fieldValues[item].ToInt()]);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
bhxxbValue += string.Format("'{0}',", "");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
bhxxbValue = bhxxbValue.TrimEnd(',');
|
|
|
|
|
string strSQLTemp = string.Format("Insert into BHXXB ({0}) values ({1})", bhxxbField, bhxxbValue);
|
|
|
|
|
//属性变更的,对比变更前、变更后属性是否一直
|
|
|
|
|
if (bghAttr.ContainsKey(s.OID))
|
|
|
|
|
{
|
|
|
|
|
string UnEqualAttr = string.Empty;
|
|
|
|
|
if (bghAttr[s.OID].BGXW == "1" && BGQ_BGH_AttrEqual(s, ref UnEqualAttr) && bghAttr[s.OID].XZQTZLX != "3" && bghAttr[s.OID].XZQTZLX != "4")
|
|
|
|
|
{
|
|
|
|
|
if (bghAttr[s.OID].XZQTZLX == "1")
|
|
|
|
|
{
|
|
|
|
|
IFeatureBuffer hrBuff = hrFc.CreateFeatureBuffer();
|
|
|
|
|
hrBuff.Shape = s.ShapeCopy;
|
|
|
|
|
for (int i = 0; i < hrBuff.Fields.FieldCount; i++)
|
|
|
|
|
{
|
|
|
|
|
IField field = hrBuff.Fields.Field[i];
|
|
|
|
|
if (field.Name.ToUpper().Contains(hrFc.ShapeFieldName) || !field.Editable) continue;
|
|
|
|
|
string strField = field.Name + "_1";
|
|
|
|
|
int sIndex = outFc.FindField(strField);
|
|
|
|
|
if (sIndex == -1) continue;
|
|
|
|
|
hrBuff.Value[i] = s.Value[sIndex];
|
|
|
|
|
}
|
|
|
|
|
int bsmIndex2 = hrFc.FindField("BSM");
|
|
|
|
|
int tbbhIndex2 = hrFc.FindField("TBBH");
|
|
|
|
|
int tbmjIndex2 = hrFc.FindField("TBMJ");
|
|
|
|
|
int kcxsIndex2 = hrFc.FindField("KCXS");
|
|
|
|
|
int tbdlmjIndex2 = hrFc.FindField("TBDLMJ");
|
|
|
|
|
int kcmjIndex2 = hrFc.FindField("KCMJ");
|
|
|
|
|
|
|
|
|
|
if (bsmIndex2 != -1)
|
|
|
|
|
hrBuff.Value[bsmIndex2] = bghAttr[s.OID].BGHTBBSM;
|
|
|
|
|
if (tbbhIndex2 != -1)
|
|
|
|
|
hrBuff.Value[tbbhIndex2] = bghAttr[s.OID].BGHTBBH;
|
|
|
|
|
if (tbmjIndex2 != -1)
|
|
|
|
|
hrBuff.Value[tbmjIndex2] = bghAttr[s.OID].BGMJ;
|
|
|
|
|
if (kcxsIndex2 != -1 && kcmjIndex2 != -1 && tbdlmjIndex2 != -1)
|
|
|
|
|
{
|
|
|
|
|
double kcxs = hrBuff.Value[kcxsIndex2].ToDouble();
|
|
|
|
|
hrBuff.Value[kcmjIndex2] = (bghAttr[s.OID].BGMJ * kcxs).ToDecimal(2);
|
|
|
|
|
hrBuff.Value[tbdlmjIndex2] = (bghAttr[s.OID].BGMJ - (bghAttr[s.OID].BGMJ * kcxs).ToDecimal(2).ToDouble()).ToDecimal(2);
|
|
|
|
|
}
|
|
|
|
|
hrCursor.InsertFeature(hrBuff);
|
|
|
|
|
}
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(UnEqualAttr) || ("1,2,3,4".Contains(bghAttr[s.OID].XZQTZLX) && !string.IsNullOrWhiteSpace(bghAttr[s.OID].XZQTZLX)))
|
|
|
|
|
{
|
|
|
|
|
//仅记录变更一览表,不记录更新层和过程层
|
|
|
|
|
strSQLTemp = strSQLTemp.Replace("TBBG", "ZLBG");
|
|
|
|
|
strSQL.Add(strSQLTemp);
|
|
|
|
|
rdbHelper.ExecuteSQL(string.Format(" delete from BHXXB where BGQTBBSM='{0}' and BGHTBBSM='{0}'", bghAttr[s.OID].BGHTBBSM));
|
|
|
|
|
}
|
|
|
|
|
else if (bghAttr[s.OID].XZQTZLX == "4")
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
delFilter.WhereClause = string.Format("OBJECTID = {0}", bghAttr[s.OID].BGHOID);
|
|
|
|
|
(o2 as ITable).DeleteSearchedRows(delFilter);
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
else if (bghAttr[s.OID].XZQTZLX == "4" && bghAttr[s.OID].BGXW == "1")
|
|
|
|
|
{
|
|
|
|
|
delFilter.WhereClause = string.Format("OBJECTID = {0}", bghAttr[s.OID].BGHOID);
|
|
|
|
|
(o2 as ITable).DeleteSearchedRows(delFilter);
|
|
|
|
|
bghAttr[s.OID].BGXW = "0";
|
|
|
|
|
}
|
|
|
|
|
if (bghAttr[s.OID].XZQTZLX == "3")
|
|
|
|
|
{
|
|
|
|
|
bghAttr[s.OID].BGXW = "3";
|
|
|
|
|
}
|
|
|
|
|
if (bghAttr[s.OID].XZQTZLX == "4")
|
|
|
|
|
{
|
|
|
|
|
bghAttr[s.OID].BGXW = "0";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
IArea area = s.ShapeCopy as IArea;
|
|
|
|
|
strSQL.Add(strSQLTemp);
|
|
|
|
|
IFeatureBuffer buf = gxgcFc.CreateFeatureBuffer();
|
|
|
|
|
foreach (var item in target_SourMaping)
|
|
|
|
|
{
|
|
|
|
|
if (bghAttr.ContainsKey(s.OID))
|
|
|
|
|
{
|
|
|
|
|
if (bghAttr[s.OID].BGXW == "0")
|
|
|
|
|
{
|
|
|
|
|
if (buf.Fields.Field[item.Key].Name.StartsWith("BGH"))
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
else if (bghAttr[s.OID].XZQTZLX == "3")
|
|
|
|
|
{
|
|
|
|
|
if (buf.Fields.Field[item.Key].Name.StartsWith("BGQ"))
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
buf.Value[item.Key] = s.Value[item.Value];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (kdIndex != -1)
|
|
|
|
|
{
|
|
|
|
|
if (buf.Value[kdIndex] != DBNull.Value)
|
|
|
|
|
buf.Value[kdIndex] = buf.Value[kdIndex].ToDouble(1);
|
|
|
|
|
}
|
|
|
|
|
if (gxsjIndex != -1)
|
|
|
|
|
{
|
|
|
|
|
buf.Value[gxsjIndex] = new DateTime(DateTime.Now.Year - 1, 12, 31);
|
|
|
|
|
}
|
|
|
|
|
if (bghAttr.ContainsKey(s.OID))
|
|
|
|
|
{
|
|
|
|
|
double bghkcxs = buf.Value[bghkcxsIdx].ToDouble();
|
|
|
|
|
if (bghAttr[s.OID].BGXW == "0" || bghAttr[s.OID].XZQTZLX == "2" || bghAttr[s.OID].XZQTZLX == "4")
|
|
|
|
|
{
|
|
|
|
|
buf.Value[bghkcmjIdx] = 0;
|
|
|
|
|
buf.Value[bghtbdlmjIdx] = 0;
|
|
|
|
|
if (!delBGHBSM.Contains(bghAttr[s.OID].BGHTBBSM))
|
|
|
|
|
delBGHBSM.Add(bghAttr[s.OID].BGHTBBSM);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (bghTBBSMIndex != -1)
|
|
|
|
|
buf.Value[bghTBBSMIndex] = bghAttr[s.OID].BGHTBBSM;
|
|
|
|
|
if (bghTBBHIndex != -1)
|
|
|
|
|
buf.Value[bghTBBHIndex] = bghAttr[s.OID].BGHTBBH;
|
|
|
|
|
buf.Value[bghkcmjIdx] = (bghAttr[s.OID].BGMJ * bghkcxs).ToDecimal(2);
|
|
|
|
|
buf.Value[bghtbdlmjIdx] = (bghAttr[s.OID].BGMJ - buf.Value[bghkcmjIdx].ToDouble()).ToDecimal(2);
|
|
|
|
|
}
|
|
|
|
|
if (bgmjIndex != -1)
|
|
|
|
|
buf.Value[bgmjIndex] = bghAttr[s.OID].BGMJ;
|
|
|
|
|
if (bgxwIndex != -1)
|
|
|
|
|
buf.Value[bgxwIndex] = bghAttr[s.OID].BGXW;
|
|
|
|
|
if (xzqtzlxIndex != -1)
|
|
|
|
|
{
|
|
|
|
|
buf.Value[xzqtzlxIndex] = string.IsNullOrWhiteSpace(bghAttr[s.OID].XZQTZLX) ? "0" : bghAttr[s.OID].XZQTZLX;
|
|
|
|
|
}
|
|
|
|
|
double bgqkcxs = buf.Value[bgqkcxsIdx].ToDouble();
|
|
|
|
|
if (bghAttr[s.OID].XZQTZLX == "3")
|
|
|
|
|
{
|
|
|
|
|
buf.Value[bgqkcxsIdx] = 0;
|
|
|
|
|
buf.Value[bgqkcmjIdx] = 0;
|
|
|
|
|
buf.Value[bgqtbdlmjIdx] = 0;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
buf.Value[bgqkcmjIdx] = (bghAttr[s.OID].BGMJ * bgqkcxs).ToDecimal(2);
|
|
|
|
|
buf.Value[bgqtbdlmjIdx] = (bghAttr[s.OID].BGMJ - buf.Value[bgqkcmjIdx].ToDouble()).ToDecimal(2);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
buf.Shape = s.ShapeCopy;
|
|
|
|
|
object o = t_cursor.InsertFeature(buf);
|
|
|
|
|
}
|
|
|
|
|
rdbHelper.BeginTransaction();
|
|
|
|
|
count = strSQL.Count;
|
|
|
|
|
curr = 0;
|
|
|
|
|
foreach (var item in strSQL)
|
|
|
|
|
{
|
|
|
|
|
curr++;
|
|
|
|
|
if (curr % (count / 100) == 0)
|
|
|
|
|
ProgressHelper.Message = string.Format("正在写入图斑变化信息……{0}", ((curr / count) * 100).ToDouble(0) + "%");
|
|
|
|
|
rdbHelper.ExecuteSQL(item);
|
|
|
|
|
}
|
|
|
|
|
rdbHelper.Commit();
|
|
|
|
|
rdbHelper.DisConnect();
|
|
|
|
|
t_cursor.Flush();
|
|
|
|
|
hrCursor.Flush();
|
|
|
|
|
ProgressHelper.CloseProcessBar();
|
|
|
|
|
ICursor cursor = (o2 as ITable).Update(null, true);
|
|
|
|
|
IRow row = null;
|
|
|
|
|
int bsmIndex = (o2 as ITable).FindField("BSM");
|
|
|
|
|
int tbbhIndex = (o2 as ITable).FindField("TBBH");
|
|
|
|
|
int tbmjIndex = (o2 as ITable).FindField("TBMJ");
|
|
|
|
|
int kcxsIndex = (o2 as ITable).FindField("KCXS");
|
|
|
|
|
int tbdlmjIndex = (o2 as ITable).FindField("TBDLMJ");
|
|
|
|
|
int kcmjIndex = (o2 as ITable).FindField("KCMJ");
|
|
|
|
|
kdIndex = (o2 as ITable).FindField("XZDWKD");
|
|
|
|
|
while ((row = cursor.NextRow()) != null)
|
|
|
|
|
{
|
|
|
|
|
if (gxAttr.ContainsKey(row.OID) && !delBGHBSM.Contains(gxAttr[row.OID].BSM))
|
|
|
|
|
{
|
|
|
|
|
if (kdIndex != -1)
|
|
|
|
|
{
|
|
|
|
|
row.Value[kdIndex] = row.Value[kdIndex].ToDouble(1);
|
|
|
|
|
}
|
|
|
|
|
if (bsmIndex != -1)
|
|
|
|
|
row.Value[bsmIndex] = gxAttr[row.OID].BSM;
|
|
|
|
|
if (tbbhIndex != -1)
|
|
|
|
|
row.Value[tbbhIndex] = gxAttr[row.OID].TBBH;
|
|
|
|
|
if (tbmjIndex != -1)
|
|
|
|
|
row.Value[tbmjIndex] = gxAttr[row.OID].TBMJ;
|
|
|
|
|
if (kcxsIndex != -1 && kcmjIndex != -1 && tbdlmjIndex != -1)
|
|
|
|
|
{
|
|
|
|
|
double kcxs = row.Value[kcxsIndex].ToDouble();
|
|
|
|
|
row.Value[kcmjIndex] = (gxAttr[row.OID].TBMJ * kcxs).ToDecimal(2);
|
|
|
|
|
row.Value[tbdlmjIndex] = (gxAttr[row.OID].TBMJ - (gxAttr[row.OID].TBMJ * kcxs).ToDecimal(2).ToDouble()).ToDecimal(2);
|
|
|
|
|
}
|
|
|
|
|
cursor.UpdateRow(row);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
delFilter.WhereClause = string.Format("OBJECTID = {0}", row.OID);
|
|
|
|
|
(o2 as ITable).DeleteSearchedRows(delFilter);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
cursor.Flush();
|
|
|
|
|
|
|
|
|
|
IFeatureLayer msTBLayer = GeoDBAPI.CreateFeatureLayerInmemeory("MSDLTB", "灭失图斑", (bgtbFc as IGeoDataset).SpatialReference, bgtbFc.ShapeType, bgtbFc.Fields);
|
|
|
|
|
IQueryFilter filter2 = new QueryFilterClass();
|
|
|
|
|
filter2.WhereClause = " XZQTZLX='2' or XZQTZLX='4'";
|
|
|
|
|
(msTBLayer.FeatureClass as ITable).DeleteSearchedRows(null);
|
|
|
|
|
InsertDataToMemeoryLayer(bgtbFc, msTBLayer.FeatureClass, filter2);
|
|
|
|
|
|
|
|
|
|
gPParamClass = new GPParamClass();
|
|
|
|
|
gPParamClass.FirstFeatureClass = o2 as IFeatureClass;
|
|
|
|
|
gPParamClass.SecondFeatureClass = msTBLayer.FeatureClass;
|
|
|
|
|
gPParamClass.OutFeatureClassPath = path + "\\" + "TempDLTBGX2";
|
|
|
|
|
gPParamClass.IsGetOutPutFeature = true;
|
|
|
|
|
GeoprocessorHelper.EraseAnalysis(gPParamClass, ref pjbntFeatureLayer);
|
|
|
|
|
|
|
|
|
|
IFeatureLayer TempDLTB_MToS = null;
|
|
|
|
|
gPParamClass = new GPParamClass();
|
|
|
|
|
gPParamClass.FirstFeatureClass = pjbntFeatureLayer.FeatureClass;
|
|
|
|
|
gPParamClass.OutFeatureClassPath = path + "\\" + "TempDLTBGX2_MToS";
|
|
|
|
|
gPParamClass.IsGetOutPutFeature = true;
|
|
|
|
|
GeoprocessorHelper.MultipartToSinglePath(gPParamClass, ref TempDLTB_MToS);
|
|
|
|
|
|
|
|
|
|
(o2 as ITable).DeleteSearchedRows(null);
|
|
|
|
|
|
|
|
|
|
InsertDataToMemeoryLayer(TempDLTB_MToS.FeatureClass, o2 as IFeatureClass);
|
|
|
|
|
|
|
|
|
|
IFeatureClass bgFc = MapsManager.Instance.MapService.GetFeatureClassByName("DLTBBG");
|
|
|
|
|
(bgFc as FeatureClass).Workspace.ExecuteSQL("UPDATE DLTBBG SET BGZT = '已变更'");
|
|
|
|
|
IFeatureClass xzqtqFc = MapsManager.Instance.MapService.GetFeatureClassByName("XZQTQTB");
|
|
|
|
|
(xzqtqFc as FeatureClass).Workspace.ExecuteSQL("UPDATE XZQTQTB SET BGZT = '已变更'");
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug("生成更新过程数据失败:");
|
|
|
|
|
LogAPI.Debug(ex);
|
|
|
|
|
MessageHelper.ShowError("生成更新过程数据失败:" + ex.Message);
|
|
|
|
|
}
|
|
|
|
|
finally
|
|
|
|
|
{
|
|
|
|
|
ProgressHelper.CloseProcessBar();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static void InsertDataToMemeoryLayer(IFeatureClass pSource, IFeatureClass pTarget, IQueryFilter pFilter = null)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (pSource == null || pTarget == null) return;
|
|
|
|
|
IFeatureClassAPI fcAPI = new FeatureClassAPI(pSource);
|
|
|
|
|
if (pTarget != null)
|
|
|
|
|
fcAPI.FcToFc(pTarget, pFilter, false);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug("获取城镇村范围数据失败:");
|
|
|
|
|
LogAPI.Debug(ex);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 获取GP任务执行信息
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="gp"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
private static string ReturnMessages(Geoprocessor gp)
|
|
|
|
|
{
|
|
|
|
|
string ms = "";
|
|
|
|
|
if (gp.MessageCount > 0)
|
|
|
|
|
{
|
|
|
|
|
for (int Count = 0; Count <= gp.MessageCount - 1; Count++)
|
|
|
|
|
{
|
|
|
|
|
ms += "$" + gp.GetMessage(Count) + "\n\n";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return ms;
|
|
|
|
|
}
|
|
|
|
|
private static IFeatureClass GetOutPutFeatureClass(IGeoProcessorResult tGeoResult)
|
|
|
|
|
{
|
|
|
|
|
IGPUtilities pGPUtilities = new GPUtilitiesClass();
|
|
|
|
|
IFeatureClass pFeatureClass = null;
|
|
|
|
|
IQueryFilter pQueryFilter = null;
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
pGPUtilities.DecodeFeatureLayer(tGeoResult.GetOutput(0), out pFeatureClass, out pQueryFilter);
|
|
|
|
|
return pFeatureClass;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
throw new Exception("获取生成图层异常:" + ex.Message);
|
|
|
|
|
}
|
|
|
|
|
finally
|
|
|
|
|
{
|
|
|
|
|
if (pQueryFilter != null)
|
|
|
|
|
{
|
|
|
|
|
Marshal.ReleaseComObject(pQueryFilter);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public static void SetAttribue(IFeatureClass pGxgcFc, ref Dictionary<int, BGHAttributeModel> bghAttr, ref Dictionary<int, GXAttributeModel> gxAttr)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
IMapService _MapService = MapsManager.Instance.MapService;
|
|
|
|
|
IFeatureLayer gxLayer = _MapService.GetFeatureLayerByName("DLTBGX");
|
|
|
|
|
IFeatureClass jcFc = _MapService.GetFeatureClassByName("JC_DLTB");
|
|
|
|
|
IQueryFilter filter = new QueryFilterClass() { SubFields = "OBJECTID,FID_JC_DLTB,BSM,TBBH,TBMJ,FID_DLTBGX,ZLDWDM,ZLDWDM_1,XZQTZLX_1,SHAPE_AREA" };
|
|
|
|
|
IFeatureCursor cursor = pGxgcFc.Search(filter, true);
|
|
|
|
|
IFeature fe = null;
|
|
|
|
|
int jcOIDIndex = pGxgcFc.FindField("FID_JC_DLTB");
|
|
|
|
|
int jcTBMJIndex = pGxgcFc.FindField("TBMJ");
|
|
|
|
|
int jcBSMIndex = pGxgcFc.FindField("BSM");
|
|
|
|
|
int jcTBBHIndex = pGxgcFc.FindField("TBBH");
|
|
|
|
|
int gxOIDIndex = pGxgcFc.FindField("FID_DLTBGX");
|
|
|
|
|
int gxZLDWDMIndex = pGxgcFc.FindField("ZLDWDM_1");
|
|
|
|
|
int bgqZLDWDMIndex = pGxgcFc.FindField("ZLDWDM");
|
|
|
|
|
int gxXZQTZLXIndex = pGxgcFc.FindField("XZQTZLX_1");
|
|
|
|
|
int areaIndex = pGxgcFc.FindField("SHAPE_AREA");
|
|
|
|
|
List<OIDMapping> txbgOID = new List<OIDMapping>();
|
|
|
|
|
List<OIDMapping> list = new List<OIDMapping>();
|
|
|
|
|
string msg = "正在进行属性赋值({0})……{1}";
|
|
|
|
|
ProgressHelper.Message = string.Format(msg, 1, "");
|
|
|
|
|
int count = pGxgcFc.FeatureCount(null);
|
|
|
|
|
double curr = 0;
|
|
|
|
|
while ((fe = cursor.NextFeature()) != null)
|
|
|
|
|
{
|
|
|
|
|
curr++;
|
|
|
|
|
if (curr % (count / 100) == 0)
|
|
|
|
|
ProgressHelper.Message = string.Format(msg, 1, ((curr / count) * 100).ToDouble(0) + "%");
|
|
|
|
|
int jcOID = (int)fe.Value[jcOIDIndex];
|
|
|
|
|
double tbmj = fe.Value[jcTBMJIndex].ToDouble();
|
|
|
|
|
double area = fe.Value[areaIndex].ToDouble();
|
|
|
|
|
OIDMapping oMaping = new OIDMapping();
|
|
|
|
|
int gxOID = (int)fe.Value[gxOIDIndex];
|
|
|
|
|
oMaping.gcOID = fe.OID;
|
|
|
|
|
oMaping.bgqOID = jcOID;
|
|
|
|
|
oMaping.bgqTBBSM = fe.Value[jcBSMIndex].ToTrim();
|
|
|
|
|
oMaping.bgqTBBH = fe.Value[jcTBBHIndex].ToTrim();
|
|
|
|
|
oMaping.bghTBBSM = oMaping.bgqTBBSM;
|
|
|
|
|
oMaping.bghTBBH = oMaping.bgqTBBH;
|
|
|
|
|
oMaping.bghOID = gxOID;
|
|
|
|
|
oMaping.bghZLDWDM = fe.Value[gxZLDWDMIndex].ToTrim();
|
|
|
|
|
oMaping.bgqZLDWDM = fe.Value[bgqZLDWDMIndex].ToTrim();
|
|
|
|
|
oMaping.BGMJ = tbmj;
|
|
|
|
|
oMaping.XZQTZLX = string.IsNullOrWhiteSpace(fe.Value[gxXZQTZLXIndex].ToTrim()) ? "0" : fe.Value[gxXZQTZLXIndex].ToTrim();
|
|
|
|
|
if (string.IsNullOrWhiteSpace(oMaping.bghZLDWDM))
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug("存在变更后坐落单位代码为空的数据!请检查变更图斑的坐落单位代码字段是否存在错误数据");
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (!oMaping.bgqZLDWDM.StartsWith(oMaping.bghZLDWDM.Substring(0, 6)))
|
|
|
|
|
oMaping.XZQTZLX = "5";
|
|
|
|
|
}
|
|
|
|
|
list.Add(oMaping);
|
|
|
|
|
}
|
|
|
|
|
string MaxBSM = string.Empty;
|
|
|
|
|
Dictionary<string, int> dicTBBH = new Dictionary<string, int>();
|
|
|
|
|
if (list.Count != 0 && list[0].XZQTZLX == "5")
|
|
|
|
|
{
|
|
|
|
|
MaxBSM = list[0].bghZLDWDM.Substring(0, 6) + "2110" + 1.ToString().PadLeft(8, '0');
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (string.IsNullOrWhiteSpace(MaxBSM))
|
|
|
|
|
MaxBSM = GetNewBSM(new List<IFeatureClass>() { jcFc });
|
|
|
|
|
}
|
|
|
|
|
if (dicTBBH.Count == 0)
|
|
|
|
|
GetMaxTBBH(jcFc, ref dicTBBH);
|
|
|
|
|
IEnumerable<IGrouping<int, OIDMapping>> groupbgq = list.GroupBy(g => g.bgqOID);
|
|
|
|
|
count = groupbgq.Count();
|
|
|
|
|
curr = 0;
|
|
|
|
|
foreach (var item in groupbgq)
|
|
|
|
|
{
|
|
|
|
|
if (item.Key == 71477)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
curr++;
|
|
|
|
|
if (curr % (count / 100) == 0)
|
|
|
|
|
ProgressHelper.Message = string.Format(msg, 2, ((curr / count) * 100).ToDouble(0) + "%");
|
|
|
|
|
List<OIDMapping> tempList = item.ToList();
|
|
|
|
|
if (tempList.Count > 1)
|
|
|
|
|
{
|
|
|
|
|
double kzmj = tempList[0].BGMJ;
|
|
|
|
|
tempList.ForEach(o =>
|
|
|
|
|
{
|
|
|
|
|
string bgqBSM = string.Empty;
|
|
|
|
|
string bghBSM = string.Empty;
|
|
|
|
|
string bsmPrefix = (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).CODE + MaxBSM.Substring(6, 4);
|
|
|
|
|
int MaxNum = Convert.ToInt32(MaxBSM.Substring(9));
|
|
|
|
|
bghBSM = bsmPrefix + (MaxNum + 1).ToString().PadLeft(8, '0');
|
|
|
|
|
MaxBSM = bghBSM;
|
|
|
|
|
|
|
|
|
|
string bgqTBBH = string.Empty;
|
|
|
|
|
string bghTBBH = string.Empty;
|
|
|
|
|
string strZLDW = o.bghZLDWDM;
|
|
|
|
|
if (dicTBBH.ContainsKey(strZLDW))
|
|
|
|
|
{
|
|
|
|
|
dicTBBH[strZLDW] = dicTBBH[strZLDW] + 1;
|
|
|
|
|
bghTBBH = dicTBBH[strZLDW].ToTrim();
|
|
|
|
|
}
|
|
|
|
|
else//新增村
|
|
|
|
|
{
|
|
|
|
|
dicTBBH.Add(strZLDW, 1);
|
|
|
|
|
bghTBBH = dicTBBH[strZLDW].ToTrim();
|
|
|
|
|
}
|
|
|
|
|
o.IsTXBG = true;
|
|
|
|
|
o.bghTBBSM = MaxBSM;
|
|
|
|
|
o.bghTBBH = bghTBBH;
|
|
|
|
|
o.IsSplit = true;
|
|
|
|
|
IFeature gcF = pGxgcFc.GetFeature(o.gcOID);
|
|
|
|
|
o.BGMJ = (gcF.ShapeCopy as IPolygon).GetEllipseArea();
|
|
|
|
|
Marshal.ReleaseComObject(gcF);
|
|
|
|
|
});
|
|
|
|
|
tempList = tempList.OrderByDescending(o => o.BGMJ).ToList();
|
|
|
|
|
double mjc = (tempList.Sum(s => s.BGMJ).ToDouble(2) - kzmj).ToDouble(2);
|
|
|
|
|
while (mjc != 0)
|
|
|
|
|
{
|
|
|
|
|
int tpsm = (int)(Math.Abs(Math.Round(mjc, 2)) / 0.01);
|
|
|
|
|
int e = tpsm / tempList.Count;
|
|
|
|
|
int f = tpsm % tempList.Count;
|
|
|
|
|
if (f != 0)
|
|
|
|
|
{
|
|
|
|
|
double tpmj = (e + 1) * 0.01;
|
|
|
|
|
for (int i = 0; i < f; i++)
|
|
|
|
|
{
|
|
|
|
|
if (mjc < 0)
|
|
|
|
|
tempList[i].BGMJ += tpmj;
|
|
|
|
|
else
|
|
|
|
|
tempList[i].BGMJ -= tpmj;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (e != 0)
|
|
|
|
|
{
|
|
|
|
|
double tpmj = e * 0.01;
|
|
|
|
|
for (int i = f; i < tempList.Count; i++)
|
|
|
|
|
{
|
|
|
|
|
if (mjc < 0)
|
|
|
|
|
tempList[i].BGMJ += tpmj;
|
|
|
|
|
else
|
|
|
|
|
tempList[i].BGMJ -= tpmj;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
mjc = (tempList.Sum(s => s.BGMJ).ToDouble(2) - kzmj).ToDouble(2);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else if (tempList[0].XZQTZLX == "1" || tempList[0].XZQTZLX == "3" || tempList[0].XZQTZLX == "5")
|
|
|
|
|
{
|
|
|
|
|
string bghBSM = string.Empty;
|
|
|
|
|
string bsmPrefix = (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).CODE + MaxBSM.Substring(6, 4);
|
|
|
|
|
int MaxNum = Convert.ToInt32(MaxBSM.Substring(9));
|
|
|
|
|
bghBSM = bsmPrefix + (MaxNum + 1).ToString().PadLeft(8, '0');
|
|
|
|
|
MaxBSM = bghBSM;
|
|
|
|
|
tempList[0].bghTBBSM = bghBSM;
|
|
|
|
|
if (tempList[0].XZQTZLX != "5")
|
|
|
|
|
{
|
|
|
|
|
string bghTBBH = string.Empty;
|
|
|
|
|
string strZLDW = item.ToList()[0].bghZLDWDM;
|
|
|
|
|
if (dicTBBH.ContainsKey(strZLDW))
|
|
|
|
|
{
|
|
|
|
|
dicTBBH[strZLDW] = dicTBBH[strZLDW] + 1;
|
|
|
|
|
bghTBBH = dicTBBH[strZLDW].ToTrim();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{//新增村
|
|
|
|
|
dicTBBH.Add(strZLDW, 1);
|
|
|
|
|
bghTBBH = dicTBBH[strZLDW].ToTrim();
|
|
|
|
|
}
|
|
|
|
|
tempList[0].bghTBBH = bghTBBH;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else if (tempList.Count == 1)
|
|
|
|
|
{
|
|
|
|
|
//属性变更,坐落单位变化,重新赋值图斑编号
|
|
|
|
|
if (tempList[0].bghZLDWDM != tempList[0].bgqZLDWDM && tempList[0].IsTXBG == false)
|
|
|
|
|
{
|
|
|
|
|
if (dicTBBH.ContainsKey(tempList[0].bghZLDWDM))
|
|
|
|
|
{
|
|
|
|
|
dicTBBH[tempList[0].bghZLDWDM] = dicTBBH[tempList[0].bghZLDWDM] + 1;
|
|
|
|
|
tempList[0].bghTBBH = dicTBBH[tempList[0].bghZLDWDM].ToTrim();
|
|
|
|
|
}
|
|
|
|
|
else//新增村
|
|
|
|
|
{
|
|
|
|
|
dicTBBH.Add(tempList[0].bghZLDWDM, 1);
|
|
|
|
|
tempList[0].bghTBBH = dicTBBH[tempList[0].bghZLDWDM].ToTrim();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
groupbgq = list.GroupBy(g => g.bghOID);
|
|
|
|
|
count = groupbgq.Count();
|
|
|
|
|
curr = 0;
|
|
|
|
|
foreach (var item in groupbgq)
|
|
|
|
|
{
|
|
|
|
|
curr++;
|
|
|
|
|
if (curr % (count / 100) == 0)
|
|
|
|
|
ProgressHelper.Message = string.Format(msg, 3, ((curr / count) * 100).ToDouble(0) + "%");
|
|
|
|
|
List<OIDMapping> tempList = item.ToList();
|
|
|
|
|
if (tempList.Count > 1)
|
|
|
|
|
{
|
|
|
|
|
string bgqBSM = string.Empty;
|
|
|
|
|
string bghBSM = string.Empty;
|
|
|
|
|
if (string.IsNullOrWhiteSpace(MaxBSM))
|
|
|
|
|
MaxBSM = GetNewBSM(new List<IFeatureClass>() { jcFc });
|
|
|
|
|
string bsmPrefix = (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).CODE + MaxBSM.Substring(6, 4);
|
|
|
|
|
int MaxNum = Convert.ToInt32(MaxBSM.Substring(9));
|
|
|
|
|
bghBSM = bsmPrefix + (MaxNum + 1).ToString().PadLeft(8, '0');
|
|
|
|
|
MaxBSM = bghBSM;
|
|
|
|
|
|
|
|
|
|
string bgqTBBH = string.Empty;
|
|
|
|
|
string bghTBBH = string.Empty;
|
|
|
|
|
string strZLDW = item.ToList()[0].bghZLDWDM;
|
|
|
|
|
if (dicTBBH.Count == 0)
|
|
|
|
|
GetMaxTBBH(jcFc, ref dicTBBH);
|
|
|
|
|
if (dicTBBH.ContainsKey(strZLDW))
|
|
|
|
|
{
|
|
|
|
|
dicTBBH[strZLDW] = dicTBBH[strZLDW] + 1;
|
|
|
|
|
bghTBBH = dicTBBH[strZLDW].ToTrim();
|
|
|
|
|
}
|
|
|
|
|
else//新增村
|
|
|
|
|
{
|
|
|
|
|
dicTBBH.Add(strZLDW, 1);
|
|
|
|
|
bghTBBH = dicTBBH[strZLDW].ToTrim();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
item.ToList().ForEach(o =>
|
|
|
|
|
{
|
|
|
|
|
o.IsTXBG = true;
|
|
|
|
|
o.bghTBBSM = MaxBSM;
|
|
|
|
|
o.bghTBBH = bghTBBH;
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
else if (tempList[0].XZQTZLX == "1" || tempList[0].XZQTZLX == "3" || tempList[0].XZQTZLX == "5")
|
|
|
|
|
{
|
|
|
|
|
string bghBSM = string.Empty;
|
|
|
|
|
string bsmPrefix = (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).CODE + MaxBSM.Substring(6, 4);
|
|
|
|
|
int MaxNum = Convert.ToInt32(MaxBSM.Substring(9));
|
|
|
|
|
bghBSM = bsmPrefix + (MaxNum + 1).ToString().PadLeft(8, '0');
|
|
|
|
|
MaxBSM = bghBSM;
|
|
|
|
|
tempList[0].bghTBBSM = bghBSM;
|
|
|
|
|
if (tempList[0].XZQTZLX != "5")
|
|
|
|
|
{
|
|
|
|
|
string bghTBBH = string.Empty;
|
|
|
|
|
string strZLDW = item.ToList()[0].bghZLDWDM;
|
|
|
|
|
if (dicTBBH.ContainsKey(strZLDW))
|
|
|
|
|
{
|
|
|
|
|
dicTBBH[strZLDW] = dicTBBH[strZLDW] + 1;
|
|
|
|
|
bghTBBH = dicTBBH[strZLDW].ToTrim();
|
|
|
|
|
}
|
|
|
|
|
else//新增村
|
|
|
|
|
{
|
|
|
|
|
dicTBBH.Add(strZLDW, 1);
|
|
|
|
|
bghTBBH = dicTBBH[strZLDW].ToTrim();
|
|
|
|
|
}
|
|
|
|
|
tempList[0].bghTBBH = bghTBBH;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
int idxBGQBSM = pGxgcFc.FindField("BSM");
|
|
|
|
|
int idxBGHBSM = pGxgcFc.FindField("BSM_1");
|
|
|
|
|
int idxBGQTBBH = pGxgcFc.FindField("TBBH");
|
|
|
|
|
int idxBGHTBBH = pGxgcFc.FindField("TBBH_1");
|
|
|
|
|
int idxBGHZLDW = pGxgcFc.FindField("ZLDWDM_1");
|
|
|
|
|
int idxTBMJ = pGxgcFc.FindField("TBMJ");
|
|
|
|
|
int idxGXBSM = gxLayer.FeatureClass.FindField("BSM");
|
|
|
|
|
List<IFeatureClass> fcList = new List<IFeatureClass>() { jcFc };
|
|
|
|
|
count = list.Count;
|
|
|
|
|
curr = 0;
|
|
|
|
|
foreach (var item in list)
|
|
|
|
|
{
|
|
|
|
|
curr++;
|
|
|
|
|
if (curr % (count / 100) == 0)
|
|
|
|
|
ProgressHelper.Message = string.Format(msg, 4, ((curr / count) * 100).ToDouble(0) + "%");
|
|
|
|
|
if (!bghAttr.ContainsKey(item.gcOID))
|
|
|
|
|
{
|
|
|
|
|
bghAttr.Add(item.gcOID, new BGHAttributeModel()
|
|
|
|
|
{
|
|
|
|
|
BGHOID = item.bghOID,
|
|
|
|
|
BGHTBBH = item.bghTBBH,
|
|
|
|
|
BGHTBBSM = item.bghTBBSM,
|
|
|
|
|
BGMJ = item.BGMJ,
|
|
|
|
|
BGXW = item.IsTXBG ? "2" : "1",
|
|
|
|
|
XZQTZLX = item.XZQTZLX
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
if (bghAttr[item.gcOID].XZQTZLX == "3")
|
|
|
|
|
bghAttr[item.gcOID].BGXW = "3";
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
bghAttr[item.gcOID] = new BGHAttributeModel()
|
|
|
|
|
{
|
|
|
|
|
BGHOID = item.bghOID,
|
|
|
|
|
BGHTBBH = item.bghTBBH,
|
|
|
|
|
BGHTBBSM = item.bghTBBSM,
|
|
|
|
|
BGMJ = item.BGMJ,
|
|
|
|
|
BGXW = item.IsTXBG ? "2" : "1",
|
|
|
|
|
XZQTZLX = item.XZQTZLX
|
|
|
|
|
};
|
|
|
|
|
if (bghAttr[item.gcOID].XZQTZLX == "3")
|
|
|
|
|
bghAttr[item.gcOID].BGXW = "3";
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
if (item.XZQTZLX == "4")
|
|
|
|
|
continue;
|
|
|
|
|
if (!gxAttr.ContainsKey(item.bghOID))
|
|
|
|
|
{
|
|
|
|
|
gxAttr.Add(item.bghOID, new GXAttributeModel()
|
|
|
|
|
{
|
|
|
|
|
TBBH = item.bghTBBH,
|
|
|
|
|
BSM = item.bghTBBSM,
|
|
|
|
|
TBMJ = item.BGMJ
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
gxAttr[item.bghOID].TBMJ += item.BGMJ;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
dtBHXXBTBBH.Clear();
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug("属性赋值失败:");
|
|
|
|
|
LogAPI.Debug(ex);
|
|
|
|
|
}
|
|
|
|
|
finally
|
|
|
|
|
{
|
|
|
|
|
dtBHXXBTBBH.Clear();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
static System.Data.DataTable dtBHXXBTBBH = new System.Data.DataTable();
|
|
|
|
|
private static bool BGQ_BGH_AttrEqual(IFeature pf, ref string UnEqualAttr)
|
|
|
|
|
{
|
|
|
|
|
bool result = true;
|
|
|
|
|
for (int i = 0; i < pf.Fields.FieldCount; i++)
|
|
|
|
|
{
|
|
|
|
|
IField field = pf.Fields.Field[i];
|
|
|
|
|
if ("BSM,TBBH,TBYBH,YSDM,BZ".Contains(field.Name.ToUpper()) || field.Name.ToUpper().Contains("MJ")) continue;
|
|
|
|
|
int bghIdx = pf.Fields.FindField(field.Name.ToUpper() + "_1");
|
|
|
|
|
if (bghIdx == -1) continue;
|
|
|
|
|
if ("BSM,TBBH,ZLDWDM,ZLDWMC,QSDWDM,QSDWMC".Contains(field.Name.ToUpper()))
|
|
|
|
|
{
|
|
|
|
|
if (pf.Value[i].ToTrim() != pf.Value[bghIdx].ToTrim())
|
|
|
|
|
{
|
|
|
|
|
UnEqualAttr += field.Name.ToUpper() + ",";
|
|
|
|
|
}
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
if (!Equals(pf.Value[i].ToTrim(), pf.Value[bghIdx].ToTrim()))
|
|
|
|
|
{
|
|
|
|
|
result = false;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
private new static bool Equals(object obj1, object obj2)
|
|
|
|
|
{
|
|
|
|
|
if (obj1 == null || obj1 is DBNull)
|
|
|
|
|
{
|
|
|
|
|
obj1 = "";
|
|
|
|
|
}
|
|
|
|
|
if (obj2 == null || obj2 is DBNull)
|
|
|
|
|
{
|
|
|
|
|
obj2 = "";
|
|
|
|
|
}
|
|
|
|
|
if (obj2.ToString() == "0")
|
|
|
|
|
obj2 = "";
|
|
|
|
|
if (obj1.ToString() == "0")
|
|
|
|
|
obj1 = "";
|
|
|
|
|
if (obj1.ToTrim() == obj2.ToTrim())
|
|
|
|
|
{
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#region 获取最新图斑编号
|
|
|
|
|
//private static int GetNewTBBH(List<IFeatureClass> fc, string pZLDWDM)
|
|
|
|
|
//{
|
|
|
|
|
// int result = 0;
|
|
|
|
|
// foreach (var item in fc)
|
|
|
|
|
// {
|
|
|
|
|
// int maxTBBH = GetMaxTBBH(item, pZLDWDM);
|
|
|
|
|
// //LogAPI.Debug(item.AliasName + "的 坐落单位代码(" + pZLDWDM + ") 当前的 最大图斑编号(TBBH): " + maxTBBH + " ;\r\n ");//验证专用日志
|
|
|
|
|
// if (result < maxTBBH)
|
|
|
|
|
// result = maxTBBH;
|
|
|
|
|
// }
|
|
|
|
|
// result++;
|
|
|
|
|
|
|
|
|
|
// return result;
|
|
|
|
|
//}
|
|
|
|
|
private static void GetMaxTBBH(IFeatureClass fc, ref Dictionary<string, int> result)
|
|
|
|
|
{
|
|
|
|
|
ICursor cursor = (fc as ITable).Search(new QueryFilterClass() { SubFields = "ZLDWDM,TBBH" }, true);
|
|
|
|
|
IRow row = null;
|
|
|
|
|
int zlIndex = -1;
|
|
|
|
|
int bhIndex = -1;
|
|
|
|
|
while ((row = cursor.NextRow()) != null)
|
|
|
|
|
{
|
|
|
|
|
if (zlIndex == -1)
|
|
|
|
|
zlIndex = row.Fields.FindField("ZLDWDM");
|
|
|
|
|
if (bhIndex == -1)
|
|
|
|
|
bhIndex = row.Fields.FindField("TBBH");
|
|
|
|
|
if (zlIndex != -1 && bhIndex != -1)
|
|
|
|
|
{
|
|
|
|
|
string zl = row.Value[zlIndex].ToTrim();
|
|
|
|
|
zl = zl.Replace(zl.Substring(0, 6), (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).CODE);
|
|
|
|
|
int tbbh = 0;
|
|
|
|
|
int.TryParse(row.Value[bhIndex].ToString(), out tbbh);
|
|
|
|
|
|
|
|
|
|
if (result.ContainsKey(zl))
|
|
|
|
|
{
|
|
|
|
|
if (result[zl] < tbbh)
|
|
|
|
|
result[zl] = tbbh;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
result.Add(zl, tbbh);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region 获取最新标识码
|
|
|
|
|
public static string GetNewBSM(List<IFeatureClass> fcList)
|
|
|
|
|
{
|
|
|
|
|
string result = string.Empty;
|
|
|
|
|
int xh = 0;
|
|
|
|
|
string leftStr = string.Empty;
|
|
|
|
|
foreach (var item in fcList)
|
|
|
|
|
{
|
|
|
|
|
string MaxBSM = GetMaxBSM(item);
|
|
|
|
|
if (MaxBSM.Length != 18)
|
|
|
|
|
continue;
|
|
|
|
|
int xh2 = Convert.ToInt32(MaxBSM.Substring(10));
|
|
|
|
|
leftStr = MaxBSM.Substring(0, 10);
|
|
|
|
|
if (xh < xh2)
|
|
|
|
|
xh = xh2;
|
|
|
|
|
}
|
|
|
|
|
xh++;
|
|
|
|
|
if (string.IsNullOrWhiteSpace(leftStr))
|
|
|
|
|
leftStr = (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).CODE + "1210";
|
|
|
|
|
result = leftStr + xh.ToString().PadLeft(8, '0');
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
private static string GetMaxBSM(IFeatureClass fc)
|
|
|
|
|
{
|
|
|
|
|
System.Windows.Forms.Application.DoEvents();
|
|
|
|
|
string BSM = string.Empty;
|
|
|
|
|
int BSMIndex = fc.FindField("BSM");
|
|
|
|
|
if (BSMIndex == -1) return BSM;
|
|
|
|
|
|
|
|
|
|
ITable table = (ITable)fc;
|
|
|
|
|
// 创建一个ITableSort接口对象
|
|
|
|
|
ITableSort tableSort = new TableSortClass();
|
|
|
|
|
tableSort.Table = table;
|
|
|
|
|
tableSort.Fields = "BSM";
|
|
|
|
|
tableSort.set_Ascending("BSM", false);
|
|
|
|
|
tableSort.Sort(null);
|
|
|
|
|
ICursor cursor = tableSort.Rows;
|
|
|
|
|
IRow row = cursor.NextRow();
|
|
|
|
|
if (row != null)
|
|
|
|
|
{
|
|
|
|
|
int maxBSM = 0;
|
|
|
|
|
int currBSM = 0;
|
|
|
|
|
string BSMStr = row.Value[BSMIndex].ToString();
|
|
|
|
|
if (BSMStr.Length != 18) return BSM;
|
|
|
|
|
string subBSMStr = BSMStr.Substring(9);
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
currBSM = Convert.ToInt32(subBSMStr);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception)
|
|
|
|
|
{
|
|
|
|
|
return BSM;
|
|
|
|
|
}
|
|
|
|
|
if (currBSM > maxBSM) maxBSM = currBSM;
|
|
|
|
|
|
|
|
|
|
if (BSMStr.Length != 18) return BSM;
|
|
|
|
|
string maxStr = maxBSM.ToString();
|
|
|
|
|
int zeroNum = 9 - maxStr.Length;
|
|
|
|
|
for (int i = 0; i < zeroNum; i++)
|
|
|
|
|
{
|
|
|
|
|
maxStr = 0 + maxStr;
|
|
|
|
|
}
|
|
|
|
|
BSM = BSMStr.Substring(0, 9) + maxStr;
|
|
|
|
|
}
|
|
|
|
|
return BSM;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
public static void DelectDir(string srcPath)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
DirectoryInfo dir = new DirectoryInfo(srcPath);
|
|
|
|
|
FileSystemInfo[] fileinfo = dir.GetFileSystemInfos(); //返回目录中所有文件和子目录
|
|
|
|
|
foreach (FileSystemInfo i in fileinfo)
|
|
|
|
|
{
|
|
|
|
|
if (i is DirectoryInfo) //判断是否文件夹
|
|
|
|
|
{
|
|
|
|
|
DirectoryInfo subdir = new DirectoryInfo(i.FullName);
|
|
|
|
|
subdir.Delete(true); //删除子目录和文件
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
File.Delete(i.FullName); //删除指定文件
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception)
|
|
|
|
|
{
|
|
|
|
|
throw;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public class OIDMapping
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 过程层OID
|
|
|
|
|
/// </summary>
|
|
|
|
|
public int gcOID { get; set; }
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 变更前OID
|
|
|
|
|
/// </summary>
|
|
|
|
|
public int bgqOID { get; set; }
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 变更前图斑标识码
|
|
|
|
|
/// </summary>
|
|
|
|
|
public string bgqTBBSM { get; set; }
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 变更前图斑编号
|
|
|
|
|
/// </summary>
|
|
|
|
|
public string bgqTBBH { get; set; }
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 变更后OID
|
|
|
|
|
/// </summary>
|
|
|
|
|
public int bghOID { get; set; }
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 变更后图斑标识码
|
|
|
|
|
/// </summary>
|
|
|
|
|
public string bghTBBSM { get; set; }
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 变更后坐落单位代码
|
|
|
|
|
/// </summary>
|
|
|
|
|
public string bghZLDWDM { get; set; }
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 变更前坐落单位代码
|
|
|
|
|
/// </summary>
|
|
|
|
|
public string bgqZLDWDM { get; set; }
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 变更后图斑编号
|
|
|
|
|
/// </summary>
|
|
|
|
|
public string bghTBBH { get; set; }
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 是否图形变更
|
|
|
|
|
/// </summary>
|
|
|
|
|
public bool IsTXBG { get; set; }
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 变更面积
|
|
|
|
|
/// </summary>
|
|
|
|
|
public double BGMJ { get; set; }
|
|
|
|
|
public string XZQTZLX { get; set; }
|
|
|
|
|
public bool IsSplit { get; set; }
|
|
|
|
|
}
|
|
|
|
|
public class BGHAttributeModel
|
|
|
|
|
{
|
|
|
|
|
public int BGHOID { get; set; }
|
|
|
|
|
public string BGHTBBSM { get; set; }
|
|
|
|
|
public string BGHTBBH { get; set; }
|
|
|
|
|
public double BGMJ { get; set; }
|
|
|
|
|
public string BGXW { get; set; }
|
|
|
|
|
public string XZQTZLX { get; set; }
|
|
|
|
|
}
|
|
|
|
|
public class GXAttributeModel
|
|
|
|
|
{
|
|
|
|
|
public string BSM { get; set; }
|
|
|
|
|
public string TBBH { get; set; }
|
|
|
|
|
public double TBMJ { get; set; }
|
|
|
|
|
}
|
|
|
|
|
}
|