iobjects .Net 导入Shp数据如何追加数据导入

0 投票

问题描述: 我在服务器中已经建立好mysql数据库,然后在数据库中已经按照相关的规范用超图的idesktop建立好了相应的空间表,然后我在我的项目里面连接数据库打开工作空间进行导入数据时发现我无法进行追加导入数据,比如我  数据库中已经建立好名为Test的空间表,然后我无法通过DataImport的方式导入进去,我只能命名一个数据库中不存在的数据集,才能导入进去,它会自动帮我创建一张新的表,然而这并不是我想要的,我只是想将我加载的shp数据导入到我指定的表中。

            DatasourceConnectionInfo connectionInfo = null;
            Workspace workspace = null;

            connectionInfo = new DatasourceConnectionInfo();//保存数据源连接信息的组件
            connectionInfo.Server = "192.168.10.80";//以下设置相关信息
            connectionInfo.Database = "supermap";
            connectionInfo.User = "root";
            connectionInfo.Password = "123";
            connectionInfo.EngineType = EngineType.MySQL;
            connectionInfo.Driver = "MySQL";
            try
            {
                workspace = new Workspace();//在一个工作空间中打开
                workspace.Datasources.CloseAll();//先清空工作空间的数据源
                Datasource datasources = workspace.Datasources.Open(connectionInfo);
                //bool isOpen = test.Open(workSpace);

                DataImport m_dataImport = new DataImport();
                ImportSettingSHP shpSetting = new ImportSettingSHP();
                shpSetting.ImportMode = ImportMode.Append;
                shpSetting.SourceFilePath = @"D:\内网通缓存\本机数据\210922彰武县\矢量数据\LQ2109222018.shp";
                shpSetting.TargetDatasource = datasources;

                ImportDataInfos dataInfos = shpSetting.GetTargetDataInfos("");
                ImportDataInfoSHP info = dataInfos[0] as ImportDataInfoSHP;
                info.TargetName = "Test";
                shpSetting.SetTargetDataInfos(dataInfos);
                m_dataImport.ImportSettings.Add(shpSetting);
                m_dataImport.Run();
                DatasetVector importResult = datasources.Datasets["Test"] as DatasetVector;
            }
            catch (Exception ex)
            {
                workspace.Dispose();
            }

3月 4, 2020 分类:  272次浏览 | 用户: sccaptain (1 分)

1个回答

0 投票
你好,你说的那个test数据集是在我们软件里创建的吧?

还有数据类型是否一致,因为线数据只能追加线数据,面只能追加面,必须数据类型一致。或者你重新创建一个CAD类型的test数据集,再往里面追加shp数据
3月 4, 2020 用户: 邬袁凯 名扬四海 (2,432 分)
这个我是确认过了的,确定是追加同一类型的数据,而且坐标系也是重设的,我是在Arcgis里面查看确认了矢量的坐标系之后,然后再在 idesktop里面更改的对应的数据集的坐标系,确认一致,但是还是导入不进去,感觉追加导入的方法不是这个方法,这个DataImport的导入方法好像只是新增导入,就是你用这个方法导入的话他总是会给你新增一个表,然后把数据导进去。
你可以用datasetvector.Apeend这个接口试下吧,如果test数据集是在桌面软件里创的表那应该是没问题的
...