1.以下是原始Modis数据, MOD11A2
2.在ArcMap中可以直接打开提取指定层数据
3.现在我们要在程序中提取,代码如下
/// <summary>
/// 提取Modis指定层数据
/// </summary>
/// <param name="ModisFilePath">输入的Modsi数据路径</param>
/// <param name="OutFilePath">提取后的输出路径</param>
public void DataGetTif_DayLST(string ModisFilePath, string OutFilePath)
{
try
{
//加载Modis原始数据文件
DirectoryInfo HdfDir = new DirectoryInfo(ModisFilePath);
FileInfo[] HdfInfors = HdfDir.GetFiles("*.hdf");
//定义gp
ESRI.ArcGIS.Geoprocessor.Geoprocessor gp1 = new ESRI.ArcGIS.Geoprocessor.Geoprocessor();
gp1.OverwriteOutput = true;
//提取白天LST第0层数据
foreach (var file in HdfInfors)
{
//提取后的文件名称
string OutFileName = file.Name.Remove(file.Name.LastIndexOf("."));
//提取后输出完整路径
string OutFile = OutFilePath + "\\" + OutFileName + ".DayLST.tif";
//执行提取
ESRI.ArcGIS.DataManagementTools.ExtractSubDataset es = new ESRI.ArcGIS.DataManagementTools.ExtractSubDataset();
es.in_raster = file.FullName; //输入数据
es.out_raster = OutFile; //输出删格
es.subdataset_index = 0;//这里的数字就是提取的哪一层
gp1.Execute(es, null); //执行操作
}
}
catch(Exception ex)
{
LogHelper.LogError("Modis数据预处理,提取Modis数据异常", ex);
thorw;
}
}
4.提取后的结果
提取其他层的方法一样,只需更改 es.subdataset_index = 0;即可,数字表示哪一层数据