private void CopyDatasource(DatasourceConnectionInfo srcInfo, DatasourceConnectionInfo dstInfo) { try { String targetPath = dstInfo.Server; this.DeleteDatasource(dstInfo); m_datasource = m_workspace.Datasources.Create(dstInfo); if (m_datasource == null) { throw new Exception("Create datasource failed"); } Datasets datasetsToCopy = m_workspace.Datasources[srcInfo.Alias].Datasets; // 逐个拷贝数据集 foreach (Dataset dataset in datasetsToCopy) { m_datasource.CopyDataset(dataset, dataset.Name, dataset.EncodeType); } } catch (Exception ex) { Trace.WriteLine(ex.Message); } }
public void CreateNewPrj(string _prjFullPath) { m_PrjInfo = new CPrjInfo { PrjPath = _prjFullPath, WorkspacePath = Path.GetDirectoryName(_prjFullPath), WorkspaceName = Path.GetFileNameWithoutExtension(_prjFullPath), DataSourceFilePath = Path.GetDirectoryName(_prjFullPath), DataSourceName = Path.GetFileNameWithoutExtension(_prjFullPath) }; m_connectionInfo.Version = WorkspaceVersion.UGC60; m_connectionInfo.Type = WorkspaceType.SMWU; m_connectionInfo.Server = $"{m_PrjInfo.WorkspacePath}\\{m_PrjInfo.WorkspaceName}.smwu"; m_connectionInfo.Name = m_PrjInfo.WorkspaceName; m_workspace.Create(m_connectionInfo); DatasourceConnectionInfo datasourceConInfo = new DatasourceConnectionInfo(); datasourceConInfo.Server = $"{m_PrjInfo.DataSourceFilePath}\\{m_PrjInfo.DataSourceName}.udd"; datasourceConInfo.Alias = m_PrjInfo.DataSourceName; m_workspace.Datasources.CloseAll(); if (System.IO.File.Exists(m_PrjInfo.DataSourceName)) { m_datasource = m_workspace.Datasources.Open(datasourceConInfo); } else { m_datasource = m_workspace.Datasources.Create(datasourceConInfo); } UCEarthGlobal.m_MainSceneControl.Scene.Workspace = m_workspace; SaveAsPrj(_prjFullPath); }
/// <summary> ///udb中导入shp /// </summary> /// <param name="importPath"></param> public string ImportShp(string importPath, DatasourceConnectionInfo info) { try { string name = importPath.Substring(importPath.LastIndexOf("\\")+1); //wks.Datasources.Open(info); // 1. 构建数据源连接对象。 // info.Database = @"G:\数据转换\测试数据\Test\text.udb";数据库型 //DatasourceConnectionInfo info = new DatasourceConnectionInfo(); //info.Server = sourceUDB;//如@"G:\数据转换\测试数据\Test\text.udb"; ImportSettingSHP importSettingSHP = new ImportSettingSHP(); importSettingSHP.ImportMode = ImportMode.Overwrite;//可复写 importSettingSHP.SourceFilePath = importPath; importSettingSHP.TargetDatasourceConnectionInfo = info; //importSettingSHP.IsAttributeIgnored = false; // 3. 获取导入设置对象的导入信息集合(ImportDataInfos),设置目标数据集的名字。默认为原名 //ImportDataInfo dataInfos = importSettingSHP.GetTargetDataInfos(""); //importSettingSHP.SetTargetDataInfos(dataInfos); // 4. 构建数据导入类对象(DataImport),构建并设置导入设置对象集合。 DataImport import1 = new DataImport(); ImportSettings settings = import1.ImportSettings; settings.Add(importSettingSHP); ImportResult dd = import1.Run(); i++; if (dd.FailedSettings.Length != 0) return "【shp数据导入】" + name + "导入失败!请检查数据是否含有有效记录。\t\n"; return null; } catch (Exception ex) { MessageBox.Show(ex.Message); return null; } }
private void LoadMapFromDatasource() { showMapWorkspace = new Workspace(); //Memory数据源 DatasourceConnectionInfo memInfo = new DatasourceConnectionInfo(); //设置数据源连接的引擎类型 memInfo.EngineType = EngineType.Memory; memInfo.Alias = "fdgdfgd"; memInfo.Server = "tyjyutjyu"; Datasource memDatasource = showMapWorkspace.Datasources.Create(memInfo); String sourceFilePath = $"{baseFilePath}\\{fileList[0]}.shp"; var r = ImportShpToMemory(sourceFilePath, memDatasource); showMapControl = new MapControl(); showMapControl.Action = SuperMap.UI.Action.Pan; //必须设置 showMapControl.Map.Workspace = showMapWorkspace; //添加数据集到地图控件 showMapControl.Map.Layers.Add(memDatasource.Datasets[0], true); hostMapControl.Child = showMapControl; }
/// <summary> /// 初始化控件及数据。 /// Initialize data and control /// </summary> private void Initialize() { try { DatasourceConnectionInfo connectionInfo = new DatasourceConnectionInfo( @"..\..\SampleData\City\Changchun.udb", "findClosestFacility", ""); connectionInfo.EngineType = EngineType.UDB; m_workspace.Datasources.Open(connectionInfo); m_datasetLine = (DatasetVector)m_workspace.Datasources[0] .Datasets[m_datasetName] as DatasetVector; m_datasetPoint = m_datasetLine.ChildDataset; m_selectFacilityNode = true; m_selectBarrier = false; m_selectEventNode = false; m_Points = new Point2Ds(); m_barrierEdges = new List <Int32>(); m_barrierNodes = new List <Int32>(); m_selectMode = SelectMode.SELECTPOINT; m_nodesList = new List <Int32>(); m_trackingLayer = m_mapControl.Map.TrackingLayer; // 加载点数据集及线数据集并设置各自风格 // Add point, line datasets and set their styles m_layerLine = m_mapControl.Map.Layers.Add(m_datasetLine, true); LayerSettingVector lineSetting = (LayerSettingVector)m_layerLine .AdditionalSetting; GeoStyle lineStyle = new GeoStyle(); lineStyle.LineColor = Color.LightGray; lineStyle.LineWidth = 0.1; lineSetting.Style = lineStyle; m_layerPoint = m_mapControl.Map.Layers.Add( m_datasetPoint, true); LayerSettingVector pointSetting = (LayerSettingVector)m_layerPoint .AdditionalSetting; GeoStyle pointStyle = new GeoStyle(); pointStyle.LineColor = Color.DarkGray; pointStyle.MarkerSize = new Size2D(2.5, 2.5); pointSetting.Style = pointStyle; // 调整mapControl的状态 // Adjust the status of mapControl m_mapControl.Action = SuperMap.UI.Action.Select; m_mapControl.IsWaitCursorEnabled = false; m_mapControl.Map.Refresh(); m_mapControl.MouseDown += new MouseEventHandler(m_mapControl_MouseDown); m_mapControl.MouseMove += new MouseEventHandler(m_mapControl_MouseMove); // 加载模型 // Add model Load(); } catch (System.Exception ex) { Trace.WriteLine(ex.Message); } }
private void ImportShpDirectly(string filePath) { Workspace workspace = new Workspace(); DatasourceConnectionInfo info = new DatasourceConnectionInfo(); //mysql数据源 //设置数据源连接的引擎类型 info.EngineType = EngineType.MySQL; //设置数据库连接字符串 info.Server = server; info.Database = database; info.User = userName; info.Password = password; info.Driver = driver; info.IsAutoConnect = true; info.Alias = "MySQL"; //不能为空 // 打开数据库数据源 //超图sdk不能直接连接空数据库,需要使用Create方法新建数据库,才有超图“系统表” Datasource datasource = workspace.Datasources.Open(info); if (datasource != null) { ImportSettingSHP importSettingSHP = new ImportSettingSHP(); importSettingSHP.IsAttributeIgnored = false; importSettingSHP.IsImportAs3D = false; //设置当同名数据集存在时导入的模式,如果存在名字冲突,则覆盖(Overwrite) importSettingSHP.ImportMode = ImportMode.Overwrite; //设置需要导入的数据路径信息 importSettingSHP.SourceFilePath = filePath; //设置需要导入的数据编码类型,因为有中文字段,所以用ASCII编码 importSettingSHP.SourceFileCharset = Charset.ANSI; //设置要导入的目标数据源 importSettingSHP.TargetDatasource = datasource; //设置目标数据集名称 importSettingSHP.TargetDatasetName = targetTableName; importSettingSHP.TargetEncodeType = EncodeType.None; DataImport importer = new DataImport(); importer.ImportSettings.Add(importSettingSHP); //数据导入mysql数据库 ImportResult result = importer.Run(); if (result.FailedSettings.Length == 0) { Console.WriteLine($"导入{filePath}成功!"); } else { Console.WriteLine($"导入{filePath}失败!"); } } // 释放工作空间资源 info.Dispose(); workspace.Dispose(); }
private void CloseDatasource(DatasourceConnectionInfo targetInfo) { try { if (m_datasource != null) { m_workspace.Datasources.Close(targetInfo.Alias); } } catch (Exception ex) { Trace.WriteLine(ex.Message); } }
static void Main() { try { System.Windows.Forms.Application.EnableVisualStyles(); System.Windows.Forms.Application.SetCompatibleTextRenderingDefault(false); Application.ActiveApplication = new Application(); //Application.ActiveApplication. //To do your work. // Application.ActiveApplication.PluginManager.PluginLoaded += new SuperMap.Desktop.PluginLoadedEventHandler(PluginManager_PluginLoaded); // += new SuperMap.Desktop.PluginLoadedEventHandler(PluginManager_PluginLoaded); ; Application.ActiveApplication.SplashForm.Show(); Application.ActiveApplication.Initialize(); Application.ActiveApplication.SplashForm.Hide(); WorkspaceControl workspaceControl = SuperMap.Desktop.Application.ActiveApplication.MainForm.DockBarManager[typeof(WorkspaceControlManager)].Control as WorkspaceControl; if (workspaceControl != null) { //string path = @"D:\Program Files (x86)\SuperMap\SuperMap iDesktop 7C\Bin\Default.smwu"; // //@"\Default.smwu"; //string mm = @"\Default.smwu"; //WorkspaceConnectionInfo conInfo1 = new WorkspaceConnectionInfo(path); //bool dd = workspaceControl.WorkspaceTree.Workspace.Open(conInfo1); DatasourceConnectionInfo dataSourceConnectionInfo = new DatasourceConnectionInfo(); dataSourceConnectionInfo.Server = @"..\Default.udd"; dataSourceConnectionInfo.Alias = "dafault"; Datasource targetDatasource; bool isExist = File.Exists(dataSourceConnectionInfo.Server); if (isExist) { targetDatasource = workspaceControl.WorkspaceTree.Workspace.Datasources.Open(dataSourceConnectionInfo); //targetDatasource = workspaceControl.WorkspaceTree.Workspace.Datasources[dataSourceConnectionInfo.Alias]; } else { targetDatasource = workspaceControl.WorkspaceTree.Workspace.Datasources.Create(dataSourceConnectionInfo); } } Application.ActiveApplication.Run(); Application.ActiveApplication.Exit(); } catch (Exception ex) { } }
private DatasourceConnectionInfo CreateDatasourceConnectionInfo(string datasoureName) { var datasourceConnection = new DatasourceConnectionInfo() { EngineType = EngineType.SQLPlus, Driver = ConfigHelper.GetConfig("WorkspaceDriver"), Server = ConfigHelper.GetConfig("WorkspaceServer"), Database = ConfigHelper.GetConfig("WorkspaceDatabase"), User = ConfigHelper.GetConfig("WorkspaceUser"), Password = ConfigHelper.GetConfig("WorkspacePassword"), Alias = datasoureName }; return(datasourceConnection); }
public SampleRun1(Workspace workspace, DatasourceConnectionInfo dsInfo) { try { this.Initialize(workspace); if (m_workspace.Datasources.Open(dsInfo) == null) { MessageBox.Show("数据打开失败~!"); } } catch (Exception ex) { Trace.WriteLine(ex.Message); } }
public void CopyDatasource(DatasourceConnectionInfo dstInfo) { try { if (m_workspace.Datasources.Count == 0) { m_datasource = null; return; } CopyDatasource(m_workspace.Datasources[0].ConnectionInfo, dstInfo); } catch (Exception ex) { Trace.WriteLine(ex.Message); } }
public void DeleteDatasource(DatasourceConnectionInfo targetInfo) { try { this.CloseDatasource(targetInfo); String targetPath = targetInfo.Server; File.Delete(targetPath); String sddPath = Path.ChangeExtension(targetPath, "udd"); File.Delete(sddPath); } catch (Exception ex) { Trace.WriteLine(ex.Message); } }
public 数据集管理() { try { InitializeComponent(); InitializeDatasetTypeCombox(); m_workspace = new Workspace(); m_srcDatasourceInfo = new DatasourceConnectionInfo("D:/World/world.udb", "world", ""); m_dstDatasourceInfo = new DatasourceConnectionInfo("D:/World/copyworld.udb", "copyworld", ""); m_sampleRun = null; } catch (Exception ex) { Trace.WriteLine(ex.Message); } }
public void LoadPrj(string _prjFilePath) { m_PrjInfo = new CPrjInfo(); m_workspace.Save(); //主动读取配置文件 System.Environment.CurrentDirectory = System.Windows.Forms.Application.StartupPath; string cfgPath = _prjFilePath; //反序列化 try { //用于序列化和反序列化的对象 IFormatter serializer = new BinaryFormatter(); FileStream loadFile = new FileStream(cfgPath, FileMode.OpenOrCreate, FileAccess.Read); CPrjInfo prjInfo = serializer.Deserialize(loadFile) as CPrjInfo; //值拷贝 foreach (PropertyInfo proInfo in prjInfo.GetType().GetProperties()) { proInfo.SetValue(m_PrjInfo, proInfo.GetValue(prjInfo)); } } catch (Exception e) { } m_connectionInfo.Version = WorkspaceVersion.UGC60; m_connectionInfo.Type = WorkspaceType.SMWU; m_connectionInfo.Server = $"{m_PrjInfo.WorkspacePath}\\{m_PrjInfo.WorkspaceName}.smwu"; m_connectionInfo.Name = m_PrjInfo.WorkspaceName; m_workspace.Create(m_connectionInfo); DatasourceConnectionInfo datasourceConInfo = new DatasourceConnectionInfo(); datasourceConInfo.Server = $"{m_PrjInfo.DataSourceFilePath}\\{m_PrjInfo.DataSourceName}.udd"; datasourceConInfo.Alias = m_PrjInfo.DataSourceName; m_workspace.Datasources.CloseAll(); if (System.IO.File.Exists(m_PrjInfo.DataSourceName)) { m_datasource = m_workspace.Datasources.Open(datasourceConInfo); } else { m_datasource = m_workspace.Datasources.Create(datasourceConInfo); } UCEarthGlobal.m_MainSceneControl.Scene.Workspace = m_workspace; }
private void CreateDataset_Click(object sender, RoutedEventArgs e) { Workspace workspace = null; DatasourceConnectionInfo info = null; try { Toolkit.SetDtNameAsTableName(true); var datasetName = "test222"; workspace = new Workspace(); info = new DatasourceConnectionInfo(); Datasource datasource = GetDbDatasource(workspace, info); Datasets datasets = datasource.Datasets; if (!datasets.IsAvailableDatasetName(datasetName)) { datasets.Delete(datasetName); } DatasetVectorInfo vectorInfo = new DatasetVectorInfo(); vectorInfo.Name = datasetName; vectorInfo.Type = DatasetType.Point; var result = datasets.Create(vectorInfo); if (result != null) { MessageBox.Show("添加数据集成功"); } } catch (Exception ex) { throw ex; } finally { if (info != null) { info.Dispose(); } if (workspace != null) { workspace.Dispose(); } } }
private void Initialize() { workspace = new Workspace(); //Memory数据源 DatasourceConnectionInfo memInfo = new DatasourceConnectionInfo(); //设置数据源连接的引擎类型 memInfo.EngineType = EngineType.Memory; memInfo.Alias = "fdgdfgd"; memInfo.Server = "tyjyutjyu"; // 创建/打开数据库数据源 memDatasource = workspace.Datasources.Create(memInfo); var r = SuperMapSdkHelper.ImportShpToDatasource(filePath, memDatasource, targetDatasetName); if (r.FailedSettings.Count() > 0) { MessageBox.Show("打开shp文件失败"); } }
private void CreateDb() { Workspace workspace = new Workspace(); DatasourceConnectionInfo info = new DatasourceConnectionInfo(); //mysql数据源 //设置数据源连接的引擎类型 info.EngineType = EngineType.MySQL; //设置数据库连接字符串 info.Server = server; info.Database = database; info.User = userName; info.Password = password; info.Driver = driver; info.IsAutoConnect = true; info.Alias = "MySQL"; //不能为空 // 打开数据库数据源 //超图sdk不能直接连接空数据库,需要使用Create方法新建数据库,才有超图“系统表” Datasource datasource = workspace.Datasources.Create(info); }
public string ImportCSV(string targetName,string importPath, DatasourceConnectionInfo info) { try { ImportSettingCSV importSettingCSV = new ImportSettingCSV(); importSettingCSV.ImportMode = ImportMode.Overwrite;//可复写 importSettingCSV.FirstRowIsField = true; importSettingCSV.SourceFilePath = importPath; importSettingCSV.TargetDatasourceConnectionInfo = info; importSettingCSV.TargetDatasetName = targetName; DataImport import1 = new DataImport(); import1.ImportSettings.Add(importSettingCSV); ImportResult dd= import1.Run();//.GetSucceedDatasetNames(importSettingCSV); if(dd.FailedSettings.Length!=0) return "【属性表导入】"+targetName+"导入失败!请检查数据是否含有有效记录。\t\n"; return null; } catch (Exception ex) { MessageBox.Show(ex.Message); return null; } }
/// <summary> /// 连接数据库 /// </summary> /// <returns></returns> public Datasource GetDbDatasource(Workspace workspace, DatasourceConnectionInfo info) { //设置数据源连接的引擎类型 info.EngineType = EngineType.MySQL; //设置数据库连接字符串 info.Server = server; info.Database = database; info.User = userName; info.Password = password; info.Alias = "Test";//不能为空 // 创建/打开数据库数据源 Datasource datasource = workspace.Datasources.Open(info); if (datasource == null) { Console.WriteLine("打开数据源失败"); return(null); } else { Console.WriteLine("数据源打开成功!"); return(datasource); } }
private DatasourceConnectionInfo CreateDatasourceConnectionInfo(string datasoureName) { var datasourceConnection = new DatasourceConnectionInfo() { EngineType = EngineType.SQLPlus, Driver = ConfigHelper.GetConfig("WorkspaceDriver"), Server = ConfigHelper.GetConfig("WorkspaceServer"), Database = ConfigHelper.GetConfig("WorkspaceDatabase"), User = ConfigHelper.GetConfig("WorkspaceUser"), Password = ConfigHelper.GetConfig("WorkspacePassword"), Alias = datasoureName }; return datasourceConnection; }
/// <summary> /// 打开网络数据集并初始化相应变量。 /// Open the network dataset and initialize variables /// </summary> private void Initialize() { try { // 打开数据源,得到点线数据集 // Open datasource and get the point , line datasets DatasourceConnectionInfo connectionInfo = new DatasourceConnectionInfo( @"..\..\SampleData\City\Changchun.udb", "FindPath2D", ""); connectionInfo.EngineType = EngineType.UDB; m_workspace.Datasources.Open(connectionInfo); m_datasetLine = (DatasetVector)m_workspace.Datasources[0].Datasets[m_datasetName]; m_datasetPoint = m_datasetLine.ChildDataset; m_trackingLayer = m_mapControl.Map.TrackingLayer; m_trackingLayer.IsAntialias = true; // 初始化各变量 // Initialzie variables m_flag = 1; m_Points = new Point2Ds(); m_style = new GeoStyle(); m_barrierNodes = new List <Int32>(); m_barrierEdges = new List <Int32>(); m_selectMode = SelectMode.SelectPoint; m_timer = new Timer(); m_timer.Interval = 200; m_timer.Enabled = false; // 加载点数据集及线数据集并设置各自风格 // Add point, line datasets and set their styles m_layerLine = m_mapControl.Map.Layers.Add(m_datasetLine, true); m_layerLine.IsSelectable = false; LayerSettingVector lineSetting = (LayerSettingVector)m_layerLine.AdditionalSetting; GeoStyle lineStyle = new GeoStyle(); lineStyle.LineColor = Color.LightGray; lineStyle.LineWidth = 0.1; lineSetting.Style = lineStyle; m_layerPoint = m_mapControl.Map.Layers.Add(m_datasetPoint, true); LayerSettingVector pointSetting = (LayerSettingVector)m_layerPoint.AdditionalSetting; GeoStyle pointStyle = new GeoStyle(); pointStyle.LineColor = Color.DarkGray; pointStyle.MarkerSize = new Size2D(2.5, 2.5); pointSetting.Style = pointStyle; // 调整mapControl的状态 // Adjust the status of mapControl m_mapControl.Action = SuperMap.UI.Action.Select; m_mapControl.Map.IsAntialias = true; m_mapControl.IsWaitCursorEnabled = false; m_mapControl.Map.Refresh(); m_mapControl.MouseDown += new MouseEventHandler(m_mapControl_MouseDown); m_mapControl.GeometrySelected += new GeometrySelectedEventHandler(m_mapControl_GeometrySelected); m_timer.Tick += new EventHandler(m_timer_Tick); Load(); } catch (Exception e) { Trace.WriteLine(e.Message); } }
//创建工作空间(超图) public void CreateWorkspace(string wpsPath, string sources, string symbol) { // 创建工作空间,弹出 “关于”对话框 SuperMap.Data.Workspace workspace = new SuperMap.Data.Workspace(); WorkspaceConnectionInfo workspaceConnectionInfo = new WorkspaceConnectionInfo(); workspaceConnectionInfo.Type = WorkspaceType.SMWU; workspaceConnectionInfo.Name = "MapResult"; workspaceConnectionInfo.Password = "******"; String file = wpsPath; workspaceConnectionInfo.Server = file; if (workspace.Create(workspaceConnectionInfo)) { //MessageBox.Show("创建工作空间成功"); workspace.Caption = "MapResult"; workspace.Save(); DirectoryInfo di = new DirectoryInfo(symbol); foreach (FileInfo fill in di.GetFiles("*.bru")) { File.Copy(fill.FullName, sources + "//" + fill.Name, true); SymbolFillLibrary sf = workspace.Resources.FillLibrary; sf.FromFile(sources + "//" + fill.Name); workspace.Save(); } foreach (FileInfo point in di.GetFiles("*.sym")) { File.Copy(point.FullName, sources + "//" + point.Name, true); SymbolMarkerLibrary sf = workspace.Resources.MarkerLibrary; sf.FromFile(sources + "//" + point.Name); workspace.Save(); } foreach (FileInfo Line in di.GetFiles("*.lsl")) { File.Copy(Line.FullName, sources + "//" + Line.Name, true); SymbolLineLibrary sf = workspace.Resources.LineLibrary; sf.FromFile(sources + "//" + Line.Name); workspace.Save(); } di = new DirectoryInfo(sources); FileInfo[] fl = di.GetFiles("*.udb"); for (int s = 0; s < fl.Length; s++) { DatasourceConnectionInfo ds = new DatasourceConnectionInfo(); ds.Alias = fl[s].Name.Substring(0, fl[s].Name.Length - 4); ds.Password = "******"; ds.Server = sources + "\\" + fl[s].ToString(); //ds.Password = "******"; Datasource datasource = workspace.Datasources.Open(ds); if (ds.Alias.Substring(0, 4) == "ymgc") { ProjectConverTest(@"G:\移动风险监测\参考坐标\CGCS_2000.xml", datasource); System.Threading.Thread.Sleep(100); } //= "ymgc1"; if (datasource == null) { MessageBox.Show("打开数据源失败"); } else { //MessageBox.Show(fl[s].Name+"数据源打开成功!"); } workspace.Save(); } workspace.Close(); workspace.Dispose(); workspaceConnectionInfo.Dispose(); } }
//避洪转移数据导入 /* public void bhzy(string outPath_Mid, string outPath_Final) { try { //DatasourceConnectionInfo info = CreatUDB(outPath_Final, "bhzy", set.passWod); DatasourceConnectionInfo info = new DatasourceConnectionInfo(); info.Password = set.passWod; info.Server = outPath_Final + "\\" + "bhzy.udb"; DataImport("*.shp", "*.tif", outPath_Mid + "\\bhzy\\", info); wks.Datasources.CloseAll(); } catch (Exception ex) { Msg(ex.Message); } }*/ public void bhzyImport(string bhzy_path, string outPath_Final) { try { datetime = DateTime.Now; //创建数据源 di = new DirectoryInfo(bhzy_path); DirectoryInfo[] bhzyPath = di.GetDirectories("6.4避洪转移展示支撑数据", SearchOption.AllDirectories); DatasourceConnectionInfo info = new DatasourceConnectionInfo(); info.Password = set.passWod; info.Server = outPath_Final + "\\" + "bhzy.udb"; FileInfo[] info_file = bhzyPath[0].GetFiles("*.shp", SearchOption.AllDirectories); max = info_file.Length; if (max == 0) return;//陈杜彬 3.8 修改 int p = 0; foreach (FileInfo NextFolder in info_file)//"*.shp", { failedRecord += importTool.ImportShp(NextFolder.FullName, info); pgrs(++p); Msg(NextFolder.Name + "导入成功!"); } Msg("本次成功导入数据" + importTool.i.ToString() + "条"); Msg("用时:" + ExecDateDiff(datetime, DateTime.Now)); //} wks.Datasources.CloseAll(); } catch (Exception ex) { Msg(ex.Message); } }
public void ImportTIFFTest(string importPath, string sourceUDB) { try { // 1. 构建数据源连接对象。 DatasourceConnectionInfo info = new DatasourceConnectionInfo(); info.Server = sourceUDB; WorkspaceConnectionInfo ConnectionInfo = new WorkspaceConnectionInfo(sourceUDB); SuperMap.Data.Workspace wps = new SuperMap.Data.Workspace(); wps.Create(ConnectionInfo); Datasources ds = wps.Datasources; //ds.Open(info); Datasource dss = ds.Create(info); // new Datasource(); //dss.Connect(); // 2. 构建SHP导入设置对象(ImportSettingSHP),设置数据源,设置导入数据路径。 ImportSettingTIF importSettingTIF = new ImportSettingTIF(); importSettingTIF.ImportMode = ImportMode.Overwrite;//可复写 importSettingTIF.SourceFilePath = importPath; importSettingTIF.TargetDatasourceConnectionInfo = info; importSettingTIF.ImportingAsGrid = true;//栅格数据集形式 // 3. 获取导入设置对象的导入信息集合(ImportDataInfos),设置目标数据集的名字。 // ImportDataInfo dataInfos = importSettingSHP.GetTargetDataInfos(""); //importSettingSHP.SetTargetDataInfos(dataInfos); // 4. 构建数据导入类对象(DataImport),构建并设置导入设置对象集合。 PrjCoordSys prj = new PrjCoordSys(); prj.Type = PrjCoordSysType.SphereMercator; importSettingTIF.TargetPrjCoordSys = prj;//设置了参考投影,还需改变其投影转换 //prj.GeoCoordSys.FromXML(readXML()) DataImport import1 = new DataImport(); ImportSettings settings = import1.ImportSettings; settings.Add(importSettingTIF); import1.Run(); try { int m = importPath.LastIndexOf('\\'); string dsName = importPath.Substring(m + 1); int n = dsName.LastIndexOf('.'); string dsname = dsName.Substring(0, n); Datasets datasets = dss.Datasets; Dataset m_processDataset = datasets[dsname]; PrjCoordSys prj1 = new PrjCoordSys(); prj1.FromXML(readXML(@"G:\移动风险监测\参考坐标\CGCS_2000.xml")); Boolean result = CoordSysTranslator.Convert(m_processDataset, prj1, new CoordSysTransParameter(), CoordSysTransMethod.GeocentricTranslation); } catch (Exception ex) { MessageBox.Show(ex.Message); } i++; } catch (Exception ex) { MessageBox.Show(ex.Message); } }
/// <summary> /// udb中导入tiff /// </summary> /// <param name="importPath"></param> public string ImportTIFF(string importPath, DatasourceConnectionInfo info) { try { string name = importPath.Substring(importPath.LastIndexOf("\\") + 1); // 1. 构建数据源连接对象。 //DatasourceConnectionInfo info = new DatasourceConnectionInfo(); //info.Server = sourceUDB; // 2. 构建SHP导入设置对象(ImportSettingSHP),设置数据源,设置导入数据路径。 //info.Password = "******"; ImportSettingTIF importSettingTIF = new ImportSettingTIF(); //m_workspace.Datasources.Open(info); importSettingTIF.ImportMode = ImportMode.Overwrite;//可复写 importSettingTIF.SourceFilePath = importPath; importSettingTIF.TargetDatasourceConnectionInfo = info; importSettingTIF.ImportingAsGrid = true;//栅格数据集形式 // 3. 获取导入设置对象的导入信息集合(ImportDataInfos),设置目标数据集的名字。 // ImportDataInfo dataInfos = importSettingSHP.GetTargetDataInfos(""); //importSettingSHP.SetTargetDataInfos(dataInfos); // 4. 构建数据导入类对象(DataImport),构建并设置导入设置对象集合。 //string prjRef = @"G:\移动风险监测\参考坐标\CGCS_2000.xml"; PrjCoordSys prj = new PrjCoordSys(); // prj.FromFile(prjRef, PrjFileType.SuperMap); prj.Type = PrjCoordSysType.SphereMercator; importSettingTIF.TargetPrjCoordSys = prj;//设置了参考投影,还需改变其投影转换 DataImport import1 = new DataImport(); ImportSettings settings = import1.ImportSettings; settings.Add(importSettingTIF); ImportResult dd= import1.Run(); i++; if (dd.FailedSettings.Length != 0) return "【tif数据导入】" + name + "导入失败!请检查数据是否有效。\t\n"; return null; } catch (Exception ex) { MessageBox.Show(ex.Message); return null; } }
//淹没过程数据的导入 public void ymgcImport(string outPath_Final,string ymgc_path) { try { //生成淹没过程数据存放在txt名字命名的文件夹下即tiffPath---ymgcX //tiffpath 中肯定会有很多个淹没过程信息 然后用foreach来逐个的导入 DirectoryInfo tifDi = new DirectoryInfo(ymgc_path); foreach (DirectoryInfo ymgcX in tifDi.GetDirectories()) { //DatasourceConnectionInfo info = CreatUDB(outPath_Final, "ztdt", set.passWod); //string udbName = ymgc_path.Substring(ymgc_path.LastIndexOf("\\") + 1); DatasourceConnectionInfo info = new DatasourceConnectionInfo(); info.Password = set.passWod; info.Server = outPath_Final + "\\" + ymgcX.Name + ".udb"; DataImport(" ", "*.tif", ymgcX.FullName+"\\", info); } wks.Datasources.CloseAll(); } catch (Exception ex) { Msg(ex.Message); } }
public void CSVImport(string CSVTargetName, string outPath_Final,string udbName) { try { DatasourceConnectionInfo info = new DatasourceConnectionInfo(); info.Password = set.passWod; info.Server = outPath_Final + "\\" + udbName; FileInfo[] info_file = di.GetFiles(CSVTargetName, SearchOption.AllDirectories); foreach (FileInfo NextFolder in info_file)//"*.shp", { failedRecord += importTool.ImportCSV(CSVTargetName, NextFolder.FullName, info); Msg(NextFolder.Name + "已导入!"); } wks.Datasources.CloseAll(); } catch (Exception ex) { Msg(ex.Message); } }
//数据导入函数 private void DataImport(string type1, string type2, string sourPath, DatasourceConnectionInfo info) { try { if (!System.IO.Directory.Exists(sourPath)) { Msg("无此数据。"); return; } datetime = DateTime.Now; List<string> shp = importTool.getAllFileName(sourPath, type1); int p = 0; max = shp.Count; foreach (string l1 in shp) { if (l1 == "水系面状.shp") continue; failedRecord+=importTool.ImportShp(sourPath + l1, info);// resultData + "\\" + jcdt.Text); pgrs(++p); Msg(l1 + "导入成功!"); } List<string> tif = importTool.getAllFileName(sourPath, type2); max = tif.Count; int q = 0; foreach (string l2 in tif) { failedRecord += importTool.ImportTIFF(sourPath + l2, info); pgrs(q++); Msg(l2 + "导入成功!"); } Msg("导入任务数据总" + (shp.Count + tif.Count).ToString() + "条");//+ "\r\n" + "本次成功导入数据" + importTool.i.ToString() + "条"); Msg("用时:" + ExecDateDiff(datetime, DateTime.Now)); } catch (Exception ex) { Msg(ex.Message); } }
public void CreateWorkspace(string wpsPath, string sources, string symbol) { // 创建工作空间,弹出 “关于”对话框 Msg("正在创建工作空间···"); SuperMap.Data.Workspace workspace = new SuperMap.Data.Workspace(); WorkspaceConnectionInfo workspaceConnectionInfo = new WorkspaceConnectionInfo(); workspaceConnectionInfo.Type = WorkspaceType.SMWU; workspaceConnectionInfo.Name = "MapResult"; workspaceConnectionInfo.Password = set.passWod; String file = wpsPath; workspaceConnectionInfo.Server = file; if (workspace.Create(workspaceConnectionInfo)) { //MessageBox.Show("创建工作空间成功"); workspace.Caption = "MapResult"; workspace.Save(); Msg("工作空间创建成功:" + workspace.Caption); //System.Threading.Thread.Sleep(500); Msg("正在导入符号库···"); DirectoryInfo di = new DirectoryInfo(symbol); foreach (FileInfo fill in di.GetFiles("*.bru")) { File.Copy(fill.FullName, sources + "//" + fill.Name, true); SymbolFillLibrary sf = workspace.Resources.FillLibrary; sf.FromFile(sources + "//" + fill.Name); workspace.Save(); } foreach (FileInfo point in di.GetFiles("*.sym")) { File.Copy(point.FullName, sources + "//" + point.Name, true); SymbolMarkerLibrary sf = workspace.Resources.MarkerLibrary; sf.FromFile(sources + "//" + point.Name); workspace.Save(); } foreach (FileInfo Line in di.GetFiles("*.lsl")) { File.Copy(Line.FullName, sources + "//" + Line.Name, true); SymbolLineLibrary sf = workspace.Resources.LineLibrary; sf.FromFile(sources + "//" + Line.Name); workspace.Save(); } Msg("符号库导入成功"); System.Threading.Thread.Sleep(500); di = new DirectoryInfo(sources); FileInfo[] fl = di.GetFiles("*.udb"); for (int s = 0; s < fl.Length; s++) { DatasourceConnectionInfo ds = new DatasourceConnectionInfo(); ds.Alias = fl[s].Name.Substring(0, fl[s].Name.Length - 4); Msg( "添加数据源:" + ds.Alias); ds.Server = sources + "\\" + fl[s].ToString(); ds.Password = set.passWod; Datasource datasource = workspace.Datasources.Open(ds); if (datasource == null) { MessageBox.Show("打开数据源失败"); } else { //MessageBox.Show(fl[s].Name+"数据源打开成功!"); } workspace.Save(); } workspace.Close(); workspace.Dispose(); workspaceConnectionInfo.Dispose(); } }
//---------------各个udb的导入函数----------------------------------------------------------------------- //水利工程导入函数 private void slgcImport(string outPath_Final, string outPath_Mid) { try { //创建udb并加密 //DatasourceConnectionInfo info = CreatUDB(outPath_Final, "slgc", set.passWod); DatasourceConnectionInfo info = new DatasourceConnectionInfo(); info.Password = set.passWod; info.Server = outPath_Final + "\\" + "slgc.udb"; DataImport("*.shp", "*.tif", outPath_Mid + "\\slgc\\", info); wks.Datasources.CloseAll(); } catch (Exception ex) { Msg(ex.Message); } }
//溃口数据导入函数 public void kuiko(string kkpath, string outPath_Final) { try { //创建数据源 di = new DirectoryInfo(kkpath);//批次处理需要更改 FileInfo[] kk = di.GetFiles("kuiko.shp", SearchOption.AllDirectories);//得到溃口数据 if (kk.Length == 0) { Msg("溃口数据不存在,系统自动跳过"); return; } DatasourceConnectionInfo info = new DatasourceConnectionInfo(); info.Password = set.passWod; info.Server = outPath_Final + "\\" + "kuikou.udb"; datetime = DateTime.Now; foreach (FileInfo kuikou in kk) { string way = kuikou.Directory + "\\" + kuikou.Name; //导入数据 importTool.ImportShp(way, info); Msg(kuikou.Name + "导入成功!"); } Msg("所有任务数据总" + kk.Length.ToString() + "条"); Msg("用时:" + ExecDateDiff(datetime, DateTime.Now)); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
//复合要素方案导入 public void fhysImport(string outPath_Final, string outPath_Mid) { try { //DatasourceConnectionInfo info = CreatUDB(outPath_Final, "ztdt", set.passWod); DatasourceConnectionInfo info = new DatasourceConnectionInfo(); info.Password = set.passWod; info.Server = outPath_Final + "\\" + "fhys.udb"; DataImport("*.shp", "*.tif", outPath_Mid + "\\fhys\\", info); wks.Datasources.CloseAll(); } catch (Exception ex) { Msg(ex.Message); } }
//private void CreatePointDataset(string tableName) //{ // Workspace workspace = new Workspace(); // DatasourceConnectionInfo info = new DatasourceConnectionInfo(); // Datasource datasource = GetDbDatasource(workspace, info); // var datasetVector = (DatasetVector)datasource.Datasets[tableName]; // if (datasetVector == null) // { // CreateDataset(datasource, DatasetType.Point, tableName); // } // //只取了数据结构,没有取数据 // var recordset = datasetVector.GetRecordset(true, SuperMap.Data.CursorType.Dynamic); // recordset.Edit(); // recordset.fi //} private void InsertRecordSetToDb(string shapeFieldName, string tableName) { Workspace workspace = new Workspace(); DatasourceConnectionInfo info = new DatasourceConnectionInfo(); var filePath = $"{Directory.GetCurrentDirectory()}\\{Guid.NewGuid().ToString()}"; var files = new List <string> { $"{filePath}.udb", $"{filePath}.udd" }; Datasource datasource = GetDbDatasource(workspace, info); if (datasource != null) { //临时数据源 DatasourceConnectionInfo tempInfo = new DatasourceConnectionInfo(); //设置数据源连接的引擎类型 tempInfo.EngineType = EngineType.UDB; tempInfo.Alias = tableName; tempInfo.Server = filePath; // 创建/打开数据库数据源 Datasource tempDatasource = workspace.Datasources.Create(tempInfo); Recordset recordset = null, tempRecordset = null; if (tempDatasource != null) { ImportResult result = ImportShpToTemp(shapeFieldName, tempDatasource, tableName); if (result.FailedSettings.Length == 0) { Console.WriteLine($"导入{shapeFieldName}成功!"); try { for (int index = 0; index < tempDatasource.Datasets.Count; index++) { DatasetVector tempDatasetVector = (DatasetVector)tempDatasource.Datasets[index]; tempRecordset = tempDatasetVector.GetRecordset(false, SuperMap.Data.CursorType.Dynamic); //没有数据 if (tempRecordset.RecordCount == 0) { continue; } var tempFieldInfos = tempDatasetVector.FieldInfos; //注意:数据集是手工录入的,不是超图sdk生成的,所以不能删除数据集 //如果更新数据集中的记录,则应该操纵记录集(删除、修改、新增) var datasetVector = (DatasetVector)datasource.Datasets[tableName]; if (datasetVector == null) { CreateDataset(datasource, DatasetType.Point, tableName); //throw new Exception($"不存在数据集名称为{tableName}的数据集!"); } //删去之前的所有记录 //datasetVector.GetRecordset(false, SuperMap.Data.CursorType.Dynamic).DeleteAll(); //只取了数据结构,没有取数据 recordset = datasetVector.GetRecordset(true, SuperMap.Data.CursorType.Dynamic); //设置批量提交 // 设置批量更新的限度为5000,注意一定要在开始批量更新前设置MaxRecordCount! recordset.Batch.MaxRecordCount = 500; // 开始批量更新,当添加到设置的MaxRecordCount的下一条记录时,将会将MaxRecordCount条记录自动提交到数据库中。 recordset.Batch.Begin(); tempRecordset.MoveFirst(); //遍历临时记录集 for (Int32 i = 0; i < tempRecordset.RecordCount; i++) { //往mysql新增记录 SuperMap.Data.Geometry geoPoint = tempRecordset.GetGeometry(); recordset.AddNew(geoPoint); //SeekID:在记录中搜索指定 ID 号的记录,并定位该记录为当前记录。 recordset.MoveLast(); foreach (SuperMap.Data.FieldInfo fileInfo in tempFieldInfos) { if (!fileInfo.IsSystemField && IsHaveField(datasetVector.FieldInfos, fileInfo.Name)) { recordset.Edit(); recordset.SetFieldValue(fileInfo.Name, tempRecordset.GetFieldValue(fileInfo.Name)); Object valueID = recordset.GetFieldValue(fileInfo.Name); } } //处理业务数据 tempRecordset.MoveNext(); //recordset.Update(); } // 使用批量更新的Update,提交没有自动提交的记录 recordset.Batch.Update(); } } catch (Exception ex) { throw ex; } finally { //示例程序BatchAdd说明要释放记录集 if (recordset != null) { recordset.Dispose(); } if (tempRecordset != null) { tempRecordset.Dispose(); } } } else { throw new Exception($"导入{shapeFieldName}失败!"); } } else { throw new Exception($"创建临时数据源{filePath}失败!"); } } // 释放工作空间资源 info.Dispose(); workspace.Dispose(); foreach (var file in files) { if (File.Exists(file)) { File.Delete(file); } } MessageBox.Show("成功!"); }
private void ImportShpByMemory(string filePath) { //https://blog.csdn.net/tane_e/article/details/89393493 //https://www.supermap.com/EN/online/Deskpro%206.0/SDMain/html/R_Dataset_Import.htm //https://www.supermap.com/EN/online/Deskpro%206.0/SDTechTheme/ExpressHtml/ImEx_ArcGIS_Shape.htm Workspace workspace = new Workspace(); DatasourceConnectionInfo info = new DatasourceConnectionInfo(); //mysql数据源 //设置数据源连接的引擎类型 info.EngineType = EngineType.MySQL; //设置数据库连接字符串 info.Server = server; info.Database = database; info.User = userName; info.Password = password; info.Driver = driver; info.IsAutoConnect = true; info.Alias = "MySQL"; //不能为空 // 打开数据库数据源 //超图sdk不能直接连接空数据库,需要使用Create方法新建数据库,才有超图“系统表” Datasource datasource = workspace.Datasources.Open(info); ////udb数据源 //DatasourceConnectionInfo udbInfo = new DatasourceConnectionInfo(); ////设置数据源连接的引擎类型 //udbInfo.EngineType = EngineType.UDB; ////设置文件位置 //udbInfo.Server = @"D:\MicroDesktop\Temp\test"; //// 创建/打开数据库数据源 //Datasource udbDatasource = workspace.Datasources.Create(udbInfo); //Datasource udbDatasource = workspace.Datasources.Open(udbInfo); //Memory数据源 DatasourceConnectionInfo memInfo = new DatasourceConnectionInfo(); //设置数据源连接的引擎类型 memInfo.EngineType = EngineType.Memory; memInfo.Alias = "fdgdfgd"; memInfo.Server = "tyjyutjyu"; // 创建/打开数据库数据源 Datasource memDatasource = workspace.Datasources.Create(memInfo); //svc-矢量数据 //DatasourceConnectionInfo scvInfo = new DatasourceConnectionInfo(); ////设置数据源连接的引擎类型 //scvInfo.EngineType = EngineType.VectorFile; ////设置文件位置 //scvInfo.Server = @"D:\MicroDesktop\Temp\test2"; //// 创建/打开数据库数据源 //Datasource scvDatasource = workspace.Datasources.Create(scvInfo); if (datasource != null) { ImportResult result = ImportShpToMemory(filePath, memDatasource); if (result.FailedSettings.Length == 0) { Console.WriteLine($"导入{filePath}成功!"); //for (int i = 0; i < memDatasource.Datasets.Count; i++) //{ // DatasetVector datasetVector = (DatasetVector)memDatasource.Datasets[i]; // Dataset newDataset = datasource.CopyDataset(datasetVector, datasetVector.Name, EncodeType.None); //} DatasetVector datasetVector = (DatasetVector)memDatasource.Datasets[0]; //datasource.Datasets.CreateFromTemplate(datasetVector.Name, datasetVector); //var t1=datasource.Datasets.CreateFromTemplate(datasetVector.Name, memDatasource.Datasets[0]); //var t2= datasource.CopyDataset(datasetVector, datasetVector.Name, EncodeType.None); //datasource.Flush(datasetVector.Name); var re = datasetVector.GetRecordset(false, SuperMap.Data.CursorType.Dynamic); //re.AddNew( var v3 = datasource.Datasets.CreateAndAppendWithSmid(targetTableName, re); var v4 = datasource.Datasets.CreateFromTemplate(targetTableName, memDatasource.Datasets[0]); var v5 = datasource.CopyDataset(datasetVector, targetTableName, datasetVector.EncodeType); //datasource.Datasets.Create(datasetVector); var dataset = datasource.Datasets[targetTableName]; var ve = dataset as DatasetVector; var record = ve?.GetRecordset(false, SuperMap.Data.CursorType.Dynamic); //record.AddNew(...); //var v2= datasource.RecordsetToDataset(re, targetTableName); datasource.Refresh(); //String name = datasource.Datasets.GetAvailableDatasetName(targetTableName); // 设置矢量数据集的信息 //DatasetVectorInfo datasetVectorInfo = new DatasetVectorInfo(); //datasetVectorInfo.Type = DatasetType.Line; //datasetVectorInfo.IsFileCache = true; //datasetVectorInfo.Name = name; //datasetVectorInfo.Bounds = new Rectangle2D(new Point2D(0, 0), new Point2D(10, 10)); //Console.WriteLine("矢量数据集的信息为:" + datasetVectorInfo.ToString()); //// 创建矢量数据集 //datasource.Datasets.Create(datasetVectorInfo); //datasource.Flush(name); //var d2= datasource.CopyDatasetWithSmID(udbDatasource.Datasets[0], targetTableName, EncodeType.None); //var d = datasource.CopyDataset(udbDatasource.Datasets[0], targetTableName, EncodeType.None); } else { Console.WriteLine($"导入{filePath}失败!"); } } // 释放工作空间资源 info.Dispose(); workspace.Dispose(); }
//淹没过程导入函数 public void ymgc(string yxtb, string outPath_Final, string outPath_Mid, string ymgc_tifPath) { string fail = "";//记录失败数据。 datetime = DateTime.Now; IRasterLayer rasterLayer = new RasterLayerClass(); ESRI.ArcGIS.DataManagementTools.CopyRaster copyRaster = new CopyRaster();//定义copy工具 int i = 1, j = 0; try { string aimPh = outPath_Final + "\\" + " ymgc"; string resultPath = outPath_Mid + "\\" + " ymgc"; di = new DirectoryInfo(ymgc_tifPath);// List<string> Solution = new List<string>(); Hashtable tb = new Hashtable(); FileInfo[] fileOfTIFF = null; try { string test = tb[yxtb].ToString(); fileOfTIFF = di.GetFiles(test + "*.tif"); } catch { fileOfTIFF = di.GetFiles("*.tif"); } for (int Count = 0; Count < fileOfTIFF.Length; Count++) { int leng_1 = fileOfTIFF[Count].Name.LastIndexOf('_'); string te = fileOfTIFF[Count].Name.Substring(0, leng_1); if (Count + 1 == fileOfTIFF.Length) { Solution.Add(te); break; } int leng_2 = fileOfTIFF[Count].Name.LastIndexOf('_'); string te1 = fileOfTIFF[Count + 1].Name.Substring(0, leng_2); if (te != te1) { Solution.Add(te); } } foreach (string fang in Solution) { int leng1 = fang.LastIndexOf('-'); string fa = fang.Substring(leng1 + 1); //} //for (int fa = 1; fa < Solution.Count; fa++) // { DateTime datetimeBegain = new DateTime(); datetimeBegain = DateTime.Now; //创建一个文件夹 //string FA= string create1 = resultPath + fa; importTool.createFolder(create1); Hashtable table = new Hashtable();//创建一个哈希表 string projecCode = ""; if (tb[yxtb] == null) { projecCode = fang + "*.tif"; } else projecCode = tb[yxtb].ToString() + "-" + fa + "*.tif"; FileInfo[] arrFi = di.GetFiles(projecCode); max = arrFi.Length; for (int s = 0; s < arrFi.Length; s++) { int length = arrFi[s].Name.LastIndexOf('_'); string jq = arrFi[s].Name.Substring(length + 1);//.Replace("_","") string jq2 = jq.Substring(0, jq.Length - 4);//去掉“.tif” double m = double.Parse(jq2); table.Add(m, arrFi[s].Name); j++; } ArrayList akeys = new ArrayList(table.Keys); akeys.Sort();//对哈希表中的关键字排序,排序 //DatasourceConnectionInfo info = creatUDB(outPath_Final, "ymgc" + fa.Substring(1), "aaaazzzz"); //info.Password = "******"; //wks.Datasources.Open(info); DatasourceConnectionInfo info = new DatasourceConnectionInfo(); info.Password = set.passWod; info.Server = outPath_Final + "\\" + "ymgc" + fa.Substring(1) + ".udb"; foreach (double qq in akeys) { try { rasterLayer.CreateFromFilePath(ymgc_tifPath + "\\" + table[qq].ToString()); } catch { fail += table[qq].ToString() + "\n"; i = i + 1; continue; } copyRaster.in_raster = rasterLayer; copyRaster.out_rasterdataset = create1 + "\\" + "time" + i.ToString() + ".tif"; gp.OverwriteOutput = true; gp.Execute(copyRaster, null); //添加进udb importTool.ImportTIFF(create1 + "\\" + "time" + i.ToString() + ".tif", info); pgrs(i); Msg("方案" + fa + "_time" + i.ToString() + "导入数据源成功"); i++; } Msg("项目编号:" + fang + "\n" + "任务总数:" + arrFi.Length + "条\n" + "此次完成:" + (i - 1).ToString() + "条\n" + "处理失败:" + fail); i = 1; max = 1; //wks.Datasources.CloseAll(); Msg("用时:" + ExecDateDiff(datetimeBegain, DateTime.Now)); } //Msg("项目编号:" + tb[yxtb].ToString() + "\n" + "任务总数:" + j + "条\n" + "此次完成:" + j.ToString() + "条\n" + "处理失败为:" + fail); //Msg("用时:" + ExecDateDiff(datetime, DateTime.Now)); } catch (Exception ex) { Msg(ex.Message); } }
//影响分析导入函数 public void yxfxImport(string yxfx_path, string outPath_Final) { try { string mc;//设置过滤水系面状的数据 datetime = DateTime.Now; //创建数据源 di = new DirectoryInfo(yxfx_path); DirectoryInfo[] yxfxPath = di.GetDirectories("6.3影响分析支撑数据", SearchOption.AllDirectories); DatasourceConnectionInfo info = new DatasourceConnectionInfo(); info.Password = set.passWod; info.Server = outPath_Final + "\\" + "yxfx.udb"; foreach (DirectoryInfo dd in yxfxPath) { ////遍历文件夹 FileInfo[] info_file = dd.GetFiles("*.shp", SearchOption.AllDirectories); max = info_file.Length; int p = 0; foreach (FileInfo NextFolder in info_file)//"*.shp", { mc = NextFolder.Name; if (mc == "水系面状.shp") continue; failedRecord += importTool.ImportShp(NextFolder.FullName, info); pgrs(++p); Msg(mc + "导入成功!"); } Msg("本次成功导入数据" + importTool.i.ToString() + "条"); Msg("用时:" + ExecDateDiff(datetime, DateTime.Now)); } wks.Datasources.CloseAll(); } catch (Exception ex) { Msg(ex.Message); } }
private void SetFieldInfo_Click(object sender, RoutedEventArgs e) { Workspace workspace = null; DatasourceConnectionInfo info = null; try { Toolkit.SetDtNameAsTableName(true); var datasetName = ""; var newFieldList = new List <CreateFieldInfo>(); newFieldList.Add(new CreateFieldInfo { Type = "int", Name = "test1Pro" }); newFieldList.Add(new CreateFieldInfo { Type = "string", Name = "test2Pro" }); workspace = new Workspace(); info = new DatasourceConnectionInfo(); Datasource datasource = GetDbDatasource(workspace, info); var dataset = datasource.Datasets[datasetName]; if (dataset == null) { throw new Exception($"没有名称为{datasetName}的数据集"); } var datasetVector = dataset as DatasetVector; var fields = datasetVector.FieldInfos; //删除所有非sm系统字段 foreach (FieldInfo field in fields) { if (!field.IsSystemField) { fields.Remove(field.Name); } } //新增字段 foreach (var newField in newFieldList) { switch (newField.Type) { case "int": fields.Add(new FieldInfo(newField.Name, FieldType.Int32)); break; case "string": fields.Add(new FieldInfo(newField.Name, FieldType.Char)); break; default: break; } } } catch (Exception ex) { throw ex; } finally { if (info != null) { info.Dispose(); } if (workspace != null) { workspace.Dispose(); } } }
public override void Run() { try { //// WorkspaceConnectionInfo conInfo = new WorkspaceConnectionInfo(@"D:\Program Files (x86)\SuperMap\SuperMap iDesktop 7C\SampleData\World\World.smwu"); // WorkspaceControl workspaceControl // = SuperMap.Desktop.Application.ActiveApplication.MainForm.DockBarManager[typeof(WorkspaceControlManager)].Control as WorkspaceControl; // if (workspaceControl != null) // { // workspaceControl.ResourcesNodeVisible = false; // workspaceControl.LayoutsNodeVisible = false; // //workspaceControl.WorkspaceTree.Workspace.Open(conInfo); // WorkspaceConnectionInfo conInfo1 = new WorkspaceConnectionInfo(@"..\..\Default.smwu"); // //workspaceControl.WorkspaceTree.Workspace.Create(conInfo1); // //workspaceControl.WorkspaceTree.Workspace.Close(); // //workspaceControl.WorkspaceTree.Workspace.Dispose(); // bool dd= workspaceControl.WorkspaceTree.Workspace.Open(conInfo1); // workspaceControl.WorkspaceTree.Workspace.Datasources.Create() // //workspaceControl.Update(); // //workspaceControl.WorkspaceTree.WorkspaceNode.Nodes.Add("dafsaf"); // // workspaceControl.WorkspaceTree.Update(); // } // System.Windows.Forms.MessageBox.Show("LoadImageCtrlAction"); //IFormMap activeMapForm = Application.ActiveForm as IFormMap; //MapControl activeMap = activeMapForm.MapControl; //IFormManager dd= Application.ActiveApplication.MainForm.FormManager; //for (int i = 0; i < dd.Count; i++) //{ //} WorkspaceControl workspaceControl = SuperMap.Desktop.Application.ActiveApplication.MainForm.DockBarManager[typeof(WorkspaceControlManager)].Control as WorkspaceControl; Datasource targetDatasource; DatasourceConnectionInfo dataSourceConnectionInfo = new DatasourceConnectionInfo(); dataSourceConnectionInfo.Server = @"..\..\Default"; if (workspaceControl != null) { workspaceControl.ResourcesNodeVisible = false; workspaceControl.LayoutsNodeVisible = false; Form1 form1 = new Form1(); form1.Show(); try { bool isExist = workspaceControl.WorkspaceTree.Workspace.Datasources.Contains(dataSourceConnectionInfo.Alias); if (isExist) { targetDatasource = workspaceControl.WorkspaceTree.Workspace.Datasources[dataSourceConnectionInfo.Alias]; } else { targetDatasource = workspaceControl.WorkspaceTree.Workspace.Datasources.Open(dataSourceConnectionInfo); } } catch (Exception ex1) { targetDatasource = workspaceControl.WorkspaceTree.Workspace.Datasources.Create(dataSourceConnectionInfo); } OpenFileDialog ofd = new OpenFileDialog(); ofd.Filter = "影像文件(*.tif)|*.*"; ofd.ValidateNames = true; ofd.CheckPathExists = true; ofd.CheckFileExists = true; ofd.ShowHelp = true; //ofd.HelpRequest += ofd_HelpRequest; if (ofd.ShowDialog() == DialogResult.OK) { string strFileName = ofd.FileName; //其他代码 DataImport m_dataImport = new DataImport(); m_dataImport.ImportSettings.Clear(); //ImportSettingIMG imgSetting = new ImportSettingIMG(); //imgSetting.ImportMode = ImportMode.Overwrite; //imgSetting.SourceFilePath = @"..\..\SampleData\DataExchange\ImgImport\Multibands.img"; //imgSetting.TargetDatasource = m_desDatasource; //imgSetting.MultiBandImportMode = MultiBandImportMode.MultiBand; //m_dataImport.ImportSettings.Add(imgSetting); //m_dataImport.Run(); //DatasetImage importResult = m_desDatasource.Datasets["Multibands"] as DatasetImage; //LayerSettingImage layerSetting = new LayerSettingImage(); //layerSetting.DisplayBandIndexes = new Int32[] { 3, 2, 1 }; //layerSetting.DisplayColorSpace = ColorSpaceType.RGB; ImportSettingTIF importSetingTif = new ImportSettingTIF(); importSetingTif.ImportMode = ImportMode.Overwrite; importSetingTif.SourceFilePath = strFileName; PrjCoordSys prgCoord = importSetingTif.GetSourcePrjCoordSys(); Charset pCharset = importSetingTif.SourceFileCharset; ImportDataInfos importDataInfoTif = importSetingTif.GetTargetDataInfos(""); importSetingTif.SetTargetDataInfos(importDataInfoTif); //ImportDataInfoTIF importDataInfoTif1 = null; importSetingTif.TargetDatasource = targetDatasource; m_dataImport.ImportSettings.Add(importSetingTif); m_dataImport.Run(); } } } catch (Exception ex) { SuperMap.Desktop.Application.ActiveApplication.Output.Output(ex.StackTrace); } }
/// <summary> /// 将超图的Geometry格式转换为geojson/wkt/wkb格式 /// </summary> /// <param name="convertDataEnum"></param> private void ConvertGeometryToFormat(ConvertDataEnum convertDataEnum) { var shapeFieldName = filePathTextBlock.Text; if (string.IsNullOrEmpty(shapeFieldName)) { throw new Exception($"shp文件为空!"); } Workspace workspace = new Workspace(); DatasourceConnectionInfo info = new DatasourceConnectionInfo(); //将shp文件的数据转存为udb临时数据,而不是读取在内存中,防止内存泄漏 var filePath = $"{Directory.GetCurrentDirectory()}\\{Guid.NewGuid().ToString()}"; var files = new List <string> { $"{filePath}.udb", $"{filePath}.udd" }; string targetDatasetName = "targetDatasetName"; //临时数据源 DatasourceConnectionInfo tempInfo = new DatasourceConnectionInfo(); //设置数据源连接的引擎类型 tempInfo.EngineType = EngineType.UDB; tempInfo.Alias = targetDatasetName; tempInfo.Server = filePath; // 创建/打开数据库数据源 Datasource tempDatasource = workspace.Datasources.Create(tempInfo); Recordset recordset = null, tempRecordset = null; if (tempDatasource != null) { ImportResult result = ImportShpToTemp(shapeFieldName, tempDatasource, targetDatasetName); if (result.FailedSettings.Length == 0) { try { for (int index = 0; index < tempDatasource.Datasets.Count; index++) { DatasetVector tempDatasetVector = (DatasetVector)tempDatasource.Datasets[index]; tempRecordset = tempDatasetVector.GetRecordset(false, SuperMap.Data.CursorType.Dynamic); //没有数据 if (tempRecordset.RecordCount == 0) { continue; } var tempFieldInfos = tempDatasetVector.FieldInfos; tempRecordset.MoveFirst(); //遍历记录集 for (Int32 i = 0; i < tempRecordset.RecordCount; i++) { Geometry geometry = tempRecordset.GetGeometry(); if (convertDataEnum == ConvertDataEnum.ToGeoJSON) { var geoJSONTxt = Toolkit.GeometryToGeoJson(geometry); var dic = $"{Directory.GetCurrentDirectory()}\\geoJSON"; if (!Directory.Exists(dic)) { Directory.CreateDirectory(dic); } var geoJSONFilePath = $"{dic}\\{i}.txt"; System.IO.File.WriteAllText(geoJSONFilePath, geoJSONTxt); } else if (convertDataEnum == ConvertDataEnum.ToWKB) { var bytes = Toolkit.GeometryToWKB(geometry); } else if (convertDataEnum == ConvertDataEnum.ToWKT) { var wktTxt = Toolkit.GeometryToWKT(geometry); var dic = $"{Directory.GetCurrentDirectory()}\\WKT"; if (!Directory.Exists(dic)) { Directory.CreateDirectory(dic); } var wktFilePath = $"{dic}\\{i}.txt"; System.IO.File.WriteAllText(wktFilePath, wktTxt); } tempRecordset.MoveNext(); } } } catch (Exception ex) { throw ex; } finally { //示例程序BatchAdd说明要释放记录集 if (recordset != null) { recordset.Dispose(); } if (tempRecordset != null) { tempRecordset.Dispose(); } // 释放工作空间资源 info.Dispose(); workspace.Dispose(); //GC.Collect(); foreach (var file in files) { if (File.Exists(file)) { File.Delete(file); } } } } else { throw new Exception($"导入{shapeFieldName}失败!"); } } }
private DatasourceConnectionInfo creatUDB(string outPath_Final, string name, string password) { try { DatasourceConnectionInfo info = new DatasourceConnectionInfo(); info.Server = outPath_Final + "\\" + name + ".udb"; info.Password = password; //info.Alias = name; Datasource ds = wks.Datasources.Create(info); return info; } catch (Exception ex) { Msg(ex.Message); return null; } }