#!/bin/csh -f ############################################## # 最適結果への自動調整 # #1999年06月01 #地形データの統計量を算出 #zstat slp.img 500 500 # #1999年05月29 # comp7自動対応 & 修正コサイン # set area_name="HIROTA2" @ x0 = 2500 @ y0 = 5500 set PIXEL=500 set LINE=500 @ x1 = $x0 + $PIXEL - 1 @ y1 = $y0 + $LINE - 1 #Best 231 for Average set start1=60 set start2=20 set start3=18 ########### TM image directory set TM1=~/IWATE616/iwa_616y1 set TM2=~/IWATE616/iwa_616y2 set TM3=~/IWATE616/iwa_616y3 set TM4=~/IWATE616/iwa_616y4 set TM5=~/IWATE616/iwa_616y5 set TM6=~/IWATE616/iwa_616y7 ########### DEM(Degital Elevetion Model) directory set DEM=~/DEM/iwa_utm set SLP=~/DEM/iwa_slp set ASP=~/DEM/iwa_asp ########### Vegetation Map directory set VEG=~/VEG/iwaveg72 set mon=6 set date=16 set time=0.745 ############ echo Image Center Position Information > $area_name.doc #タイトルを記録保存 echo "1985_0616A 0:44:43(GST) 40:20(N) 141:24(E) 61.3(SUN_ang) 118(SUN_Zen)" >> $area_name.doc echo "1985_0616B 0:45:07(GST) 38:54(N) 140:58(E) 61.7(SUN_ang) 115.2(SUN_Zen)" >> $area_name.doc echo '------------------------------------' >> $area_name.doc #単なる区切り線 date >> $area_name.doc #処理開始時間の保存 hostname >> $area_name.doc #処理しているマシン名の保存 pwd >> $area_name.doc #現在位置(ディレクトリ)の記録 whoami >> $area_name.doc #誰が作業したものか記録 ########### subset oparation if ( -e veg.img ) then rm veg.img endif if ( -e pre.bsq ) then rm pre.bsq endif if ( -e pre.img ) then rm pre.img endif ########### Vegitation Image data load subset $VEG.img veg.img $y0 $y1 $x0 $x1 paint $PIXEL $LINE veg.img ~/VEG/iwaveg7.tbl veg.ppm cjpeg veg.ppm > VEG$area_name.jpg rm veg.ppm subset ~/VEG/original/iwate3+4th.img veg_org.img $y0 $y1 $x0 $x1 paint $PIXEL $LINE veg_org.img ~/VEG/paint5.tbl veg.ppm cjpeg veg.ppm > veg_new.jpg rm veg.ppm echo '------------ Actual Vegetation Items ------------' >> $area_name.doc freq veg_org | awk ' NR>8 {printf(" %d \n",$1)}' | legendc.bat > zz1 freq veg_org | awk ' NR>8 {print $0}' > zz2 paste zz2 zz1 >> $area_name.doc echo '-------------------------------------------------' >> $area_name.doc rm zz1 zz2 ########### TM data load subset $TM1.img pre.img $y0 $y1 $x0 $x1 #バンド1画像切り出し cat pre.img > pre.bsq ; rm pre.img #切り出した画像でpre.bsq作成 subset $TM2.img pre.img $y0 $y1 $x0 $x1 #バンド2画像切り出し cat pre.img >> pre.bsq ; rm pre.img #切り出した画像でpre.bsq作成 subset $TM3.img pre.img $y0 $y1 $x0 $x1 #バンド3画像切り出し cat pre.img >> pre.bsq ; rm pre.img #切り出した画像でpre.bsq作成 subset $TM4.img pre.img $y0 $y1 $x0 $x1 #バンド4画像切り出し cat pre.img >> pre.bsq ; rm pre.img #切り出した画像でpre.bsq作成 subset $TM5.img pre.img $y0 $y1 $x0 $x1 #バンド5画像切り出し cat pre.img >> pre.bsq ; rm pre.img #切り出した画像でpre.bsq作成 subset $TM6.img pre.img $y0 $y1 $x0 $x1 #バンド7画像切り出し cat pre.img >> pre.bsq ; rm pre.img #切り出した画像でpre.bsq作成 ############ #pre.bsqのdocファイル作成 rm pre.doc echo 'title : #'$area_name > pre.doc echo 'data type : byte' >> pre.doc echo 'rows : '$LINE >> pre.doc echo 'columns : '$PIXEL >> pre.doc echo 'bands : 6' >> pre.doc echo 'class : 0' >> pre.doc ############ xvp pre.bsq $PIXEL $LINE 2 1 0 3.5 4.5 1.8 pre321.ppm xvp pre.bsq $PIXEL $LINE 3 4 5 2.0 2.0 2.0 pre456.ppm cjpeg pre321.ppm > pre321.jpg cjpeg pre456.ppm > pre456.jpg rm pre321.ppm pre456.ppm #############Iwate(4350x6800)l #############Left/UP(x0,y0)=467400,4483500 Right/Down(x1,y1)=597900,4279500 #############140:37:30E,40:30:00N, 142:07:30E,38:40:00N #画像の中心座標のUTM座標値計算 UTM;Universal Traverse Mercator Map 横メルカトル地図座標 @ cenx = ( $x0 + $x1 ) / 2 #中心の座標x @ ceny = ( $y0 + $y1 ) / 2 #中心の座標y @ utmx = 467400 + 30 * $cenx #UTM座標値による値の算出 @ utmy = 4483500 - 30 * $ceny #UTM座標値による値の算出 #############Data log od Center Scene #画像の中心位置における情報の記録 echo Area : $area_name >> $area_name.doc echo x0,x1 : $x0,$x1 >> $area_name.doc echo y0,y1 : $y0,$y1 >> $area_name.doc echo Pixel,Line : $cenx,$ceny >> $area_name.doc echo UTMX,Y : $utmx,$utmy >> $area_name.doc echo -n LON,LAT : >> $area_name.doc #LON;経度、LAT;緯度 utm2lla $utmx $utmy >> $area_name.doc #UTMから緯度経度へ変換する命令 echo '' >> $area_name.doc echo '------------------------------------' >> $area_name.doc ############# 6S data set up if ( -e pre.org ) then rm pre.org #6Sに引き渡す計算条件をpre.orgに格納する endif echo '7 (Landsat TM)' > pre.org #ランドサット画像の放射輝度計算 echo -n $mon $date $time ' ' >> pre.org #月日と緯度経度を入れる utm2lla $utmx $utmy >> pre.org #緯度経度はutm2llaで計算(改行なし) echo ' (for Solar Zenith Angle)' >> pre.org # echo '2 (Mid Latitude Summer)' >> pre.org #夏の季節 echo '3 (AEROSOLS MODEL)' >> pre.org #海洋性エアロゾル echo '50 (Direct Visibility Input km)' >> pre.org #見通し距離50km echo '0.00 (TARGET ALTITUDE IN KM)' >> pre.org #対象地域の標高値 echo '-1000 (SATELLITE CASE)' >> pre.org #衛星の条件(不明) echo '29 (Landsat TM Band 1)' >> pre.org #TMバンド画像1での結果を求める echo '0 (HOMOGENEOUS CASE)' >> pre.org #均質条件(不明) echo '0 (NO DIRECTIONAL EFFECTS)' >> pre.org #指向性効果(不明) echo '1 (VEGETATION)' >> pre.org #地上被覆物を1(不明) echo '-9 (ATMOSPHERIC CORRECTION FOR BRDF)' >> pre.org #双方向反射BRDFの補正(不明) ############# 6s Calculate if ( -e pre.ang ) then rm pre.ang endif #6sによるTM画像撮影時の太陽高度角、方位角の計算実行。結果をpre.angへ。 cat pre.org | sixs | grep 'solar zenith' > pre.ang ############# Sun angle,zenith value set suna = `awk '{ print 90-$5 }' < pre.ang` set sunz = `awk '{ print $10 }' < pre.ang` #計算結果を$area_name.docにも記録しておく echo -n 'Sun angle,zenith :' >> $area_name.doc echo $suna, $sunz >> $area_name.doc echo '------------------------------------' >> $area_name.doc zsubset $DEM dem $y0 $y1 $x0 $x1 zsubset $SLP slp $y0 $y1 $x0 $x1 zsubset $ASP asp $y0 $y1 $x0 $x1 ############# Incident Data get zincident slp asp inc $suna $sunz echo "# DEM.img Statistical data ----------" >> $area_name.doc zstat dem.img $PIXEL $LINE >> $area_name.doc echo "# SLP.img Statistical data ----------" >> $area_name.doc zstat slp.img $PIXEL $LINE >> $area_name.doc echo "# ASP.img Statistical data ----------" >> $area_name.doc zstat asp.img $PIXEL $LINE >> $area_name.doc echo "# INC.img Statistical data ----------" >> $area_name.doc zstat inc.img $PIXEL $LINE >> $area_name.doc echo '------------------------------------' >> $area_name.doc echo 'veg.img ' >> $area_name.doc echo ' No. Frequency' >> $area_name.doc freq veg | awk 'NR>8 {print $0}' >> $area_name.doc echo '------------------------------------' >> $area_name.doc ############ Correct operation ############ Correct operation #実際の修正コサイン法による大気地形効果補正 #これで出力されるpost.bsqが、補正された結果であり、pre.bsqに比べ #影の部分が平坦になったり、標高差による輝度の違いも少なくなっている # #繰り返し計算・大気地形効果補正による分類精度の変化 @ k1 = $start1 @ k2 = $start2 @ k3 = $start3 if ( -e pre.crt ) then rm pre.crt endif echo -n $k1 " " $k2 " " $k3 " "> pre.crt echo '51.73 28.87 8.10' >> pre.crt echo '-0.003 -0.001 -0.001 0 0 0' >> pre.crt echo '0.001 0.001 0.001 0.001 0.001 0.001' >> pre.crt echo '0.6841 0.7755 0.8334 0.8860 0.9526 0.9680' >> pre.crt echo '0.1392 0.0840 0.0897 0.0220 0.0016 0.0009' >> pre.crt echo 'Modified Cosine Coefficient Table' >> $area_name.doc cat pre.crt >> $area_name.doc echo '------------------------------------' >> $area_name.doc cat pre.crt | zcorrect2 pre dem inc post xvp post.bsq $PIXEL $LINE 2 1 0 3.5 4.5 1.8 post321.ppm xvp post.bsq $PIXEL $LINE 3 4 5 2.0 2.0 2.0 post456.ppm cjpeg post321.ppm > post321.jpg cjpeg post456.ppm > post456.jpg rm post321.ppm post456.ppm ############ Classification mv post.bsq a.bsq #ファイル名の変更。大気地形効果補正画像のBSQファイルを分類用に使う mv post.doc a.doc #付属ファイルも名前変更 ############ ピラミッドリンキング pcomp > out ############ ISODATA法によるクラスタ分類 isodata c g 40 10 50 100 18 24 #上の分類コマンドそのものを記録しておく echo 'isodata c g 40 10 50 100 18 24' >> $area_name.doc echo "" >> $area_name.doc echo '------------------------------------' >> $area_name.doc #g53などの後の数値を無視して、全部g.codというファイル名にする # if (-e g.cod) then rm g.cod endif cp g*.cod g.cod #まず、code bookの内容を$area_name.docに書き込む cat g.cod >> $area_name.doc ############# クラスタ分析にもとずいてクラスタによる画像作成 #まず、cy.imgを作成する mlbg0x c g cy 100 ############# クラスタ分析にもとずいてクラスタによる画像作成・第2段階 prcont cy.img by.img b ############# クラスタ分析にもとずいてクラスタによる画像作成・第3段階 prcont by.img ay.img a ############# 後の作業で使用しない画像データ等の削除 gvc2 dem.img $PIXEL $LINE dem.pgm cjpeg dem.pgm > dem.jpg gvc2 asp.img $PIXEL $LINE asp.pgm cjpeg asp.pgm > asp.jpg gvc2 slp.img $PIXEL $LINE slp.pgm cjpeg slp.pgm > slp.jpg gvc2 inc.img $PIXEL $LINE inc.pgm cjpeg inc.pgm > inc.jpg rm *.pgm rm a.bsq a.doc asp.doc asp.img dem.doc dem.img rm inc.doc inc.img pre.ang pre.bsq pre.crt pre.doc rm pre.org slp.doc slp.img rm a.lnk alap.bsq alap.cov alap.doc out rm b.bsq b.doc b.lnk blap.bsq blap.cov blap.doc rm by.doc by.img c.bsq c.doc cy.doc cy.img cp g.cod g.rst rm *.cod comp71 $PIXEL $LINE veg.img ay.img 0 echo "comp7 Process Example" >> $area_name.doc echo '------------------------------------' >> $area_name.doc comp71 $PIXEL $LINE veg.img ay.img 1 >> $area_name.doc set num=`freq ay | tail -n 1 | awk '{print $1}'` cat ay.doc | awk 'NR<=5 {print $0}' > ay.tp1 echo -n 'class : ' >> ay.tp1 @ num1 = $num + 1 echo $num1 >> ay.tp1 cp ay.tp1 ay.doc reclass ay ay0 ayr0 reclass ay ay1 ayr1 reclass ay ay2 ayr2 ########### カテゴリー対応による色割り当て結果 paint $PIXEL $LINE ayr0.img ~/VEG/iwaveg7.tbl ayr.ppm cjpeg ayr.ppm > Y0$area_name.jpg paint $PIXEL $LINE ayr1.img ~/VEG/iwaveg7.tbl ayr.ppm cjpeg ayr.ppm > Y1$area_name.jpg paint $PIXEL $LINE ayr2.img ~/VEG/iwaveg7.tbl ayr.ppm cjpeg ayr.ppm > Y2$area_name.jpg rm ayr.ppm echo '## Maximum Average Value ##' >> $area_name.doc cat ay0.cls >> $area_name.doc confuse9 veg ayr0 | erchk 7 >> $area_name.doc echo '## Maximum Overall Value ##' >> $area_name.doc cat ay1.cls >> $area_name.doc confuse9 veg ayr1 | erchk 7 >> $area_name.doc echo '## Maximum Kappa Value ##' >> $area_name.doc cat ay2.cls >> $area_name.doc confuse9 veg ayr2 | erchk 7 >> $area_name.doc rm ayr?.img ayr?.doc # End of C-Shell Script