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.
177 lines
7.2 KiB
177 lines
7.2 KiB
using KGIS.Framework.Maps; |
|
using KGIS.Framework.Platform.Helper; |
|
using KGIS.Framework.Utils; |
|
using KGIS.Framework.Utils.Helper; |
|
using KGIS.Framework.Utils.Model; |
|
using kingo.Plugin.BGResultManager.Interface; |
|
using Kingo.PluginServiceInterface; |
|
using System; |
|
using System.Collections.Generic; |
|
using System.Diagnostics; |
|
using System.IO; |
|
|
|
namespace kingo.Plugin.BGResultManager.Utility |
|
{ |
|
class MDBToVCTWindow : IVCTExport |
|
{ |
|
public string OutPath |
|
{ |
|
get; |
|
|
|
set; |
|
} |
|
|
|
public ScaleCodeTable Scale |
|
{ |
|
get; |
|
|
|
set; |
|
} |
|
public void ExportVCT(bool haspdt,string sTheMDBPath="") |
|
{ |
|
GC.Collect(); |
|
string vctpath = null; |
|
string mdbpath = null;//GDB路径 |
|
if (string.IsNullOrEmpty(null)) |
|
{ |
|
vctpath = "VCTTemplate3.VCT"; |
|
if (haspdt == false) |
|
{ |
|
vctpath = "VCTTemplate3NoPDT.VCT"; |
|
} |
|
} |
|
if (string.IsNullOrWhiteSpace(sTheMDBPath) == false) |
|
{ |
|
mdbpath = sTheMDBPath; |
|
} |
|
if (string.IsNullOrEmpty(vctpath)) |
|
{ |
|
//MessageHelper.Show("请选择需要转换的VCT结构文件!"); |
|
LogAPI.Debug("请选择需要转换的VCT结构文件"); |
|
return; |
|
} |
|
if (string.IsNullOrEmpty(mdbpath)) |
|
{ |
|
//MessageHelper.Show("请选择MDB文件路径!"); |
|
LogAPI.Debug("请选择MDB文件路径"); |
|
return; |
|
} |
|
if (string.IsNullOrEmpty(OutPath)) |
|
{ |
|
//MessageHelper.Show("请选择保存文件路径!"); |
|
LogAPI.Debug("请选择保存文件路径"); |
|
return; |
|
} |
|
try |
|
{ |
|
//if (!qq()) |
|
//{ |
|
// return; |
|
//} |
|
//RegionAuthorize regionAuthorize = new RegionAuthorize(); |
|
//int validateType = 0; |
|
//if (!regionAuthorize.ValidateAuthorizeByXZQDM(ref validateType)) |
|
//{ |
|
// if (validateType.Equals(1)) |
|
// { |
|
// //KGIS.Common.MessageHelper.ShowError("地类图斑数据区域授权未通过"); |
|
// LogAPI.Debug("一键成果输出,地类图斑数据区域授权未通过"); |
|
// } |
|
// else if (validateType.Equals(2)) |
|
// { |
|
// //KGIS.Common.MessageHelper.ShowError("行政区数据区域授权未通过"); |
|
// LogAPI.Debug("一键成果输出,行政区数据区域授权未通过"); |
|
// } |
|
// else |
|
// { |
|
// //KGIS.Common.MessageHelper.ShowError("区域授权验证失败"); |
|
// LogAPI.Debug("一键成果输出,区域授权验证失败"); |
|
// } |
|
// return; |
|
//} |
|
//this.btnBegin.IsEnabled = false; |
|
|
|
//启动外部程序 |
|
#region 启动外部程序的方式 |
|
//var vT = "\"" + System.Windows.Forms.Application.StartupPath + "\\" + vctpath + "\" \"" + mdbpath + "\" \"" + (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).CODE + "\" \"" + (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).FDD + "\" \"" + Scale.ScaleCode + "\" \"" + OutPath.TrimEnd('\\') + "\""; |
|
//Process proc = Process.Start("VCTConvertWPFApp3.exe", "\"" + vctpath + "\" \"" + mdbpath + "\" \"" + (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).CODE + "\" \"" + (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).FDD + "\" \"" + Scale.ScaleCode + "\" \"" + OutPath.TrimEnd('\\') + "\""); |
|
//LogAPI.Debug(vT); |
|
|
|
Process proc = Process.Start("VCTConvertApp.exe", |
|
"\"" + System.Windows.Forms.Application.StartupPath + "\\" + vctpath + "\" " + |
|
"\"" + mdbpath + "\" " + |
|
"\"" + (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).CODE + "\" " + |
|
"\"" + (MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo).FDD + "\" " + |
|
"\"" + Scale.ScaleCode + "\" " + |
|
"\"" + OutPath.TrimEnd('\\') + "\"" |
|
); |
|
|
|
if (proc != null) |
|
{ |
|
proc.WaitForExit(); |
|
ProgressHelper.CloseProcessBar(); |
|
//this.btnBegin.IsEnabled = true; |
|
if (proc.ExitCode == 200) |
|
{ |
|
// MessageHelper.Show("导出完成!"); |
|
} |
|
else |
|
{ |
|
LogAPI.Debug("一键成果输出,VCT导出失败!"); |
|
} |
|
try |
|
{ |
|
//获取vct文件名 |
|
List<string> filenames = new List<string>(); |
|
List<string> dirnames = new List<string>(); |
|
string[] files = Directory.GetFiles(OutPath.TrimEnd());//得到文件 |
|
foreach (string file in files)//循环文件 |
|
{ |
|
if (System.IO.Path.GetExtension(file) == ".VCT") |
|
{ |
|
filenames.Add(System.IO.Path.GetFileNameWithoutExtension(file)); |
|
} |
|
} |
|
string[] dirs = Directory.GetDirectories(OutPath.TrimEnd());//得到目录 |
|
foreach (string file in dirs)//循环文件 |
|
{ |
|
if (file.EndsWith("_idx")) |
|
{ |
|
dirnames.Add(file); |
|
} |
|
} |
|
foreach (var name in filenames) |
|
{ |
|
var tmpname = ""; |
|
if (name.EndsWith("000000")) |
|
{ |
|
tmpname = name.Substring(0, name.Length - 6); |
|
System.IO.File.Move(OutPath + @"\" + name + ".VCT", OutPath + @"\" + tmpname + ".VCT"); |
|
} |
|
} |
|
|
|
foreach (var name in dirs) |
|
{ |
|
var tmpname = ""; |
|
if (name.EndsWith("000000_idx")) |
|
{ |
|
tmpname = name.Substring(0, name.Length - 10); |
|
System.IO.Directory.Move(name, tmpname + "_idx"); |
|
} |
|
} |
|
} |
|
catch (Exception ex) |
|
{ |
|
LogAPI.Debug(ex); |
|
} |
|
} |
|
#endregion |
|
} |
|
catch (Exception ex) |
|
{ |
|
ProgressHelper.CloseProcessBar(); |
|
MessageHelper.ShowError(ex.ToString()); |
|
} |
|
} |
|
} |
|
}
|
|
|