C#+arcengine获得栅格数据的像素值(高程)
此文问获得栅格数据的像元值(即高程),有可能部分见解不到位,望大神看到了不惜指教!
/// <summary>
/// 得到高程(通过像素值)
/// </summary>
/// <param name="maskTifPath">Raster路径</param>
private List<int> GetElevation(string maskTifPath, List<IPoint> pointColList)//pointcollist是点集合,可以参照博文获得点集合
{
IRaster raster = GetRaster(maskTifPath);//参见博文获得raster数据
//得到一段光栅带
IRasterBandCollection rasterBandCollection = (IRasterBandCollection)raster;
for (int icount = 0; icount < rasterBandCollection.Count; icount++)//测试数据count为1
{
IRasterBand rasterBand = rasterBandCollection.Item(icount);
//像素
IRawPixels rawPixels = (IRawPixels)rasterBand;
IRasterProps rasterProps = (IRasterProps)rawPixels;
//IGeoDataset geodataset = (IGeoDataset)raster;
//IEnvelope2 envelop = new EnvelopeClass();
//envelop = (IEnvelope2)geodataset.Extent;
//IPoint point = envelop.UpperLeft;
// 像元大致范围
//double blockX = (double)rasterProps.MeanCellSize().X;//网格X间距
//double blockY = (double)rasterProps.MeanCellSize().Y;//网格Y间距
//double blockArea = blockX * blockY;//网格面积
//int columns = rasterProps.Width;//dem列数
//int rows = rasterProps.Height;//dem行数
// 指定像素块大小
IPnt blockSize = new DblPnt();
//blockSize.X = columns;
//blockSize.Y = rows;
blockSize.X = 5;//赋值为多少比较合适?
blockSize.Y = 5;
//blockSize.X = blockX;
//blockSize.Y = blockY;
//指定像素块大小来创建像素快
IPixelBlock3 pixelBlock = (IPixelBlock3)rawPixels.CreatePixelBlock(blockSize);
IPnt blockOrigin = new DblPnt();
IPoint point = new PointClass();
List<int> pixels = new List<int>();
for (int j = 0; j < pointColList.Count; j++)
{
point = pointColList[j];
blockOrigin.X = point.X;
blockOrigin.Y = point.Y;
// 读取指定位置的像素块(blockOrigin为指定位置)
rawPixels.Read(blockOrigin, (IPixelBlock)pixelBlock);
//存储格网dem的二维数组
System.Array pixelData = (System.Array)pixelBlock.get_PixelDataByRef(icount);
// 获得每一个栅格的高程值
for (int col = 0; col < pixelData.GetLength(0); col++)
{
for (int row = 0; row < pixelData.GetLength(1); row++)
{
pixels.Add(Convert.ToInt32(pixelData.GetValue(col, row)));
}
}
return pixels;
}
}
}
本博文参照http://www.docin.com/p-607056135.html,感谢!
C#+arcengine获得栅格数据的像素值(高程)的更多相关文章
- AE IRasterCursor 改变栅格图层像素值
1 public void ChangePixelValue(double xMax, double xMin, double yMax, double yMin,double[,] PixelCha ...
- YUV与像素值之间的关系
一幅彩色图像的基本要素是什么? 说白了,一幅图像包括的基本东西就是二进制数据,其容量大小实质即为二进制数据的多少.一幅1920x1080像素的YUV422的图像,大小是1920X1080X2=4147 ...
- 中文字号VS英文字号(磅)VS像素值
中文字号VS英文字号(磅)VS像素值八号=5磅(5pt) ==(5/72)*96=6.67 =6px 七号=5.5磅 ==(5.5/72)*96=7.3 =7px 小六=6.5磅 ==(6.5/72) ...
- DICOM图像像素值(灰度值)转换为CT值
CT值的单位是Hounsfield,简称为Hu,范围是-1024-3071.用于衡量人体组织对X射线的吸收率,设定水的吸收率为0Hu. 在DICOM图像读取的过程中,我们会发现图像的像素值有可能不是这 ...
- 怎么样用opencv将彩色图片转化成像素值只有0和255的灰度图?
分类: OpenCV [Q1]怎么样用opencv将彩色图片转化成像素值只有0和255的灰度图? 进行灰度化,IplImage* pImg = cvLoadImage( "C:\\1.b ...
- iOS图片的伪裁剪(改变图片的像素值)
0x00 原理 利用一张图片事先画好的图片(以下称为蒙板),盖在要被裁剪的的图片上,然后遍历蒙板上的像素点,修改被裁剪图片对应位置的像素的色值即可得到一些我们想要的不规则图片了(比如人脸) 0x01 ...
- js获取不带单位的像素值
所谓获取不带单位的像素值就是获取比如元素的宽度.高度.字体大小.外边距.内边距等值但是去掉像素单位. 比如:某一个元素的宽度是100px,现在我要获取这个这个值但是不带单位“px”,对于这种问题你会怎 ...
- c#图像处理入门(-bitmap类和图像像素值获取方法)
c#图像处理入门 -bitmap类和图像像素值获取方法 一.Bitmap类 Bitmap对象封装了GDI+中的一个位图,此位图由图形图像及其属性的像素数据组成.因此Bitmap是用于处理由像素数据定义 ...
- Bitmap每个像素值由指定的掩码决定
bBitmap每个像素值由指定的掩码决定 写了一个小工具来转换Bitmap彩色图片的不同位数. 程序的逻辑是拼接: Bitmap文件头 + Bitmap信息头 + Bitmap数据 在RGB888转换 ...
随机推荐
- 原生js实现ajax跨域(兼容IE8,IE9)
html设置meta标签兼容360兼容模式和IE怪异模式 <meta http-equiv="X-UA-Compatible" content="IE=9;IE=8 ...
- BI生态圈常用端口使用配置总结
Hadoop集群的各部分一般都会使用到多个端口,有些是daemon之间进行交互之用,有些是用于RPC访问以及HTTP访问.而随着Hadoop周边组件的增多,完全记不住哪个端口对应哪个应用,特收集记录如 ...
- java iterator(迭代器)
任何容器类,都必须有某种方式可以插入元素并将它们再次取出,毕竟持有事物是容器最基本的工作,对于List,add()插入fang,get()取出,如果从更高层的角度思考,会发现这里有个确定:要用容器,必 ...
- 德卡Z90读卡器读取社保卡,德卡Z90读卡器CSharp示例程序源码
前言,最近学习调用 医保卡业务,使用德卡读卡器,主要就是调用一个DLL,动态库文件. 借着自学的机会把心得体会都记录下来,方便感兴趣的小伙伴学习与讨论. 内容均系原创,欢迎大家转载分享,但转载的同时别 ...
- vue-cli的工程模板与构建工具
vue-cli的工程模板与构建工具 https://www.cnblogs.com/yinn/p/9712480.html 脚手架vue-cli系列二:vue-cli的工程模板与构建工具 上篇文章我们 ...
- P1736 创意吃鱼法 图的DP
题目描述 回到家中的猫猫把三桶鱼全部转移到了她那长方形大池子中,然后开始思考:到底要以何种方法吃鱼呢(猫猫就是这么可爱,吃鱼也要想好吃法 ^_*).她发现,把大池子视为01矩阵(0表示对应位置无鱼,1 ...
- SpringBoot的Controller使用
一: 1.注解 2.control注解 3.效果 4.RespomseBody package com.caojun.springboot; import org.springframework.be ...
- H5判断网络状态
1.判断网络连接的网络状态 if (navigator.onLine) { alert('online')} else { alert('offline');} 想要监听浏览器的联网状态, 使用win ...
- thinkphp中data方法
data方法也是模型类的连贯操作方法之一,用于设置当前要操作的数据对象的值,可能大家不太习惯用这个方法,今天来讲解下如何用好data方法. 用法 写操作 通常情况下我们都是通过create方法或者赋值 ...
- Android中加载事件的方式
Android中加载事件的方式 通过内部类的方式实现 通过外部类的方式实现 通过属性的方式实现 通过自身实现接口的方式实现 通过内部类的方式实现 Demo btn_Login.setOnClickLi ...