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.
761 lines
35 KiB
761 lines
35 KiB
using ESRI.ArcGIS.Geodatabase; |
|
using ESRI.ArcGIS.Geometry; |
|
using KGIS.Framework.AE; |
|
using KGIS.Framework.AE.Enum; |
|
using KGIS.Framework.Maps; |
|
using KGIS.Framework.Platform; |
|
using KGIS.Framework.Utils; |
|
using KGIS.Framework.Utils.Helper; |
|
using Kingo.PluginServiceInterface; |
|
using System; |
|
using System.Collections.Generic; |
|
using System.IO; |
|
using System.Linq; |
|
using System.Text; |
|
using System.Windows; |
|
using System.Windows.Controls; |
|
using System.Xml; |
|
|
|
namespace Kingo.Plugin.BGResultManager.View |
|
{ |
|
/// <summary> |
|
/// FrmCreateVCTTemplate.xaml 的交互逻辑 |
|
/// </summary> |
|
public partial class FrmCreateVCTTemplate : BaseWindow |
|
{ |
|
private List<BGVCTEntity> Source = null; |
|
private List<BGVCTEntity> Source2 = null; |
|
private Dictionary<string, string> dicFeatureCode = null; |
|
private BGVCTEntity GXVCTEntity = null; |
|
public FrmCreateVCTTemplate() |
|
{ |
|
InitializeComponent(); |
|
InitFeatureCodeDic(); |
|
Init(); |
|
} |
|
private void Init() |
|
{ |
|
IWorkspaceAPI s_WsAPI = null; |
|
try |
|
{ |
|
Source = new List<BGVCTEntity>(); |
|
Source2 = new List<BGVCTEntity>(); |
|
GXVCTEntity = new BGVCTEntity() { Name = "更新VCT模板" }; |
|
string currentGDBPath = (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).ZLDatabase; |
|
s_WsAPI = new WorkspaceAPI(currentGDBPath, WorkspaceTypeEnum.GDBFile); |
|
foreach (KeyValuePair<string, string> kvp in dicFeatureCode) |
|
{ |
|
IFeatureClassAPI fcAPI = s_WsAPI.OpenFeatureClass2(kvp.Key); |
|
if (fcAPI != null) |
|
{ |
|
IFeatureClass fc = fcAPI.FeatureClass; |
|
if ("CZCDYDGX,CZCDYDGXGC,DLTBGX,DLTBGXGC,XZQGX,XZQGXGC,CJDCQGX,CJDCQGXGC,XZQJXGX,CJDCQJXGX".Contains(kvp.Key))// |
|
{ |
|
BGVCTEntity enetity = new BGVCTEntity() { Name = fc.AliasName, FeatureClassName = kvp.Key, IsChecked = true }; |
|
Source.Add(enetity); |
|
GXVCTEntity.SubEntities.Add(enetity); |
|
} |
|
else |
|
{ |
|
BGVCTEntity enetity = new BGVCTEntity() { Name = fc.AliasName, FeatureClassName = kvp.Key, IsChecked = false }; |
|
Source2.Add(enetity); |
|
GXVCTEntity.SubEntities.Add(enetity); |
|
} |
|
} |
|
//增量更新数据填充 |
|
tvVCTEntity.ItemsSource = Source; |
|
//整层更新数据填充 |
|
tvVCTEntity2.ItemsSource = Source2; |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
LogAPI.Debug(ex); |
|
MessageHelper.ShowError(ex.Message); |
|
} |
|
finally |
|
{ |
|
if (s_WsAPI != null) |
|
{ |
|
s_WsAPI.CloseWorkspace(); |
|
} |
|
} |
|
} |
|
|
|
/// <summary> |
|
/// 模板图层填充-要素名称/要素代码 |
|
/// </summary> |
|
private void InitFeatureCodeDic() |
|
{ |
|
dicFeatureCode = new Dictionary<string, string>(); |
|
dicFeatureCode.Add("CCWJQGX", "2099090100"); |
|
dicFeatureCode.Add("GFBQGX", "2099070100"); |
|
//dicFeatureCode.Add("LSYDGX", "2099010100"); |
|
dicFeatureCode.Add("GCHZZGX", "2099120100"); |
|
dicFeatureCode.Add("TTQGX", "2099080100"); |
|
dicFeatureCode.Add("DLTBGX", "2001010100"); |
|
dicFeatureCode.Add("CLKZDGX", "1000110000"); |
|
dicFeatureCode.Add("CZKFBJGX", "3002010000"); |
|
dicFeatureCode.Add("CZCDYDGX", "2099030100"); |
|
dicFeatureCode.Add("CZCDYDGXGC", "2099030100"); |
|
dicFeatureCode.Add("DGXGX", "1000710000"); |
|
dicFeatureCode.Add("DZGYGX", "3001050100"); |
|
dicFeatureCode.Add("FJMSQGX", "3001040100"); |
|
dicFeatureCode.Add("GCZJDGX", "1000720000"); |
|
dicFeatureCode.Add("GDDBGX", "2099040100"); |
|
dicFeatureCode.Add("GJGYGX", "3001010100"); |
|
dicFeatureCode.Add("JZKZDGX", "1000110408"); |
|
dicFeatureCode.Add("KFYQGX", "2099060100"); |
|
dicFeatureCode.Add("LMFWGX", "2099100100"); |
|
dicFeatureCode.Add("PDTGX", "1000780000"); |
|
dicFeatureCode.Add("PZWJSTDGX", "2099020100"); |
|
dicFeatureCode.Add("QTJZKFQGX", "3001990100"); |
|
dicFeatureCode.Add("SCZZBHQGX", "3001090100"); |
|
dicFeatureCode.Add("SDGYGX", "3001070100"); |
|
dicFeatureCode.Add("SLGYGX", "3001030100"); |
|
dicFeatureCode.Add("STBHHXGX", "3003010000"); |
|
dicFeatureCode.Add("WJMHDGX", "2099110100"); |
|
dicFeatureCode.Add("YYSSYDGX", "3001080100"); |
|
dicFeatureCode.Add("ZRBHQGX", "3001020100"); |
|
dicFeatureCode.Add("ZRYCBHQGX", "3001060100"); |
|
dicFeatureCode.Add("ZYXMYDGX", "2099050100"); |
|
dicFeatureCode.Add("XZQGX", "1000600100"); |
|
dicFeatureCode.Add("XZQJXGX", "1000600200"); |
|
dicFeatureCode.Add("CJDCQGX", "1000600400"); |
|
dicFeatureCode.Add("CJDCQJXGX", "1000600500"); |
|
dicFeatureCode.Add("YJJBNTTBGX", "2005010300"); |
|
dicFeatureCode.Add("DLTBGXGC", "2001010100"); |
|
dicFeatureCode.Add("XZQGXGC", "1000600100"); |
|
dicFeatureCode.Add("CJDCQGXGC", "1000600400"); |
|
} |
|
|
|
private void btnCreate_Click(object sender, RoutedEventArgs e) |
|
{ |
|
IWorkspaceAPI s_WsAPI = null; |
|
try |
|
{ |
|
if (string.IsNullOrWhiteSpace(txtTempName.Text)) |
|
{ |
|
MessageHelper.ShowTips("请输入模板名称!"); |
|
return; |
|
} |
|
string currentGDBPath = (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).ZLDatabase; |
|
s_WsAPI = new WorkspaceAPI(currentGDBPath, WorkspaceTypeEnum.GDBFile); |
|
List<BGVCTEntity> TableMappingList = new List<BGVCTEntity>(); |
|
string sDir = System.IO.Path.Combine(SysAppPath.GetCurrentAppPath(), "工作空间", "模板", "变更成果模板", txtTempName.Text); |
|
|
|
if (Directory.Exists(sDir)) |
|
{ |
|
MessageHelper.ShowTips("指定的模板名称或路径已存在!"); |
|
return; |
|
} |
|
else |
|
{ |
|
Directory.CreateDirectory(sDir); |
|
} |
|
List<BGVCTEntity> list = GXVCTEntity.SubEntities.FindAll(x => x.IsChecked == true && (x.FeatureClassName.EndsWith("GX") || x.FeatureClassName == "GXZJ")); |
|
if (list.Count > 0) |
|
{ |
|
string sPath = System.IO.Path.Combine(sDir, "VCTTemplate3ForBG.VCT"); |
|
FileStream fs = new FileStream(sPath, FileMode.Create); |
|
StreamWriter sw = new StreamWriter(fs, Encoding.GetEncoding("GB18030")); |
|
GenerateVCTHead(sw); |
|
foreach (BGVCTEntity item in list) |
|
{ |
|
TableMappingList.Add(item); |
|
} |
|
GenerateVCTFeatureCode(sw, list, s_WsAPI); |
|
sw.WriteLine("TableStructureBegin"); |
|
foreach (BGVCTEntity entity in list) |
|
{ |
|
IFeatureClassAPI fcSourceAPI = s_WsAPI.OpenFeatureClass(entity.FeatureClassName); |
|
IFeatureClass fcSource = fcSourceAPI.FeatureClass; |
|
IFields fields = fcSource.Fields; |
|
int FieldCount = 0; |
|
for (int i = 0; i < fields.FieldCount; i++) |
|
{ |
|
IField field = fields.Field[i]; |
|
if (field.Name == "OBJECTID" || field.Name == "JCTBBSM" || field.Name == "Element" || field.Name == "SHAPE" || field.Name == "SHAPE_Length" || field.Name == "SHAPE_Area") |
|
{ |
|
continue; |
|
} |
|
if (entity.FeatureClassName == "DLTBGX" && (field.Name == "XZQTZLX" || field.Name == "ONLYZLBG")) |
|
{ |
|
continue; |
|
} |
|
FieldCount++; |
|
} |
|
sw.WriteLine(string.Format("{0},{1}", entity.FeatureClassName, FieldCount)); |
|
for (int i = 0; i < fields.FieldCount; i++) |
|
{ |
|
IField field = fields.Field[i]; |
|
if (field.Name == "OBJECTID" || field.Name == "JCTBBSM" || field.Name == "Element" || field.Name == "SHAPE" || field.Name == "SHAPE_Length" || field.Name == "SHAPE_Area") |
|
{ |
|
continue; |
|
} |
|
if (entity.FeatureClassName == "DLTBGX" && (field.Name == "XZQTZLX" || field.Name == "ONLYZLBG")) |
|
{ |
|
continue; |
|
} |
|
string strFieldType = GetVCTFieldType(field); |
|
if (strFieldType == "Float") |
|
{ |
|
sw.WriteLine(string.Format("{0},{1},{2},2", field.Name, strFieldType, field.Length <= 255 ? field.Length : 255)); |
|
} |
|
else |
|
{ |
|
sw.WriteLine(string.Format("{0},{1},{2}", field.Name, strFieldType, field.Length <= 255 ? field.Length : 255)); |
|
} |
|
|
|
} |
|
sw.WriteLine("0"); |
|
} |
|
sw.Write("TableStructureEnd"); |
|
sw.Close(); |
|
sw.Dispose(); |
|
fs.Close(); |
|
fs.Dispose(); |
|
} |
|
#region 一键成果导出的VCT中不包含PDTGX图层及其相关表结构信息 2020-7-29 沈超 |
|
|
|
list = GXVCTEntity.SubEntities.FindAll(x => x.IsChecked == true && x.FeatureClassName == "PDTGX"); |
|
if (list.Count > 0)//创建没有PDTGCX的VCT |
|
{ |
|
list = GXVCTEntity.SubEntities.FindAll(x => x.IsChecked == true && (x.FeatureClassName.EndsWith("GX") || x.FeatureClassName == "GXZJ") && x.FeatureClassName != "PDTGX"); |
|
if (list.Count > 0) |
|
{ |
|
string sPath = System.IO.Path.Combine(sDir, "VCTTemplate3ForBG_WithOutPDXGX.VCT"); |
|
FileStream fs = new FileStream(sPath, FileMode.Create); |
|
StreamWriter sw = new StreamWriter(fs, Encoding.GetEncoding("GB18030")); |
|
GenerateVCTHead(sw); |
|
GenerateVCTFeatureCode(sw, list, s_WsAPI); |
|
sw.WriteLine("TableStructureBegin"); |
|
foreach (BGVCTEntity entity in list) |
|
{ |
|
IFeatureClassAPI fcSourceAPI = s_WsAPI.OpenFeatureClass(entity.FeatureClassName); |
|
IFeatureClass fcSource = fcSourceAPI.FeatureClass; |
|
IFields fields = fcSource.Fields; |
|
int FieldCount = 0; |
|
for (int i = 0; i < fields.FieldCount; i++) |
|
{ |
|
IField field = fields.Field[i]; |
|
if (entity.FeatureClassName == "DLTBGX" && field.Name.ToUpper() == "XHMARK") |
|
{ |
|
continue; |
|
} |
|
else |
|
{ |
|
if (field.Name == "OBJECTID" || field.Name == "JCTBBSM" || field.Name == "Element" || |
|
field.Name.ToUpper() == "SHAPE" || field.Name.ToUpper() == "SHAPE_LENGTH" || field.Name.ToUpper() == "SHAPE_AREA" || |
|
field.Name == "BGTBOID") |
|
{ |
|
continue; |
|
} |
|
FieldCount++; |
|
} |
|
} |
|
sw.WriteLine(string.Format("{0},{1}", entity.FeatureClassName, FieldCount)); |
|
for (int i = 0; i < fields.FieldCount; i++) |
|
{ |
|
IField field = fields.Field[i]; |
|
if (entity.FeatureClassName == "DLTBGX" && field.Name.ToUpper() == "XHMARK") |
|
{ |
|
continue; |
|
} |
|
else |
|
{ |
|
if (field.Name == "OBJECTID" || field.Name == "JCTBBSM" || field.Name == "Element" || |
|
field.Name.ToUpper() == "SHAPE" || field.Name.ToUpper() == "SHAPE_LENGTH" || field.Name.ToUpper() == "SHAPE_AREA" || |
|
field.Name == "BGTBOID") |
|
{ |
|
continue; |
|
} |
|
string strFieldType = GetVCTFieldType(field); |
|
if (strFieldType == "Float") |
|
{ |
|
sw.WriteLine(string.Format("{0},{1},{2},2", field.Name, strFieldType, field.Length <= 255 ? field.Length : 255)); |
|
} |
|
else |
|
{ |
|
sw.WriteLine(string.Format("{0},{1},{2}", field.Name, strFieldType, field.Length <= 255 ? field.Length : 255)); |
|
} |
|
} |
|
} |
|
sw.WriteLine("0"); |
|
} |
|
sw.Write("TableStructureEnd"); |
|
sw.Close(); |
|
sw.Dispose(); |
|
fs.Close(); |
|
fs.Dispose(); |
|
} |
|
} |
|
#endregion |
|
list = GXVCTEntity.SubEntities.FindAll(x => x.IsChecked == true && x.FeatureClassName.EndsWith("GXGC")); |
|
if (list.Count > 0) |
|
{ |
|
string sPath = System.IO.Path.Combine(sDir, "VCTTemplate3ForBG2.VCT"); |
|
FileStream fs = new FileStream(sPath, FileMode.Create); |
|
StreamWriter sw = new StreamWriter(fs, Encoding.GetEncoding("GB18030")); |
|
GenerateVCTHead(sw); |
|
foreach (BGVCTEntity item in list) |
|
{ |
|
TableMappingList.Add(item); |
|
} |
|
GenerateVCTFeatureCode(sw, list, s_WsAPI); |
|
sw.WriteLine("TableStructureBegin"); |
|
foreach (BGVCTEntity entity in list) |
|
{ |
|
IFeatureClassAPI fcSourceAPI = s_WsAPI.OpenFeatureClass(entity.FeatureClassName); |
|
IFeatureClass fcSource = fcSourceAPI.FeatureClass; |
|
IFields fields = fcSource.Fields; |
|
int FieldCount = 0; |
|
for (int i = 0; i < fields.FieldCount; i++) |
|
{ |
|
IField field = fields.Field[i]; |
|
if (field.Name == "OBJECTID" || field.Name == "JCTBBSM" || field.Name == "SHAPE" || field.Name == "SHAPE_Length" || field.Name == "SHAPE_Area") |
|
{ |
|
continue; |
|
} |
|
|
|
if (entity.FeatureClassName == "DLTBGXGC" && (field.Name == "JCZT" || field.Name == "JCJG" || field.Name == "ONLYZLBG")) |
|
{ |
|
continue; |
|
} |
|
FieldCount++; |
|
} |
|
sw.WriteLine(string.Format("{0},{1}", entity.FeatureClassName, FieldCount)); |
|
for (int i = 0; i < fields.FieldCount; i++) |
|
{ |
|
IField field = fields.Field[i]; |
|
if (field.Name == "OBJECTID" || field.Name == "JCTBBSM" || field.Name == "SHAPE" || field.Name == "SHAPE_Length" || field.Name == "SHAPE_Area") |
|
{ |
|
continue; |
|
} |
|
if (entity.FeatureClassName == "DLTBGXGC" && (field.Name == "JCZT" || field.Name == "JCJG" || field.Name == "ONLYZLBG")) |
|
{ |
|
continue; |
|
} |
|
string strFieldType = GetVCTFieldType(field); |
|
if (strFieldType == "Float") |
|
{ |
|
sw.WriteLine(string.Format("{0},{1},{2},2", field.Name, strFieldType, field.Length <= 255 ? field.Length : 255)); |
|
} |
|
else |
|
{ |
|
sw.WriteLine(string.Format("{0},{1},{2}", field.Name, strFieldType, field.Length <= 255 ? field.Length : 255)); |
|
} |
|
} |
|
sw.WriteLine("0"); |
|
} |
|
sw.Write("TableStructureEnd"); |
|
sw.Close(); |
|
sw.Dispose(); |
|
fs.Close(); |
|
fs.Dispose(); |
|
} |
|
string TMConfigPath = System.IO.Path.Combine(SysAppPath.GetCurrentAppPath(), "Configs", "BGCheckTableMappingConfig.xml"); |
|
CreateBGCheckTableMappingConfig(TMConfigPath, TableMappingList); |
|
MessageHelper.ShowTips("创建完成"); |
|
this.Close(); |
|
} |
|
catch (Exception ex) |
|
{ |
|
LogAPI.Debug(ex); |
|
MessageHelper.ShowError(ex.Message); |
|
} |
|
finally |
|
{ |
|
if (s_WsAPI != null) |
|
{ |
|
s_WsAPI.CloseWorkspace(); |
|
} |
|
} |
|
} |
|
|
|
private void GenerateVCTHead(StreamWriter sw) |
|
{ |
|
sw.WriteLine("HeadBegin"); |
|
sw.WriteLine("DataMark: LANDUSE-VCT"); |
|
sw.WriteLine("Version: 3.0"); |
|
sw.WriteLine("CoordinateSystemType:P"); |
|
sw.WriteLine("Dim:2"); |
|
sw.WriteLine("XAxisDirection:E"); |
|
sw.WriteLine("YAxisDirection:N"); |
|
sw.WriteLine("XYUnit:M"); |
|
sw.WriteLine("ZUnit:M"); |
|
sw.WriteLine("Spheroid:CGCS2000,6378137.0,298.257222101"); |
|
sw.WriteLine("PrimeMeridian:Greenwich"); |
|
sw.WriteLine("Projection:高斯-克吕格投影"); |
|
sw.WriteLine("Parameters:0,0,0,0,0,0"); |
|
sw.WriteLine("VerticalDatum:1985国家高程基准"); |
|
sw.WriteLine("TemporalReferenceSystem:北京时间"); |
|
sw.WriteLine("ExtentMin:0,0"); |
|
sw.WriteLine("ExtentMax:0,0"); |
|
sw.WriteLine("MapScale:5000"); |
|
sw.WriteLine("Offset:0,0"); |
|
sw.WriteLine("Date:201801"); |
|
sw.WriteLine("Separator:,"); |
|
sw.WriteLine("HeadEnd"); |
|
sw.WriteLine(); |
|
} |
|
|
|
private void GenerateVCTFeatureCode(StreamWriter sw, List<BGVCTEntity> list, IWorkspaceAPI s_WsAPI) |
|
{ |
|
sw.WriteLine("FeatureCodeBegin"); |
|
foreach (BGVCTEntity item in list) |
|
{ |
|
string FCode = ""; |
|
if (dicFeatureCode.ContainsKey(item.FeatureClassName)) |
|
{ |
|
FCode = dicFeatureCode[item.FeatureClassName]; |
|
} |
|
string strGeoType = GetVCTGeometryType(s_WsAPI.OpenFeatureClass(item.FeatureClassName).FeatureClass); |
|
sw.WriteLine(string.Format("{0},{1},{2},{3}", FCode, item.Name, strGeoType, item.FeatureClassName)); |
|
} |
|
sw.WriteLine("FeatureCodeEnd"); |
|
sw.WriteLine(); |
|
} |
|
|
|
private string GetVCTFieldType(IField field) |
|
{ |
|
string strType = null; |
|
switch (field.Type) |
|
{ |
|
case esriFieldType.esriFieldTypeSmallInteger: |
|
strType = "Int"; |
|
break; |
|
case esriFieldType.esriFieldTypeInteger: |
|
strType = "Int"; |
|
break; |
|
case esriFieldType.esriFieldTypeSingle: |
|
strType = "Float"; |
|
break; |
|
case esriFieldType.esriFieldTypeDouble: |
|
strType = "Float"; |
|
break; |
|
case esriFieldType.esriFieldTypeString: |
|
if (field.Name.EndsWith("BZ") || field.Name.EndsWith("GLTBBSM") || field.Name.EndsWith("YQSX") || field.Name.EndsWith("TDSYHT") || field.Name.EndsWith("BGQBZ") || field.Name.EndsWith("BGHBZ") || field.Name.EndsWith("BHQDLWZ") || field.Name.EndsWith("STGNYBHMB") || field.Name.EndsWith("DLWZ") || field.Name.EndsWith("STHJWT") || field.Name.EndsWith("GKCS")) |
|
{ |
|
strType = "VarChar"; |
|
} |
|
else |
|
{ |
|
strType = "Char"; |
|
} |
|
break; |
|
case esriFieldType.esriFieldTypeDate: |
|
strType = "Date"; |
|
break; |
|
case esriFieldType.esriFieldTypeOID: |
|
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; |
|
} |
|
return strType; |
|
} |
|
|
|
private string GetVCTGeometryType(IFeatureClass featureClass) |
|
{ |
|
string strGType = ""; |
|
switch (featureClass.ShapeType) |
|
{ |
|
case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryNull: |
|
break; |
|
case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPoint: |
|
case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryMultipoint: |
|
strGType = "Point"; |
|
break; |
|
case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolyline: |
|
case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryLine: |
|
strGType = "Line"; |
|
break; |
|
case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryCircularArc: |
|
break; |
|
case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryEllipticArc: |
|
break; |
|
case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryBezier3Curve: |
|
break; |
|
case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPath: |
|
break; |
|
case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryRing: |
|
break; |
|
case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolygon: |
|
strGType = "Polygon"; |
|
break; |
|
case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryEnvelope: |
|
break; |
|
case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryAny: |
|
break; |
|
case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryBag: |
|
break; |
|
case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryMultiPatch: |
|
break; |
|
case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryTriangleStrip: |
|
break; |
|
case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryTriangleFan: |
|
break; |
|
case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryRay: |
|
break; |
|
case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometrySphere: |
|
break; |
|
case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryTriangles: |
|
break; |
|
default: |
|
break; |
|
} |
|
return strGType; |
|
} |
|
|
|
private void btnCancel_Click(object sender, RoutedEventArgs e) |
|
{ |
|
Close(); |
|
} |
|
|
|
private void chek_all_Click_1(object sender, RoutedEventArgs e) |
|
{ |
|
CheckBox chk = sender as CheckBox; |
|
if (chk.IsChecked == true) |
|
{ |
|
foreach (var item in Source) |
|
{ |
|
item.IsChecked = true; |
|
} |
|
} |
|
else |
|
{ |
|
foreach (var item in Source) |
|
{ |
|
item.IsChecked = false; |
|
} |
|
} |
|
} |
|
|
|
private void CreateBGCheckTableMappingConfig(string configFilePath, List<BGVCTEntity> list) |
|
{ |
|
IWorkspaceAPI s_WsAPI = null; |
|
try |
|
{ |
|
//创建XmlDocument对象 |
|
XmlDocument xmlDoc = new XmlDocument(); |
|
//XML的声明<?xml version="1.0" encoding="UTF-8"?> |
|
XmlDeclaration xmlSM = xmlDoc.CreateXmlDeclaration("1.0", "UTF-8", null); |
|
//追加xmldecl位置 |
|
xmlDoc.AppendChild(xmlSM); |
|
//创建CheckTableMapping节点 |
|
XmlElement MainElement = xmlDoc.CreateElement("", "CheckTableMapping", ""); |
|
//追加CheckTableMapping的根节点位置 |
|
xmlDoc.AppendChild(MainElement); |
|
|
|
string currentGDBPath = (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).ZLDatabase; |
|
s_WsAPI = new WorkspaceAPI(currentGDBPath, WorkspaceTypeEnum.GDBFile); |
|
foreach (BGVCTEntity entity in list) |
|
{ |
|
IFeatureClassAPI fcSourceAPI = s_WsAPI.OpenFeatureClass(entity.FeatureClassName); |
|
IFeatureClass fcSource = fcSourceAPI.FeatureClass; |
|
FeatureClass fc = fcSource as FeatureClass; |
|
XmlElement TableElement = xmlDoc.CreateElement("", "Table", ""); |
|
TableElement.SetAttribute("TableName", fc.Name); |
|
TableElement.SetAttribute("Name", fcSource.AliasName); |
|
TableElement.SetAttribute("Type", GetShapeTypeName(fcSource)); |
|
TableElement.SetAttribute("IsNecessary", "True"); |
|
TableElement.SetAttribute("YSDM", GetYSDMByLayerName(fc.Name)); |
|
IFields fields = fcSource.Fields; |
|
for (int i = 0; i < fields.FieldCount; i++) |
|
{ |
|
IField field = fields.Field[i]; |
|
if (field.Name == "OBJECTID" || field.Name == "JCTBBSM" || field.Name == "SHAPE" || field.Name == "SHAPE_Length" || field.Name == "SHAPE_Area") |
|
{ |
|
continue; |
|
} |
|
XmlElement FieldElement = xmlDoc.CreateElement("", "Column", ""); |
|
FieldElement.SetAttribute("Name", field.Name); |
|
FieldElement.SetAttribute("AliasName", field.AliasName); |
|
FieldElement.SetAttribute("AllowDBNull", field.IsNullable ? "True" : "False"); |
|
FieldElement.SetAttribute("DataType", GetFieldTypeName(field.Type)); |
|
if (field.Type == esriFieldType.esriFieldTypeString) |
|
{ |
|
FieldElement.SetAttribute("MaxLength", field.Length.ToString()); |
|
} |
|
if (field.Type == esriFieldType.esriFieldTypeSingle || field.Type == esriFieldType.esriFieldTypeDouble) |
|
{ |
|
FieldElement.SetAttribute("Precision", field.Precision.ToString()); |
|
} |
|
TableElement.AppendChild(FieldElement); |
|
} |
|
MainElement.AppendChild(TableElement); |
|
} |
|
xmlDoc.Save(configFilePath); |
|
} |
|
catch (Exception ex) |
|
{ |
|
LogAPI.Debug(ex); |
|
} |
|
finally |
|
{ |
|
if (s_WsAPI != null) |
|
{ |
|
s_WsAPI.CloseWorkspace(); |
|
} |
|
} |
|
} |
|
|
|
private Dictionary<string, string> ysdm = null; |
|
public Dictionary<string, string> YSDM |
|
{ |
|
get |
|
{ |
|
if (ysdm == null) |
|
{ |
|
ysdm = new Dictionary<string, string>(); |
|
ysdm.Add("1000110000", "CLKZD"); |
|
ysdm.Add("1000110408", "JZKZD"); |
|
ysdm.Add("1000119000", "CLKZDZJ"); |
|
ysdm.Add("1000600100", "XZQ"); |
|
ysdm.Add("1000600200", "XZQJX"); |
|
ysdm.Add("1000609000", "XZQZJ"); |
|
ysdm.Add("1000600400", "CJDCQ"); |
|
ysdm.Add("1000600500", "CJDCQJX"); |
|
ysdm.Add("1000608000", "CJDCQZJ"); |
|
ysdm.Add("1000710000", "DGX"); |
|
ysdm.Add("1000720000", "GCZJD"); |
|
ysdm.Add("1000780000", "PDT"); |
|
ysdm.Add("2001010100", "DLTB"); |
|
ysdm.Add("2001010200", "DLTBZJ"); |
|
ysdm.Add("2006010100", "TDQSQ"); |
|
ysdm.Add("2006010200", "TDQSQZJ"); |
|
ysdm.Add("2006020100", "TDQSQJX"); |
|
ysdm.Add("2006020200", "TDQSQJXZJ"); |
|
ysdm.Add("2005010300", "YJJBNTTB"); |
|
ysdm.Add("2005010900", "YJJBNTTBZJ"); |
|
ysdm.Add("2099010100", "LSYD"); |
|
ysdm.Add("2099010200", "LSYDZJ"); |
|
ysdm.Add("2099020100", "PZWJSTD"); |
|
ysdm.Add("2099020200", "PZWJSTBZJ"); |
|
ysdm.Add("2099030100", "CZCDYD"); |
|
ysdm.Add("2099030200", "CZCDYDZJ"); |
|
ysdm.Add("2099040100", "GDDB"); |
|
ysdm.Add("2099040200", "GDDBZJ"); |
|
ysdm.Add("2099050100", "ZYXMYD"); |
|
ysdm.Add("2099050200", "ZYXMYDZJ"); |
|
ysdm.Add("2099060100", "KFYQ"); |
|
ysdm.Add("2099060200", "KFYQZJ"); |
|
ysdm.Add("3001010000", "GJGY"); |
|
ysdm.Add("3001020000", "ZRBHQ"); |
|
ysdm.Add("3001030000", "SLGY"); |
|
ysdm.Add("3001040000", "FJMSQ"); |
|
ysdm.Add("3001050000", "DZGY"); |
|
ysdm.Add("3001060000", "ZRYCBHQ"); |
|
ysdm.Add("3001070000", "SDGY"); |
|
ysdm.Add("3001080000", "YYSSYD"); |
|
ysdm.Add("3001090000", "SCZZBHQ"); |
|
ysdm.Add("3001990000", "QTJZKFQ"); |
|
ysdm.Add("3001200000", "ZRBHQZJ"); |
|
ysdm.Add("3002010000", "CSKFBJ"); |
|
ysdm.Add("3002020000", "CSKFBJZJ"); |
|
ysdm.Add("2099110100", "WJMHD"); |
|
ysdm.Add("2099100100", "LMFW"); |
|
} |
|
return ysdm; |
|
} |
|
} |
|
|
|
public string GetShapeTypeName(IFeatureClass fc) |
|
{ |
|
string strType = ""; |
|
switch (fc.ShapeType) |
|
{ |
|
case esriGeometryType.esriGeometryPoint: |
|
strType = "点"; |
|
break; |
|
case esriGeometryType.esriGeometryLine: |
|
strType = "线"; |
|
break; |
|
case esriGeometryType.esriGeometryPolygon: |
|
strType = "面"; |
|
break; |
|
default: |
|
if (fc.FeatureType == esriFeatureType.esriFTAnnotation) |
|
{ |
|
strType = "注记"; |
|
} |
|
else |
|
{ |
|
strType = "其他"; |
|
} |
|
break; |
|
} |
|
return strType; |
|
} |
|
|
|
private string GetYSDMByLayerName(string LayerName) |
|
{ |
|
if (LayerName.EndsWith("GX")) |
|
{ |
|
LayerName = LayerName.Replace("GX", ""); |
|
} |
|
else if (LayerName.EndsWith("GXGC")) |
|
{ |
|
LayerName = LayerName.Replace("GXGC", ""); |
|
} |
|
KeyValuePair<string, string> kvp = YSDM.FirstOrDefault(x => x.Value == LayerName); |
|
return kvp.Key; |
|
} |
|
|
|
private string GetFieldTypeName(esriFieldType fieldType) |
|
{ |
|
string strTypeName = ""; |
|
switch (fieldType) |
|
{ |
|
case esriFieldType.esriFieldTypeSmallInteger: |
|
strTypeName = "Int"; |
|
break; |
|
case esriFieldType.esriFieldTypeInteger: |
|
strTypeName = "Int"; |
|
break; |
|
case esriFieldType.esriFieldTypeSingle: |
|
strTypeName = "Float"; |
|
break; |
|
case esriFieldType.esriFieldTypeDouble: |
|
strTypeName = "Double"; |
|
break; |
|
case esriFieldType.esriFieldTypeString: |
|
strTypeName = "String"; |
|
break; |
|
case esriFieldType.esriFieldTypeDate: |
|
strTypeName = "Date"; |
|
break; |
|
case esriFieldType.esriFieldTypeOID: |
|
strTypeName = "Int"; |
|
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; |
|
} |
|
return strTypeName; |
|
} |
|
} |
|
}
|
|
|