【内容】

  • 获取影像头文件中的数据
  • 打开指定波段的landsat8数据
  • 计算指定波段的真实大气顶部反射率(landsat8)
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using ESRI.ArcGIS.DataSourcesRaster;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.SpatialAnalyst;namespace PM25Application {class Landsat8Tools {/// <summary>///     获取影像头文件中的数据/// </summary>/// <param name="imgDir">Landsat8的路径</param>/// <param name="regex_str">正则规则</param>///     【举例】"DATE_ACQUIRED = (.*)"/// <returns></returns>public static string GetStringFromMetadataFile_landsat8 (string imgDir, string regex_str) {// 获得头文件内容var files = Directory.GetFiles (imgDir, "*MTL.txt");if (files.Length > 1) { //出错return null;}string file_str = File.ReadAllText (files[0]);// 获得日期Match match = null;match = Regex.Match (file_str, regex_str);if (match.Success == true) {return match.Groups[1].Value;}return null;}/// <summary>///     打开landsat8的指定波段/// </summary>/// <param name="landsat_dir"></param>/// <param name="band"></param>/// <returns></returns>public static IGeoDataset OpenRasterByBand_landsat8 (string landsat_dir, int band) {var files = Directory.GetFiles (landsat_dir, "*B" + band + ".TIF");if (files.Length > 1) {return null;}string fp = files[0]; //文件路径return Tools.OpenRaster (fp);}/// <summary>///     计算指定波段的真实大气顶部反射率(landsat8)/// </summary>///     Debug OK/// <param name="landsat_dir">landsat8数据所在文件夹</param>/// <param name="band">指定波段</param>/// <returns>计算结果IGeoDataset</returns>public static IGeoDataset CalTOAReality_landsat8 (string landsat_dir, int band) {string REFLECTANCE_MULT_BAND_rule = string.Concat ("REFLECTANCE_MULT_BAND_", band, " = (.*)");string SUN_ELEVATION_rule = "SUN_ELEVATION = (.*)";// 从头文件中读取REFLECTANCE_MULT_BANDstring REFLECTANCE_MULT_BAND_str = Landsat8Tools.GetStringFromMetadataFile_landsat8 (landsat_dir, REFLECTANCE_MULT_BAND_rule);Decimal REFLECTANCE_MULT_BAND;Decimal.TryParse (REFLECTANCE_MULT_BAND_str, System.Globalization.NumberStyles.Any, null, out REFLECTANCE_MULT_BAND);// 从头文件中读取SUM_ELEVATIONstring SUN_ELEVATION_str = Landsat8Tools.GetStringFromMetadataFile_landsat8 (landsat_dir, SUN_ELEVATION_rule);double SUN_ELEVATION = System.Convert.ToDouble (SUN_ELEVATION_str);SUN_ELEVATION = SUN_ELEVATION * Math.PI / 180; //转换为弧度// 读取指定波段IGeoDataset pGD_band = Landsat8Tools.OpenRasterByBand_landsat8 (landsat_dir, band);// 栅格计算器:计算真实TOAzIMapAlgebraOp pMapAlgebraOp = new RasterMapAlgebraOpClass ();pMapAlgebraOp.BindRaster (pGD_band, "band");string formula = string.Concat ("( [band] * ", REFLECTANCE_MULT_BAND, " - 0.1 ) / Sin( ", SUN_ELEVATION, " )");formula = string.Concat ("Con( [band] == 0, 0, ", formula, " )"); //去掉背景值IGeoDataset tmp = pMapAlgebraOp.Execute (formula);// 小于等于0 --> 0 ; 超出1的为1IMapAlgebraOp pMapAlgebraOp2 = new RasterMapAlgebraOpClass ();pMapAlgebraOp2.BindRaster (tmp, "band");string formula2 = "Con( [band] <= 0 , 0 , Con( [band] >= 1 , 1, [band] ) )";IGeoDataset pGD_TOAr = pMapAlgebraOp2.Execute (formula2);return pGD_TOAr;}}
}

[AE] ArcGIS Engine处理Landsat8数据相关推荐

  1. [AE] ArcGIS Engine - 基础知识 - AE|AO|GIS开发模式

    文章目录 GIS开发模式 组件式GIS AO与AE 区别 开发环境 功能 联系 AE GIS开发模式 独立开发模式 自己独立开发 宿主型开发模式 基于某个GIS平台或GIS工具软件,用该平台的自带语言 ...

  2. 制作AE(ArcGIS Engine 打包)开发的应用程序的安装包

    利用InstallShield制作AE(ArcGIS Engine 打包)开发的应用程序的安装包 以下是个人学习的一些心得,由于本人对InstallShield也是刚刚接触,可能有些地方不是那么合理, ...

  3. 利用InstallShield制作AE(ArcGIS Engine 打包)开发的应用程序的安装包

    原文:http://blog.csdn.net/swfcsunboy/article/details/2314249 利用InstallShield制作AE(ArcGIS Engine 打包)开发的应 ...

  4. [AE] ArcGIS Engine - 属性查询与空间查询 - QueryFilter|SpatialFilter

    文章目录 QueryFilter属性查询 SpatialFilter空间查询 Cursor游标 QueryFilter属性查询 得到将要查询的图层 IFeatureLayer pFeatureLaye ...

  5. ArcGIS Engine学习系列1 AE基础介绍

    1.ArcGIS软件体系结构 2.ArcObjects ArcObjects是ESRI公司ArcGIS系列产品的开发平台,它是基于Microsoft COM技术(基于微软COM技术,所以只能在这个环境 ...

  6. 【Arcgis Engine开发】AE开发把影像或者矢量加载到图层

    AE开发把影像或者加载到图层 1.创建一个类工厂 2.使用类工厂创建一个要使用的工作区 3.使用工作区打开并得到图层的dataset 4.把dataset装入到新建的图层实例 5.把图层加载到MapC ...

  7. AE(ArcGIS Engine)的安装与配置(附加ArcGIS安装及所需安装包)

    本文使用的ArcGIS 是10.2版本,因此安装的AE也是10.2版本,与此配套的安装了VS(Visual Studio) 2012.事实上,在安装了ArcGIS后,相应的便确定了VS与AE的版本,A ...

  8. Arcgis Engine二次开发(一)AE开发总览

    参加工作两年多,打算将两年来的AE(Arcgis Engine,本系列后面统一简称AE)开发经验分享出来.打算把AE的开发做成一个系列,原因主要有两个:一个是AE开发网上资源比较少,让从事开发的码农接 ...

  9. ArcGIS Engine 中的多线程使用

    转自原文ArcGIS Engine 中的多线程使用 一直都想写写AE中多线程的使用,但一直苦于没有时间,终于在中秋假期闲了下来.呵呵,闲话不说了,进入正题! 大家都了解到ArcGIS中处理大数据量时速 ...

  10. 【ArcGIS Engine二次开发】入门基础(2):ArcGIS开发方式(VBA、DLL、Add-in、Engine)对比

    文章目录 2.1 使用VBA进行桌面软件开发 2.1.1 VBA开发方式 2.1.1 VBA代码的安全性 2.2 使用DLL进行桌面软件开发 2.2.1 DLL开发方式 2.2.2 DLL功能的应用部 ...

最新文章

  1. 服务发现与负载均衡 dubbo zk原理
  2. WCF之服务实例管理
  3. 前Oracle首席工程师怒喷:MySQL 是“超烂的数据库”,建议考虑 PostgreSQL
  4. OpenCV cv::reduce用法的实例(附完整代码)
  5. 强化学习核心文章一百篇
  6. 初始化方法-使用参数设置属性初始值
  7. java 的23种设计模式 之单身狗和隔壁老王的故事
  8. 用NGINX做负载均衡,keepalived高可用
  9. python 学习笔记 - for循环: 字典遍历, 分别打印key, value, key:value
  10. 以太网的分层架构_读《企业应用架构模式》记录-分层
  11. PS学习笔记-----提示暂存盘满了怎么办???
  12. android 常见面试题以及答案
  13. iOS-设置导航栏颜色(iOS8+)
  14. python语言程序代码保存在_《计算机二级Python语言程序设计考试》第5章:函数和代码复用...
  15. 解答诸葛亮反思的七条内容
  16. SQL注入测试神器sqlmap
  17. 弘辽科技:抖音小店差评如何补救?
  18. 年份计算器-python
  19. C++:char数组初始化
  20. Java创建对象的四种方法

热门文章

  1. 小学计算机信息论文题目,小学计算机论文
  2. 绿坝捅乱子,全球看笑话
  3. 第八章--注册码是怎样炼成的
  4. Spring AOP aspectjweaver.jar与aopalliance-1.0.jar 下载地址
  5. iOS 让CoreData更简单些
  6. Resource Hacker(可以修改.exe文件)
  7. 中安网培***入门教程
  8. fabpot php cs fixer,使用 PHP-CS-Fixer 自动规范化你的 PHP 代码
  9. DNS Server
  10. 管家婆 经营历程 Date exceeds maximum of 19-12-31 报错解决补丁包