FAQ
ラスターのピクセル値を識別する方法

ナレッジ番号:5328 | 登録日:2023/07/26 | 更新日:2024/11/21

概要

ラスター オブジェクトのある地点のピクセル値を取得するためのサンプル コードをご紹介します。

ArcMap で、[ArcToolbox] → [データ管理 ツール] → [ラスター] → [ラスター プロパティ] → [セル値の取得] ツールを使用して、指定された位置のピクセル値を X, Y 座標を使用して取得することもできます。

Image

サンプル コード

指定された位置のピクセル値を取得します。

サンプル コードでは、ピクセル空間において与えられている行(row)と列(column)の値を、マップに追加してあるポイント フィーチャの X,Y 座標を使用し取得します。

IMxDocument pMxDocument = ArcMap.Document;
IMap pMap = pMxDocument.FocusMap;

//ポイント フィーチャを含むレイヤーの取得
ILayer pLayer1 = pMap.get_Layer(0);
IFeatureLayer pFeatureLayer = (IFeatureLayer)pLayer1;

//ポイント フィーチャを取得
IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass;
IFeature pFeature = pFeatureClass.GetFeature(0);
IGeometry pGeometry = pFeature.Shape;
IPoint pPoint = (IPoint)pGeometry;

//ポイントの X,Y 座標値を取得
double xMap = pPoint.X;
double yMap = pPoint.Y;

//ラスター レイヤーの取得
ILayer pLayer2 = pMap.get_Layer(1);
IRasterLayer pRasterLayer = (IRasterLayer)pLayer2;

//ラスターの取得
IRaster pRaster = pRasterLayer.Raster;

//ピクセルの行と列の値をポイントの X,Y 座標値を使用して取得
IRaster2 pRaster2 = (IRaster2)pRaster;
int column = pRaster2.ToPixelColumn(xMap);
int row = pRaster2.ToPixelRow(yMap);

//ピクセル値の取得
double pixelValue =  Convert.ToDouble(pRaster2.GetPixelValue(1, column, row));

//メッセージボックスに出力
MessageBox.Show(pixelValue.ToString());
Dim pMxDocument As IMxDocument = My.ArcMap.Document
Dim pMap As IMap = pMxDocument.FocusMap

'ポイント フィーチャを含むレイヤーの取得
Dim pLayer1 As ILayer = pMap.Layer(0)
Dim pFeatureLayer As IFeatureLayer = CType(pLayer1, IFeatureLayer)

'ポイント フィーチャを取得
Dim pFeatureClass As IFeatureClass = pFeatureLayer.FeatureClass
Dim pFeature As IFeature = pFeatureClass.GetFeature(0)
Dim pGeometry As IGeometry = pFeature.Shape
Dim pPoint As IPoint = CType(pGeometry, IPoint)

'ポイントの X,Y 座標値を取得
Dim xMap As Double = pPoint.X
Dim yMap As Double = pPoint.Y

'ラスター レイヤーの取得
Dim pLayer2 As ILayer = pMap.Layer(1)
Dim pRasterLayer As IRasterLayer = CType(pLayer2, IRasterLayer)

'ラスターの取得
Dim pRaster As IRaster = pRasterLayer.Raster

'ピクセルの行と列の値をポイントの X,Y 座標値を使用して取得
Dim pRaster2 As IRaster2 = CType(pRaster, IRaster2)
Dim column As Integer = pRaster2.ToPixelColumn(xMap)
Dim row As Integer = pRaster2.ToPixelRow(yMap)

'ピクセル値の取得
Dim pixelValue As Double = CDbl(pRaster2.GetPixelValue(0, column, row))

'メッセージボックスに出力
MessageBox.Show(pixelValue.ToString())

メタデータ

機能

種類

製品