一般的各种遥感影像都是采用某种地理或投影坐标的栅格影像,对于从事影像相关工作的人来说,得到现有影像的覆盖范围是确定研究内容,购买遥感影像的基础。怎么得到这个覆盖范围呢?当然我们可以在ArcGIS或ERDAS中打开,就可以看到影像范围了。不过当影像数量达到TB级时,这种方式显然是行不通的。这里我们就需要通过一定的办法将每幅影像的范围以矢量图形的方式表示出来。

一般来说,如果需要的精度不高,可以采用AO获得影像的四至范围Extent,对于TB级别的数据,这样处理速度很快,相对来说是一种比较简便的处理方法。

                IWorkspaceFactory rWSF = new RasterWorkspaceFactoryClass();
IRasterWorkspace rWS = (IRasterWorkspace)rWSF.OpenFromFile(folderName, );
rasterDataset = rWS.OpenRasterDataset(datasetName);
nLayer.CreateFromDataset(rasterDataset);
IEnvelope rExtent = nLayer.VisibleExtent as IEnvelope;

接下来就很容易将extent转化为矢量图形。

这里还有一个问题,我们知道影像在很多时候不是规则的,边界并不是正方向的,经过正射纠正的影像一般都是平行四边形,这样得到的影像范围矢量表示势必会大于原本的影像范围。

我们来看Arcobject中的解决方案。

ESRI.ArcGIS.DataSourcesRaster.RasterDomainExtractor就是用来解决这个问题的。这个用起来方法很简单。

                IRasterDomainExtractor nRasterDomainExtractor = new RasterDomainExtractorClass();
IPolygon nPolygon=nRasterDomainExtractor.ExtractDomain(nRaster,true);

这段代码在只有一个波段的全色影像上运行没问题,在我这是不能处理多波段的影像的。不过,一般来说,多波段影像

各个波段的范围都是一样的,所以可以取其中任意一个波段处理。

                IRasterBandCollection rasterBandCollection=(IRasterBandCollection)nLayer.Raster;
if (rasterBandCollection.Count<)
{
return;
}
else if (rasterBandCollection.Count==)
{
nRaster1 = nLayer.Raster;
}
else
{
IRasterBand rasterBand = rasterBandCollection.Item();
IRasterDataset nRasterDataset = (rasterBand as IDataset) as IRasterDataset;
nLayer.CreateFromDataset(nRasterDataset);
nRaster1 = nLayer.Raster;
}
IRasterDomainExtractor nRasterDomainExtractor = new RasterDomainExtractorClass();

这样就可以算是大功告成了。

Nanttery

2014-03-27 18:32

Arcobject获得栅格影像的边界的更多相关文章

  1. Python中使用面状矢量裁剪栅格影像,并依据Value值更改矢量属性

    本文整体思路:在Python中使用Geopandas库,依次读取shp文件的每一个面状要素,获取其空间边界信息并裁剪对应的栅格影像,计算所裁剪影像Value值的众数,将其设置为对应面状要素的NewTY ...

  2. ArcGIS 按多边形区域统计栅格影像的一些信息

    在使用ArcGIS对栅格影像进行分析时,难免要进行一些统计类的分析.如统计框选区域的像素的个数,面积.均值等内容. 下面给出使用“Spatial Analyst Tools -- > Zonal ...

  3. 使用Python以优雅的方式实现根据shp数据对栅格影像进行切割

    目录 前言 涉及到的技术 优雅切割 总结 一.前言        前面一篇文章(使用Python实现子区域数据分类统计)讲述了通过geopandas库实现对子区域数据的分类统计,说白了也就是如何根据一 ...

  4. ArcGIS栅格影像怎么从WGS84地理坐标转成Xian80投影坐标

    事情是这样的,我下载了一个WGS84坐标系的影像图,需要加载到Xian80投影坐标系下,所以需要对影像图进行坐标系的转换 1.因为涉及到两个参考椭球的问题,首先需要计算七参数,如何计算七参数,请参考我 ...

  5. ArcGIS提取影像边界

    基于ArcGIS有多重办法可以提取影像边界,比如常用的有以下几种方式: a.System Toolboxes --> 3D Analyst Tools --> Conversion --& ...

  6. World Wind Java开发之七——读取本地栅格文件(影像+高程)构建三维场景(转)

    http://blog.csdn.net/giser_whu/article/details/41679515 首先,看下本篇博客要达到的效果图: 下面逐步分析如何加载影像及高程文件. 1.World ...

  7. Arcgis栅格时序地图制作---时间轴动态展示多期影像

    转自原文 Arcgis栅格时序地图制作---时间轴动态展示多期影像 效果如何???满意您go on,不满意咱 say goodbye··· 题外话: 为了在这里动态展示下制作结果,也是费了老劲了,转换 ...

  8. ARCGIS多种影像裁剪

    在互联网上下载的遥感影像都进行过分幅处理,下载下来的影像多是规则的四方形,而在进行遥感影像研究时,多是针对特定区域来进行,比如研究北京市的遥感影像,不在北京市范围内的影像对于研究者就没有利用意义,如果 ...

  9. 使用Python脚本批量裁切栅格

    对栅格的裁切,我们通常使用裁切(数据管理-栅格-栅格处理)或按掩膜提取(空间分析-提取分析)来裁切,裁切的矢量要素通常是一个要素图层或Shape文件.如果要进行批量处理,可以使用ToolBox中的批量 ...

随机推荐

  1. 深入解析Close()和Dispose()的区别

    很多人都认为Close()方法内部会调用Dispose()方法,所以并没有本质的区别!实际上这个看法不是很准确,对有 些类来说,的确Close()和Dispose()没有本质区别,但是对有些类来说并非 ...

  2. centos 安装搜狗

    原文:https://www.cnblogs.com/blueherb/p/9521827.html 1.通过centos的搜狐到百度下载linux fo sougou 注:找到下载路径(定义为A) ...

  3. web 服务器安全防范

    apache 关闭目录 配置文件:安装目录/Apache/conf/httpd.conf <Directory /> #默认就会把/ 的目录暴漏出来:关闭方法: Options -Inde ...

  4. Android配置横屏资源与Activity生命周期

    屏幕旋转会改变设备配置(device configguration).设备设置的特征有:屏幕方向.屏幕像素密度.屏幕尺寸.键盘类型.底座模式以及语言等.    当屏幕发现旋转时(设备配置更改),And ...

  5. ASP.NET 设计模式分为三种类型

    设计模式分为三种类型,共23类.  一.创建型模式:单例模式.抽象工厂模式.建造者模式.工厂模式.原型模式.      二.结构型模式:适配器模式.桥接模式.装饰模式.组合模式.外观模式.享元模式.代 ...

  6. Scala 中 for 循环 和 generator 的使用例子

    这个例子是,从每个list中,找到age最大的那个node. class Node(vName: String, vAge: Int) { // Entity class var name: Stri ...

  7. B. Divisors of Two Integers

    B. Divisors of Two Integers time limit per test 1 second memory limit per test 256 megabytes input s ...

  8. oracle 笔记---(二)

    查询ASM实例包含的内存组件 SQL> select component,current_size from v$memory_dynamic_components 2 ; COMPONENT ...

  9. mysql - VARCHAR与VHAR的区别

    一, 基本介绍 char 和 varchar 两类型类似, 用来存储字符串,不同之处来自于他们的保存和检索的差别, char 属于固定的长度字符类型, 而varchar 属于可变长度的字符类型 值 C ...

  10. linux命令行下的操作的快捷键

    历史相关命令 命令                   含义!!                      执行上一条命令!num                 执行历史命令中的第num条命令!-n ...