[AE] ArcGIS Engine处理Landsat8数据
【内容】
- 获取影像头文件中的数据
- 打开指定波段的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数据相关推荐
- [AE] ArcGIS Engine - 基础知识 - AE|AO|GIS开发模式
文章目录 GIS开发模式 组件式GIS AO与AE 区别 开发环境 功能 联系 AE GIS开发模式 独立开发模式 自己独立开发 宿主型开发模式 基于某个GIS平台或GIS工具软件,用该平台的自带语言 ...
- 制作AE(ArcGIS Engine 打包)开发的应用程序的安装包
利用InstallShield制作AE(ArcGIS Engine 打包)开发的应用程序的安装包 以下是个人学习的一些心得,由于本人对InstallShield也是刚刚接触,可能有些地方不是那么合理, ...
- 利用InstallShield制作AE(ArcGIS Engine 打包)开发的应用程序的安装包
原文:http://blog.csdn.net/swfcsunboy/article/details/2314249 利用InstallShield制作AE(ArcGIS Engine 打包)开发的应 ...
- [AE] ArcGIS Engine - 属性查询与空间查询 - QueryFilter|SpatialFilter
文章目录 QueryFilter属性查询 SpatialFilter空间查询 Cursor游标 QueryFilter属性查询 得到将要查询的图层 IFeatureLayer pFeatureLaye ...
- ArcGIS Engine学习系列1 AE基础介绍
1.ArcGIS软件体系结构 2.ArcObjects ArcObjects是ESRI公司ArcGIS系列产品的开发平台,它是基于Microsoft COM技术(基于微软COM技术,所以只能在这个环境 ...
- 【Arcgis Engine开发】AE开发把影像或者矢量加载到图层
AE开发把影像或者加载到图层 1.创建一个类工厂 2.使用类工厂创建一个要使用的工作区 3.使用工作区打开并得到图层的dataset 4.把dataset装入到新建的图层实例 5.把图层加载到MapC ...
- AE(ArcGIS Engine)的安装与配置(附加ArcGIS安装及所需安装包)
本文使用的ArcGIS 是10.2版本,因此安装的AE也是10.2版本,与此配套的安装了VS(Visual Studio) 2012.事实上,在安装了ArcGIS后,相应的便确定了VS与AE的版本,A ...
- Arcgis Engine二次开发(一)AE开发总览
参加工作两年多,打算将两年来的AE(Arcgis Engine,本系列后面统一简称AE)开发经验分享出来.打算把AE的开发做成一个系列,原因主要有两个:一个是AE开发网上资源比较少,让从事开发的码农接 ...
- ArcGIS Engine 中的多线程使用
转自原文ArcGIS Engine 中的多线程使用 一直都想写写AE中多线程的使用,但一直苦于没有时间,终于在中秋假期闲了下来.呵呵,闲话不说了,进入正题! 大家都了解到ArcGIS中处理大数据量时速 ...
- 【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功能的应用部 ...
最新文章
- 服务发现与负载均衡 dubbo zk原理
- WCF之服务实例管理
- 前Oracle首席工程师怒喷:MySQL 是“超烂的数据库”,建议考虑 PostgreSQL
- OpenCV cv::reduce用法的实例(附完整代码)
- 强化学习核心文章一百篇
- 初始化方法-使用参数设置属性初始值
- java 的23种设计模式 之单身狗和隔壁老王的故事
- 用NGINX做负载均衡,keepalived高可用
- python 学习笔记 - for循环: 字典遍历, 分别打印key, value, key:value
- 以太网的分层架构_读《企业应用架构模式》记录-分层
- PS学习笔记-----提示暂存盘满了怎么办???
- android 常见面试题以及答案
- iOS-设置导航栏颜色(iOS8+)
- python语言程序代码保存在_《计算机二级Python语言程序设计考试》第5章:函数和代码复用...
- 解答诸葛亮反思的七条内容
- SQL注入测试神器sqlmap
- 弘辽科技:抖音小店差评如何补救?
- 年份计算器-python
- C++:char数组初始化
- Java创建对象的四种方法
热门文章
- 小学计算机信息论文题目,小学计算机论文
- 绿坝捅乱子,全球看笑话
- 第八章--注册码是怎样炼成的
- Spring AOP aspectjweaver.jar与aopalliance-1.0.jar 下载地址
- iOS 让CoreData更简单些
- Resource Hacker(可以修改.exe文件)
- 中安网培***入门教程
- fabpot php cs fixer,使用 PHP-CS-Fixer 自动规范化你的 PHP 代码
- DNS Server
- 管家婆 经营历程 Date exceeds maximum of 19-12-31 报错解决补丁包