とらりもんHOME  Index  Search  Changes  Login

Pythonで衛星データをいじる

2016/07/25 Jin Katagi 作成

Rasterioを使い場合

インストール

sudo pip3 install rasterio

GDALライブラリを使う場合

基本はgdalライブラリでデータを読み込み、numpyの配列に変換して処理する。

参考になるページ

tifの読み込み

画像は(height, width, band)の順に読み込まれる。

import numpy as np
from osgeo import gdal
from osgeo import gdal_array

特定のバンドのみ読み込む

dataset1 = gdal.Open("test.tif", gdal.GA_ReadOnly)
# numpyの配列に変換
band1 = np.array(dataset1.GetRasterBand(1).ReadAsArray())

すべてのバンドを読み込む

dataset1 = gdal.Open("test.tif", gdal.GA_ReadOnly)
bands = dataset1.RasterCount
rows = dataset1.RasterYSize
cols = dataset1.RasterXSize
# numpyの配列に変換
band_all =  np.array([dataset1.GetRasterBand(band + 1).ReadAsArray() for band in range(bands)])

RGB合成

tifファイル一つに対して一つのバンドのみ入っている場合、numpy配列で読み込むと二次元配列になってしまう。(ex: (x行、y列))

その場合、以下のように新たな軸をnp.newaxisで指定して、np.c_で合成する。

import numpy as np
band_rgb = np.c_[band_red[:,:,np.newaxis], band_green[:,:,np.newaxis], band_blue[:,:,np.newaxis]]
band_rgb.shape # => (x,y,3)
Last modified:2017/10/16 17:49:43
Keyword(s):
References:[とらりもんHOME] [memo_Katagi]