SuperMap iObjects .NET 11i二次开发(九)——小白进阶之数据交换之导入矢量数据操作

前言

上一篇博文简单介绍了有关交互式编辑绘制的相关操作,这个部分主要认识下数据交换之导入矢量数据的相关操作。


GIS数据交换的目的是实现不同GIS系统之间的互操作性,使得数据能够在不同环境下流动和共享。通过GIS数据交换,用户可以将地理空间数据从一个GIS软件导出到另一个GIS软件,或者将数据从GIS系统中导出到其他应用程序进行进一步处理。

从SuperMap iDesktop帮助文档内可查看到SuperMap支持导入的矢量文件格式,如下图所示,本博文以导入Shp数据为例。

一、有关常用类说明

DataImport类

导入数据类,通过该类可以将外部数据(文件型)导入到SuperMap的格式。

ImportSettingShp类

ArcView Shape 文件的导入的参数设置类。继承自 ImportSetting 类。

二、有关常用方法及属性说明

DataImport.ImportSettings.Add()

获取或设置导入设置集合,通过该方法可以完成多个导入任务的设置。

DataImport.Run()

执行导入数据集的操作,返回导入结果 ImportResult

ImportResult.SucceedSettings

获取导入成功的任务的 ImportSetting 集合。

三、界面设计

此处仅添加菜单栏下的功能点,由于在原有基础上已经设置过打开文件的弹出窗口控件,此处不再设置。拖拽OpenFileDialog控件部分可跳转以下博文进行查看:

SuperMap iObjects .NET 11i二次开发(三)——小白进阶之有关文件型工作空间操作icon-default.png?t=N7T8https://blog.csdn.net/Adoudoudou_/article/details/135340741?spm=1001.2014.3001.5502

四、功能实现

需要确保程序已添加对程序集SuperMap.Data.Conversion.dll的引用。

(1)导入矢量数据

 private void OpenShpData_Click(object sender, EventArgs e)
 {
     //判断当前工作空间是否有打开的数据源
     if(D_workspace.Datasources.Count == 0)
     {
         MessageBox.Show("请打开一个数据源");
         return;
     }
     Datasource datasource = D_workspace.Datasources[0];
     //获取一个数据源中未被使用的数据集的名称
     string strDsName = datasource.Datasets.GetAvailableDatasetName("");

     this.openFileDialog1.Title = "Import Shapefile";
     this.openFileDialog1.Filter = "Shape file data(.shp)|*.shp";
     this.openFileDialog1.FileName = "";

     if (openFileDialog1.ShowDialog() == DialogResult.OK)
     {
         DataImport dataImport = new DataImport();
         //设置导入信息
         ImportSettingSHP importSettingSHP = new ImportSettingSHP();
         importSettingSHP.SourceFilePath = this.openFileDialog1.FileName;
         importSettingSHP.TargetDatasource = datasource;
         importSettingSHP.TargetDatasetName = strDsName;
         dataImport.ImportSettings.Add(importSettingSHP);
         //执行导入矢量数据
         ImportResult importResult = dataImport.Run();

         if (importResult.SucceedSettings.Length>0)
         {
             MessageBox.Show("导入矢量数据成功!", "提示");
             //将导入的矢量数据在地图全幅显示
             Dataset datasetshp = D_workspace.Datasources[0].Datasets[strDsName];
             D_mapControl.Map.Layers.Add(datasetshp, true);
             D_mapControl.Map.ViewEntire();
             D_mapControl.Refresh();
             D_layersControl.Refresh();
             
         }
     }
 }

(2)关联图层管理器控件和地图控件

由于在原有基础上,未将图层管理器控件和地图控件关联,会导致以上代码在添加新数据集到地图并全幅显示时,图层管理器没有任何变化。原有关联控件设置可跳转以下博文进行查看:

SuperMap iObjects .NET 11i二次开发(二)——小白进阶之控件关联与释放资源icon-default.png?t=N7T8https://blog.csdn.net/Adoudoudou_/article/details/135122360?spm=1001.2014.3001.5502因此在原有代码再添加如下代码进行图层管理器控件和地图控件的关联,使得添加新数据集到地图时,图层管理器也会随之更新。

private void Form1_Load(object sender, EventArgs e)
{
    //工作空间和控件联动
    D_workspaceControl.WorkspaceTree.Workspace = D_workspace;
    D_mapControl.Map.Workspace = D_workspace;
    //图层管理器和地图控件关联
    D_layersControl.Map = D_mapControl.Map;
    D_sceneControl.Scene.Workspace = D_workspace;
}

五、运行结果


总结

以上就是有关于SuperMap iObjects 11i .NET数据交换之导入矢量数据的相关操作的一些过程记录,我们下篇博文再见!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值