Arcobject获得栅格影像的边界
一般的各种遥感影像都是采用某种地理或投影坐标的栅格影像,对于从事影像相关工作的人来说,得到现有影像的覆盖范围是确定研究内容,购买遥感影像的基础。怎么得到这个覆盖范围呢?当然我们可以在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获得栅格影像的边界的更多相关文章
- Python中使用面状矢量裁剪栅格影像,并依据Value值更改矢量属性
本文整体思路:在Python中使用Geopandas库,依次读取shp文件的每一个面状要素,获取其空间边界信息并裁剪对应的栅格影像,计算所裁剪影像Value值的众数,将其设置为对应面状要素的NewTY ...
- ArcGIS 按多边形区域统计栅格影像的一些信息
在使用ArcGIS对栅格影像进行分析时,难免要进行一些统计类的分析.如统计框选区域的像素的个数,面积.均值等内容. 下面给出使用“Spatial Analyst Tools -- > Zonal ...
- 使用Python以优雅的方式实现根据shp数据对栅格影像进行切割
目录 前言 涉及到的技术 优雅切割 总结 一.前言 前面一篇文章(使用Python实现子区域数据分类统计)讲述了通过geopandas库实现对子区域数据的分类统计,说白了也就是如何根据一 ...
- ArcGIS栅格影像怎么从WGS84地理坐标转成Xian80投影坐标
事情是这样的,我下载了一个WGS84坐标系的影像图,需要加载到Xian80投影坐标系下,所以需要对影像图进行坐标系的转换 1.因为涉及到两个参考椭球的问题,首先需要计算七参数,如何计算七参数,请参考我 ...
- ArcGIS提取影像边界
基于ArcGIS有多重办法可以提取影像边界,比如常用的有以下几种方式: a.System Toolboxes --> 3D Analyst Tools --> Conversion --& ...
- World Wind Java开发之七——读取本地栅格文件(影像+高程)构建三维场景(转)
http://blog.csdn.net/giser_whu/article/details/41679515 首先,看下本篇博客要达到的效果图: 下面逐步分析如何加载影像及高程文件. 1.World ...
- Arcgis栅格时序地图制作---时间轴动态展示多期影像
转自原文 Arcgis栅格时序地图制作---时间轴动态展示多期影像 效果如何???满意您go on,不满意咱 say goodbye··· 题外话: 为了在这里动态展示下制作结果,也是费了老劲了,转换 ...
- ARCGIS多种影像裁剪
在互联网上下载的遥感影像都进行过分幅处理,下载下来的影像多是规则的四方形,而在进行遥感影像研究时,多是针对特定区域来进行,比如研究北京市的遥感影像,不在北京市范围内的影像对于研究者就没有利用意义,如果 ...
- 使用Python脚本批量裁切栅格
对栅格的裁切,我们通常使用裁切(数据管理-栅格-栅格处理)或按掩膜提取(空间分析-提取分析)来裁切,裁切的矢量要素通常是一个要素图层或Shape文件.如果要进行批量处理,可以使用ToolBox中的批量 ...
随机推荐
- 百度地图中使用mouseover事件获取经纬度时无法拿到鼠标所在位置的经纬度。
用百度2.0的话使用mousemove 鼠标在地图区域移动过程中触发此事件.mouseover参数e中没有point参数
- Java ExecutorService 四种线程池
1.new Thread的弊端 new Thead(new Runnable(){ @Override public void run() { // TODO Auto-generated metho ...
- (IDEA) VCS-->Import Into Version Control没有Share Project(Subversion)这个选项。
在VCS-->Import Into Version Control,会发现只有Import Into Subversion选项,并没有Share Project(Subversion)这个选项 ...
- liunx 请求服务器连接数相关设置
一. 文件数限制修改 1.用户级别 修改 nr_open 限制 (用途:能够配置nofile最大数) cat /proc/sys/fs/nr_open Linux 内核 2.6.25 以前,在内核里面 ...
- luogu4931. 情侣?给我烧了!(加强版)(错位排列)
题目链接 https://www.luogu.org/problemnew/show/P4931 题解 以下部分是我最开始的想法. 对于每一个 \(k\),满足恰好有 \(k\) 对情侣和睦的方案数为 ...
- js请求数据的例子
//es6实现方式 const getData = async ()=> { //同步请求数据 const res1=await this.$http.get("https://www ...
- python爬虫之User-Agent用户信息
python爬虫之User-Agent用户信息 爬虫是自动的爬取网站信息,实质上我们也只是一段代码,并不是真正的浏览器用户,加上User-Agent(用户代理,简称UA)信息,只是让我们伪装成一个浏览 ...
- jar 启动关闭
1.后台启动 startTest.sh #设置工程路径project_path=/root/testcd $project_path#nohup后台启动,输出日志到test.lognohup java ...
- Oracle 数据库和Sql Server数据库的区别
Oracle数据库的访问方式,和SqlServer数据库是有很大差别的,下面用图来说明: 1.Sql Server数据库 SqlServer数据库的访问方式,大致是:假设用户通过sa登录SqlServ ...
- cloudermanger安装时需要安装或彻底正确卸载再安装orcal-java7-installer、oracle-java7-set-default(ubuntu14.04版本)(图文详解)
不多说,直接上干货! 安装orcal-java7-installer和oracle-java7-set-default 安装JDK1.7 (所有节点)CDH要求至少是Oracle JDK7,Ubunt ...