C# ArcGISEngine通過經緯度坐标擷取像元值
通過某個地圖中的點的經緯度坐标,擷取該坐标對應的删格資料中的像元值
private double GetCellValue()
{
//從資料庫擷取該站點的經緯度坐标
dsPoint = stationBLL.GetAltBySID(Convert.ToInt32(StationIDList[i].ToString()));
IPoint point = new PointClass();
point.X = Convert.ToDouble(dsPoint.Tables[0].Rows[0]["LON"].ToString());//X經度
point.Y = Convert.ToDouble(dsPoint.Tables[0].Rows[0]["LAT"].ToString());//Y緯度
//加載本地删格資料
IRaster2 pRaster_AWC = RasterHelper.GetRaster2(strAWCPath);
//擷取行列位置值
int column = pRaster2.ToPixelColumn(point.X);//像元的列号 在x軸上
int row = pRaster2.ToPixelRow(point.Y); //像元的行号 在y軸上
double cellValue=0;
//1.特殊情況:如果點行列值為負值或者大于總的行列值,就為無效值
if (column < 0 || row < 0)//column>ndtgCol || row
/// 通過删格檔案完整路徑打開删格Raster2
///
///
删格完整路徑
///
傳回IRaster2的删格
public static IRaster2 GetRaster2(string FilePath)
{
IRaster2 pRaster2=null;
try
{
if (!FilePath.Equals(""))
{
IRasterLayer pRasterLayer = new RasterLayerClass();
//加載本地路徑下的tif檔案
pRasterLayer.CreateFromFilePath(FilePath);
pRaster2 = pRasterLayer.Raster as IRaster2;
//釋放資源
Marshal.ReleaseComObject(pRasterLayer);
}
}
catch (Exception ex)
{
LogHelper.LogError("RasterHelper:通過完整路徑打開删格Raster2異常", ex);
throw;
}
return pRaster2;
}