前言
上一篇博文简单介绍了有关数据交换之导入矢量数据的相关操作,这个部分主要认识下数据交换之导入栅格数据的相关操作。
从SuperMap iDesktop帮助文档内可查看到SuperMap支持导入的栅格文件格式,如下图所示,本博文以导入JPG文件和TIFF影像数据为例。
一、有关常用类说明
DataImport类 | 导入数据类,通过该类可以将外部数据(文件型)导入到SuperMap的格式。 |
ImportSettingJPG类 | JPG 文件导入的参数类。该类继承于ImportSetting 类。 |
ImportSettingTIFF类 | Tiff/BigTIFF/GeoTIFF 文件导入的参数设置类。继承自 ImportSetting 类。 |
二、有关常用方法及属性说明
DataImport.ImportSettings.Add() | 获取或设置导入设置集合,通过该方法可以完成多个导入任务的设置。 |
DataImport.Run() | 执行导入数据集的操作,返回导入结果 ImportResult。 |
ImportResult.SucceedSettings | 获取导入成功的任务的 ImportSetting 集合。 |
三、界面设计
添加菜单栏下的功能点,导入矢量数据部分可跳转以下博文进行查看:
四、功能实现
(1)导入TIFF数据
private void OpenTIFF_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 Tif file";
this.openFileDialog1.Filter = "Tif file data(.tif)|*.tif";
this.openFileDialog1.FileName = "";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
DataImport dataImport = new DataImport();
//设置导入信息
ImportSettingTIF importSettingTIF= new ImportSettingTIF();
importSettingTIF.SourceFilePath = this.openFileDialog1.FileName;
importSettingTIF.TargetDatasource = datasource;
importSettingTIF.TargetDatasetName = strDsName;
//将多波段数据导入为一个多波段数据集
importSettingTIF.MultiBandImportMode = MultiBandImportMode.MultiBand;
dataImport.ImportSettings.Add(importSettingTIF);
//执行导入TIF数据
ImportResult importResult = dataImport.Run();
if (importResult.SucceedSettings.Length > 0)
{
MessageBox.Show("导入TIF数据成功!", "提示");
Dataset datasettif = D_workspace.Datasources[0].Datasets[strDsName];
//将导入的TIF数据添加到图层中
D_mapControl.Map.Layers.Add(datasettif, true);
//将导入的TIF数据在地图全幅显示
D_mapControl.Map.ViewEntire();
//刷新地图控件
D_mapControl.Refresh();
//刷新图层管理器控件
D_layersControl.Refresh();
}
}
}
(2)导入JPG数据
private void OpenJPG_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 JPG file";
this.openFileDialog1.Filter = "JPG file data(.jpg)|*.jpg";
this.openFileDialog1.FileName = "";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
DataImport dataImport = new DataImport();
//设置导入信息
ImportSettingJPG importSettingJPG = new ImportSettingJPG();
importSettingJPG.SourceFilePath = this.openFileDialog1.FileName;
importSettingJPG.TargetDatasource = datasource;
importSettingJPG.TargetDatasetName = strDsName;
//将多波段数据导入为一个单波段数据集
importSettingJPG.MultiBandImportMode = MultiBandImportMode.Composite;
dataImport.ImportSettings.Add(importSettingJPG);
//执行导入JPG数据
ImportResult importResult = dataImport.Run();
if (importResult.SucceedSettings.Length > 0)
{
MessageBox.Show("导入JPG数据成功!", "提示");
Dataset datasetjpg = D_workspace.Datasources[0].Datasets[strDsName];
D_mapControl.Map.Layers.Add(datasetjpg, true);
//将导入的JPG数据在地图全幅显示
D_mapControl.Map.ViewEntire();
//刷新地图控件
D_mapControl.Refresh();
//刷新图层管理器控件
D_layersControl.Refresh();
}
}
}
五、运行结果
总结
以上就是有关于SuperMap iObjects 11i .NET数据交换之导入栅格数据的相关操作的一些过程记录,我们下篇博文再见!