(O:)ドライブ → 地図データ → LANDSAT → LANDSAT7ETM+109-36_20010704
可視光 L71109036_03620010704_B10 : 青 (Band1) L71109036_03620010704_B20 : 緑 (Band2) L71109036_03620010704_B30 : 赤 (Band3) L71109036_03620010704_B40 : 近赤外 (Band4) L71109036_03620010704_B50 : 中間赤外 (Band5) L71109036_03620010704_B61 : 熱赤外 (Band6) L71109036_03620010704_B62 : 熱赤外 (Band6) L71109036_03620010704_B70 : 中間赤外 (Band7) → B50とは波長が異なる L71109036_03620010704_B80 : パンクロ (Band8) → 解像度が粗い

(D:)ドライブに作業用フォルダ(Landsat)を作ります. (O:)ドライブのBand1とBand4のデータを作成した作業用フォルダにコピーします. 名前が長いのでそれぞれ「blue」と「nir」に変更します.
cd D:\Landsat
cat > blue.ppm
P5 6937 6316 255
cat blue >> blue.ppm
cat > nir.ppm
P5 6937 6316 255
cat nir >> nir.ppm
dir = "O:/地図データ/LANDSAT/LANDSAT7ETM+109-36_20010704/SCENE001/"
################################################################################
# 必要な場所を切り出す
def cut_site(f,out)
cols = 6937 # LANDSAT画像の一行のピクセル数
x1 = 3100; y1 = 2600 # 切り出したい位置の左上隅
x2 = 3300; y2 = 2850 # 切り出したい位置の右下隅
dx = x2 - x1; dy = y2 - y1
out.puts "P5 #{dx} #{dy} 255"
y2.times do |j|
line = f.read(cols)
out.write(line[x1,dx]) if j >= y1
end
end
out_file = ["B10","B20","B30","B40","B50","B61","B62","B70"]
i = 0
Dir.foreach(dir) do |file|
if /B/ =~ file && /B80/ !~ file
puts file
f = open(dir + file,"rb") # 対象ファイル(バイナリ)をオープン
out = open(out_file[i] + ".ppm","wb")# 出力ファイル(バイナリ)を準備
# 必要な場所を切り出す
cut_site(f,out)
f.close; out.close
i += 1
end
end
![]() Band1(B10) |
![]() Band2(B20) |
![]() Band3(B30) |
![]() Band4(B40) |
![]() Band5(B50) |
![]() Band6(B61) |
![]() Band6(B62) |
![]() Band7(B70) |