この夏のメモ(GRASS奮闘)

リナックスコマンドの覚書

memo

2009-08-30 15:58:50 | GRASS
i.fusion.brovey -l ms1=spring_b4spring_alos2 ms2=spring_b3spring_alos2 ms3=spring_b2spring_alos2 pan=spring_alos_psn_rec2 outputprefix=spring_psn_l --overwrite
r.composite red=spring_psn_l.blue green=spring_psn_l.red blue=spring_psn_l.green levels=32 output=spring_psn --overwrite


i.fusion.brovey -l ms1=autum_b4_autum_rec ms2=autum_b3_autum_rec ms3=autum_b2_autum_rec pan=alos_autum_pan_rec outputprefix=autum_psn_l --overwrite
r.composite red=autum_psn_l.blue green=autum_psn_l.red blue=autum_psn_l.green levels=32 output=autum_psn --overwrite

i.fusion.brovey -s ms1=spring_b4_rec ms2=spring_b3_rec ms3=spring_b2_rec pan=spring_alos_psn_rec2 outputprefix=spring_psn_s --overwrite

g.rename rast=spring_alos_psn_rec2,spring_alos_pan_rec
g.rename rast=spring_b1spring_alos2,spring_b1_rec
g.rename rast=spring_b2spring_alos2,spring_b2_rec
g.rename rast=spring_b3spring_alos2,spring_b3_rec
g.rename rast=spring_b4spring_alos2,spring_b4_rec

r.mapcalc "spring_ndvi2=1.0*(spring_b4_rec - spring_b3_rec)/(spring_b4_rec + spring_b3_rec)"

r.mapcalculator amap=spring_results formula=if(A==1,1,0) outfile=spring_class01 help=- --overwrite
r.mapcalculator amap=spring_results formula=if(A==2,1,0) outfile=spring_class02 help=- --overwrite
r.mapcalculator amap=spring_results formula=if(A==3,1,0) outfile=spring_class03 help=- --overwrite
r.mapcalculator amap=spring_results formula=if(A==4,1,0) outfile=spring_class04 help=- --overwrite
r.mapcalculator amap=spring_results formula=if(A==5,1,0) outfile=spring_class05 help=- --overwrite
r.mapcalculator amap=spring_results formula=if(A==6,1,0) outfile=spring_class06 help=- --overwrite
r.mapcalculator amap=spring_results formula=if(A==7,1,0) outfile=spring_class07 help=- --overwrite
r.mapcalculator amap=spring_results formula=if(A==8,1,0) outfile=spring_class08 help=- --overwrite
r.mapcalculator amap=spring_results formula=if(A==9,1,0) outfile=spring_class09 help=- --overwrite
r.mapcalculator amap=spring_results formula=if(A==10,1,0) outfile=spring_class10 help=- --overwrite
r.mapcalculator amap=spring_results formula=if(A==11,1,0) outfile=spring_class11 help=- --overwrite
r.mapcalculator amap=spring_results formula=if(A==12,1,0) outfile=spring_class12 help=- --overwrite
r.mapcalculator amap=spring_results formula=if(A==13,1,0) outfile=spring_class13 help=- --overwrite
r.mapcalculator amap=spring_results formula=if(A==14,1,0) outfile=spring_class14 help=- --overwrite
r.mapcalculator amap=spring_results formula=if(A==15,1,0) outfile=spring_class15 help=- --overwrite
r.mapcalculator amap=spring_results formula=if(A==16,1,0) outfile=spring_class16 help=- --overwrite
r.mapcalculator amap=spring_results formula=if(A==17,1,0) outfile=spring_class17 help=- --overwrite
r.mapcalculator amap=spring_results formula=if(A==18,1,0) outfile=spring_class18 help=- --overwrite
r.mapcalculator amap=spring_results formula=if(A==19,1,0) outfile=spring_class19 help=- --overwrite
r.mapcalculator amap=spring_results formula=if(A==20,1,0) outfile=spring_class20 help=- --overwrite

