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,感谢!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
2017-06-07 数据库中MCO
2016-06-07 地理数据库需要什么类型的维护?
2016-06-07 地理数据库 (Geodatabase) 版本管理
2016-06-07 ArcGIS中国工具应用:固定比例尺固定纸张批量打印
2015-06-07 AE+C#实现:在SceneControl里打开和保存
2011-06-07 [个人心得] 利用ARCGIS生成土地利用转移矩阵,土地变更平衡表
2011-06-07 arcgis 属性中选择FID为奇数的记录