ホームページ  >  記事  >  バックエンド開発  >  Python は、緯度と経度の点座標を使用して DEM で標高情報を読み取るように実装します (詳細な例)

Python は、緯度と経度の点座標を使用して DEM で標高情報を読み取るように実装します (詳細な例)

WBOY
WBOY転載
2022-02-24 17:35:055134ブラウズ

この記事では、10 行のコードを使用して、緯度と経度の点座標を使用して DEM の標高情報を読み取る方法に関する関連問題を紹介します。主なアイデアは、GDAL を使用して DEM データを読み取り、最初のバンドを取得し、それを配列として取得し、経度と緯度から行番号と列番号を計算し、行番号と列番号を使用して標高情報を読み取ります。

Python は、緯度と経度の点座標を使用して DEM で標高情報を読み取るように実装します (詳細な例)

推奨学習: mysql ビデオ チュートリアル

実装条件: 1. 使用するライブラリは GDAL;2.DEMData;

1. アイデア

(1) GDAL を使用して DEM データを読み取り、まず最初のバンドを取得して配列として読み取ります。使用する関数は次のとおりです:

ds.GetRasterBand(1)和band.ReadAsArray();

(2) 経度と緯度に従って行番号と列番号を計算します;

(3) 行と列に従って標高情報を直接読み取ることができます番号。

2. コード

コードとコメントは次のとおりです:

from osgeo import gdal

gdal.UseExceptions()
#以湖北DEM数据为例
ds = gdal.Open('./data/hubei_wgs84.tif')

band = ds.GetRasterBand(1)
elevation = band.ReadAsArray()
nrows, ncols = elevation.shape

x0, dx, dxdy, y0, dydx, dy = ds.GetGeoTransform()
#指定经纬度点坐标
latitude,longitude=31.15,111.24
#根据经纬度计算行列号,dx=dy为分辨率,不相等的时候(y0-latitude)/dx改为(y0-latitude)/-dy
new_ncols,new_nrows=int((y0-latitude)/dx),int((longitude-x0)/dx)

#根据行列号读取并打印输出指定坐标点高程
print(elevation[new_ncols][new_nrows])

3. 結果は

932、つまり標高は 932m です。

4. arcgis の検証

ツールバーの右端にある [XY に移動] ツールを使用します

緯度と経度の座標を入力しますポイントを見つけるには:

マップにポイントを追加します

# ID を使用しますポイントの属性を表示するには:

結果は一貫しています。

推奨学習:

mysql ビデオ チュートリアル

以上がPython は、緯度と経度の点座標を使用して DEM で標高情報を読み取るように実装します (詳細な例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。