r.mapcalculator amap=spring_results formula=if(A=1,1,0) outfile=spring_class01 help=- --overwrite

r.mapcalculator amap=spring_results formula=if(A==1,1,0) outfile=spring_class01 help=- --overwrite
r.mapcalc spring_class01=(if("spring_results"==1,1,isnull()))
r.mapcalc spring_class02=if("spring_results"==2,1,isnull())


r.mapcalc "spring_class01 =if(spring_results ==1,1,null())"
r.mapcalc "spring_class02 =if(spring_results ==2,1,null())"
r.mapcalc "spring_class03 =if(spring_results ==3,1,null())"
r.mapcalc "spring_class04 =if(spring_results ==4,1,null())"
r.mapcalc "spring_class05 =if(spring_results ==5,1,null())"
r.mapcalc "spring_class06 =if(spring_results ==6,1,null())"
r.mapcalc "spring_class07 =if(spring_results ==7,1,null())"
r.mapcalc "spring_class08 =if(spring_results ==8,1,null())"
r.mapcalc "spring_class09 =if(spring_results ==9,1,null())"
r.mapcalc "spring_class10 =if(spring_results ==10,1,null())"
r.mapcalc "spring_class11 =if(spring_results ==11,1,null())"
r.mapcalc "spring_class12 =if(spring_results ==12,1,null())"
r.mapcalc "spring_class13 =if(spring_results ==13,1,null())"
r.mapcalc "spring_class14 =if(spring_results ==14,1,null())"
r.mapcalc "spring_class15 =if(spring_results ==15,1,null())"
r.mapcalc "spring_class16 =if(spring_results ==16,1,null())"
r.mapcalc "spring_class17 =if(spring_results ==17,1,null())"
r.mapcalc "spring_class18 =if(spring_results ==18,1,null())"
r.mapcalc "spring_class19 =if(spring_results ==19,1,null())"
r.mapcalc "spring_class20 =if(spring_results ==20,1,null())"

SHELL tk method

2009-08-19 17:30:08 | SHELL
#DEMから斜面方位を計算
r.slope.aspect elevation=topo@PERMANENT format=degrees prec=float aspect=aspect360 zfactor=1.0
min_slp_allowed=0.0 --overwrite
#
#
#360の方位を16分割にこのとき、割約するルールのファイル必要)
cat aspect_div_rule.txt | r.reclass aspect360 out=aspect16 --o
#
#斜面方位毎に輝度平均を出す(出力結果 mean_dn.txt)
num=1
MAX_DN=0
while [ $num -le 16 ]; do
r.mask -o input=aspect16 maskcats=$num
r.univar map=image@PERMANENT > stat_dn_asp_$num.txt
mean_asp_[$num]=`awk '/mean/{print $2}' stat_dn_asp_$num.txt`
echo mean_asp_$num=${mean_asp_[$num]} >> mean_dn.txt
#
##最大値の吟味 ここから
if [ `echo "${mean_asp_[$num]} > $MAX_DN" | bc` -eq 1 ]
then
MAX_DN=${mean_asp_[$num]}
fi
##最大値の吟味 ここまで
#
#
num=$(expr $num + 1)
g.remove rast=MASK
done
#方位にDNを補正
num=1
while [ $num -le 16 ]; do
r.mask -o input=aspect16 maskcats=$num
DIFF_DN_[$num]=`echo "$MAX_DN - ${mean_asp_[$num]}" | bc`
r.mapcalc image_cor_dn_asp$num=image+${DIFF_DN_[$num]}
num=`expr $num + 1`
g.remove rast=MASK
done
#方位毎の補正画像を一つにする
r.patch in=image_cor_dn_asp1,image_cor_dn_asp2,image_cor_dn_asp3,image_cor_dn_asp4,image_cor_dn_asp5,image_cor_dn_asp6,image_cor_dn_asp7,image_cor_dn_asp8,image_cor_dn_asp9,image_cor_dn_asp10,image_cor_dn_asp11,image_cor_dn_asp12,image_cor_dn_asp13,image_cor_dn_asp14,image_cor_dn_asp15,image_cor_dn_asp16 out=image_cor_tk --o
#中間ファイルの削除
num=1
while [ $num -le 16 ]; do
g.remove image_cor_dn_asp$num
num=`expr $num + 1`
done

