Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
 /// <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;
     }
 }
Exemplo n.º 4
0
        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;
        }
Exemplo n.º 5
0
        /// <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);
            }
        }
Exemplo n.º 6
0
        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();
        }
Exemplo n.º 7
0
 private void CloseDatasource(DatasourceConnectionInfo targetInfo)
 {
     try
     {
         if (m_datasource != null)
         {
             m_workspace.Datasources.Close(targetInfo.Alias);
         }
     }
     catch (Exception ex)
     {
         Trace.WriteLine(ex.Message);
     }
 }
Exemplo n.º 8
0
        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)
            {
            }
        }
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 10
0
        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);
            }
        }
Exemplo n.º 11
0
 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);
     }
 }
Exemplo n.º 12
0
        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);
            }
        }
Exemplo n.º 13
0
        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);
            }
        }
Exemplo n.º 14
0
        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;
        }
Exemplo n.º 15
0
        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();
                }
            }
        }
Exemplo n.º 16
0
        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文件失败");
            }
        }
Exemplo n.º 17
0
        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);
        }
Exemplo n.º 18
0
 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;
     }
 }
Exemplo n.º 19
0
        /// <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);
            }
        }
Exemplo n.º 20
0
 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;
 }
Exemplo n.º 21
0
        /// <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);
            }
        }
Exemplo n.º 22
0
        //创建工作空间(超图)
        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();
            }

        }
Exemplo n.º 23
0
        //避洪转移数据导入
       /* 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);
            }
        }
Exemplo n.º 24
0
 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);
     }
 }
Exemplo n.º 25
0
        /// <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;
            }
        }
Exemplo n.º 26
0
 //淹没过程数据的导入
 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);
     }
 }
Exemplo n.º 27
0
 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);
     }
 }
Exemplo n.º 28
0
        //数据导入函数
        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);
            }
        }
Exemplo n.º 29
0
        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();
            }

        }
Exemplo n.º 30
0
 //---------------各个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);
            }
        }
Exemplo n.º 31
0
        //溃口数据导入函数
        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);
            }
        }
Exemplo n.º 32
0
 //复合要素方案导入
 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);
     }
 }
Exemplo n.º 33
0
        //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("成功!");
        }
Exemplo n.º 34
0
        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();
        }
Exemplo n.º 35
0
        //淹没过程导入函数
        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);
            }
        }
Exemplo n.º 36
0
        //影响分析导入函数
        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);
            }
        }
Exemplo n.º 37
0
        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();
                }
            }
        }
Exemplo n.º 38
0
        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);
            }
        }
Exemplo n.º 39
0
        /// <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}失败!");
                }
            }
        }
Exemplo n.º 40
0
 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;
     }
 }