SELL tk method step3

2009-08-19 14:46:24 | SHELL
num=1
MAX_DN=0

while read LINE; do
MEAN_DN[$num]=$LINE
if [ `echo "${MEAN_DN[$num]} > $MAX_DN" | bc` -eq 1 ]
then
MAX_DN=${MEAN_DN[$num]}
fi
num=`expr $num + 1`
max_num=`expr $num - 1`
done <data.csv echo max_dn=$MAX_DN
echo max_num=$max_num

num=1
while [ $num -le $max_num ]; do
DIFF_DN_[$num]=`echo "$MAX_DN + ${MEAN_DN[$num]}" | bc`
echo DIFF_DN_[$num]=${DIFF_DN_[$num]}
num=`expr $num + 1`
done


GRASS shell tk_method step2

2009-08-19 12:23:18 | SHELL
#DEMから斜面方位を計算
r.slope.aspect elevation=topo@PERMANENT format=degrees prec=float aspect=aspect360 zfactor=1.0
min_slp_allowed=0.0 --overwrite
#
#
#360の方位を16分割にこのとき、割約するルールのファイル必要)
cat aspect_rule.txt | r.reclass aspect360 out=aspect_class --o
#
#aspect_rule.txtの内容
0 thru 11 = 1
12 thru 33 = 2
34 thru 56 = 3
57 thru 78 = 4
79 thru 101 = 5
102 thru 123 = 6
124 thru 146 = 7
147 thru 168 = 8
169 thru 191 = 9
192 thru 213 = 10
214 thru 236 = 11
237 thru 258 = 12
259 thru 281 = 13
282 thru 303 = 14
304 thru 326 = 15
327 thru 348 = 16
349 thru 360 = 1

#斜面方位毎に輝度平均を出す(出力結果 mean_dn.txt)
num=1
max_dn=1
while [ $num -le 16 ]; do
r.mask -o input=aspect_class maskcats=$num
r.univar map=image@PERMANENT > stat_asp_$num.txt
mean_asp=`awk '/mean/{print $2}' stat_asp_$num.txt`
mean_asp_$num=$mean_asp >> mean_dn.txt
num=$(expr $num + 1)
g.remove rast=MASK
done
echo $max_dn

#最大輝度値を求める
sort -t = +1 mean_dn.txt > temp.txt
max_dn=`awk '{print $3}' temp.txt`
echo max_dn >temp1.txt
max_max=`awk '{print $16}' temp1.txt

GRASS shell tk_method step1

2009-08-18 13:24:16 | GRASS
#DEMから斜面方位を計算
r.slope.aspect elevation=topo@PERMANENT format=degrees prec=float aspect=aspect360 zfactor=1.0 min_slp_allowed=0.0 --overwrite
#
#
#方位が北のものを1、それ以外をゼロとする
r.mapcalculator amap=aspect360 formula=if(A>348.75,1,if(A<11.25,1,0)) outfile=asp_1 help=- --overwrite #
# マスクの設定
r.mask -o input=asp_1 maskcats=1
#
#
#マスクの部分の輝度平均をstat_asp_1.txtに出力
r.univar map=image@PERMANENT > stat_asp_1.txt
#
#
#出力され統計情報から輝度平均だけを抜き出して変数mean_asp_1に代入
mean_asp_1=`awk '/mean/{print $2}' stat_asp_1.txt`
#mean_asp_1の値と斜面方位の情報をmean_dn.txtに出力
echo mean_asp_1 = $mean_asp_1 >> mean_dn.txt