proc get_feature { type } { set dir "" case $type in { {raster} { set dir "cell" } {vector} { set dir "dig" } {sites} { set dir "site_lists" } {label} { set dir "paint/labels" } {group} { set dir "group" } {icon} { set dir "paint/icons" } {region} { set dir "windows" } {dlg} { set dir "dlg" } {dlg_ascii} { set dir "dlg_ascii" } } return $dir } proc put_list { the_listbox the_list } { $the_listbox delete 0 end foreach i $the_list { $the_listbox insert end $i } } proc get_list { path } { set list "" if { [file isdirectory $path] != 1 } { return $list } set current_dir [exec pwd] cd $path foreach i [exec ls -a [exec pwd]] { if { [string compare $i "."] != 0 && [string compare $i ".."] != 0 } { lappend list $i } } cd $current_dir return $list } proc mapset_listbox { type } { global database global location global mapset global feature global file_name set file_name "" toplevel .mapset wm geometry .mapset +100+100 wm title .mapset {spatial layer} set feature [get_feature $type] global mapset_list frame .mapset.frame0 \ -borderwidth {2} \ -relief {flat} label .mapset.frame0.label \ -anchor {w} \ -text "Mapset" entry .mapset.frame0.mapset \ -relief {sunken} \ -width 20 global tcltkgrassbase menubutton .mapset.frame0.mapsets \ -bitmap @$tcltkgrassbase/bitmap/arrow \ -menu {.mapset.frame0.mapsets.pulldown} menu .mapset.frame0.mapsets.pulldown set mapset_list [get_list "$database/$location"] foreach i $mapset_list { .mapset.frame0.mapsets.pulldown add command \ -label $i \ -command { set mapset [lindex $mapset_list \ [.mapset.frame0.mapsets.pulldown index active] ] .mapset.frame0.mapset delete 0 end .mapset.frame0.mapset insert 0 $mapset put_list .mapset.frame1.listbox \ [get_list "$database/$location/$mapset/$feature"] set file_name "" } } pack append .mapset.frame0 \ .mapset.frame0.label { left } \ .mapset.frame0.mapset { left } \ .mapset.frame0.mapsets { right } frame .mapset.frame1 \ -borderwidth {2} \ -relief {raised} listbox .mapset.frame1.listbox \ -relief {sunken} \ -geometry 20x10 \ -yscrollcommand {.mapset.frame1.vscrollbar set} scrollbar .mapset.frame1.vscrollbar \ -command {.mapset.frame1.listbox yview} pack append .mapset.frame1 \ .mapset.frame1.listbox { left expand fill } \ .mapset.frame1.vscrollbar { right fill } frame .mapset.frame2 \ -borderwidth {2} frame .mapset.frame2.frame button .mapset.frame2.frame.ok \ -text Ok \ -relief raised \ -padx 10 \ -command { if { $file_name != "" } { destroy .mapset } } button .mapset.frame2.frame.cancel \ -text Cancel \ -relief raised \ -padx 10 \ -command { set file_name "" destroy .mapset } pack append .mapset.frame2.frame \ .mapset.frame2.frame.ok { left expand } \ .mapset.frame2.frame.cancel { right expand } pack append .mapset.frame2 \ .mapset.frame2.frame { bottom frame center fill } pack append .mapset \ .mapset.frame0 { top expand fill } \ .mapset.frame1 { top expand fill } \ .mapset.frame2 { bottom expand fill } bind .mapset.frame1.listbox { %W select from [%W nearest %y] %W select to [%W nearest %y] set file_name [%W get [%W nearest %y]] } bind .mapset.frame1.listbox { %W select from [%W nearest %y] %W select to [%W nearest %y] set file_name [%W get [%W nearest %y]] } bind .mapset.frame1.listbox { %W select from [%W nearest %y] %W select to [%W nearest %y] set file_name [%W get [%W nearest %y]] } .mapset.frame0.mapset delete 0 end .mapset.frame0.mapset insert 0 $mapset .mapset.frame1.listbox delete 0 end put_list .mapset.frame1.listbox \ [get_list "$database/$location/$mapset/$feature"] grab set .mapset tkwait window .mapset return $file_name } proc put_command1 { } { global name global name2 global name3 global name4 global name6 set cmd "" set name6 [exec whoami] set name6 "/tmp/i.kuvio.out.$name6" if { ($name != "" )&&($name3 != "" )&&($name2 != "" )} { set cmd "$cmd map=$name3,$name,$name2" } if { $cmd != "" } { set cmd "i.kuvio -m $cmd stands=$name6" } return $cmd } proc put_command2 { } { global name5 global name4 global name6 global apu set apu "" set cmd "" set params [exec r.robust input=$name6] catch {exec rm $name6} apu set par1 [lindex $params 0] set par2 [lindex $params 1] set rmse [lindex $params 2] set var_y [lindex $params 3] set F [lindex $params 4] set std [lindex $params 5] set R2 [lindex $params 6] set adj_R2 [lindex $params 7] pack forget .message.entry label .message.label1 -text "RMSE: $rmse" label .message.label2 -text "Var(y): $var_y" label .message.label3 -text "F: $F" label .message.label4 -text "STD: $std" label .message.label5 -text "R^2: $R2" label .message.label6 -text "adjusted R^2: $adj_R2" frame .message.frame button .message.frame.button1 -text Ok -command { pack forget .message.label1 pack forget .message.label2 pack forget .message.label3 pack forget .message.label4 pack forget .message.label5 pack forget .message.label6 pack forget .message.frame.button1 pack forget .message.frame.button2 pack .message.entry update set apu "a" } button .message.frame.button2 -text Stop -command { destroy .message destroy .cmd } pack .message.frame.button1 .message.frame.button2 -side left pack .message.label1 .message.label2 .message.label3 .message.label4 \ .message.label5 .message.label6 .message.frame update tkwait variable apu if { ($name4 != "") && ($name5 != "")} { # Remove the mask raster # exec g.remove rast=MASK # Use the output region exec g.region rast=$name5 set cmd "r.mapcalc \"$name4 = $par2 + $par1 * $name5\"" # puts $cmd return $cmd } } proc WatchCursor { } { .cmd config -cursor {watch black white} .cmd.frame.frame0.entry config -cursor {watch black white} .cmd.frame.frame1.entry config -cursor {watch black white} .cmd.frame.frame2.entry config -cursor {watch black white} .cmd.frame.frame3.entry config -cursor {watch black white} toplevel .message wm geometry .message +300+100 wm title .message {message} entry .message.entry .message.entry insert end "Calculating statistics.." pack .message.entry } proc Execute {cmd} { # puts $cmd # catch { eval "exec xterm -geometry 40x6 -e $cmd"} catch { eval "exec $cmd "} } proc Run {} { global name global name2 global name3 global name4 global name5 set name [.cmd.frame.frame0.entry get] set name2 [.cmd.frame.frame1.entry get] set name3 [.cmd.frame.frame2.entry get] set name4 [.cmd.frame.frame3.entry get] set name5 [.cmd.frame.frame5.entry get] set cmd [put_command1] if { $cmd != "" } { WatchCursor update } if { $cmd != "" } { # .message.entry insert end "Calculating values.." exec g.region rast=$name Execute $cmd } if { $cmd != "" } { # puts "r.robust" .message.entry delete 0 end .message.entry insert end "Calculating the model.." update set cmd [put_command2] if { $cmd != "" } { # puts $cmd .message.entry delete 0 end .message.entry insert end "Creating new layer.." update Execute $cmd } destroy .message } } # procedure to show window . proc proc_i.kuvio { } {# xf ignore me 7 # Window manager configurations global name global name2 global name3 global name4 global name5 toplevel .cmd wm geometry .cmd +100+20 wm title .cmd "Satellite image calibration tcl:j.soimasuo" # build widget .cmd.frame frame .cmd.frame \ -borderwidth {2} \ -height {440} \ -width {350} # build widget .cmd.frame.label label .cmd.frame.label \ -text {Description:} # build widget .cmd.frame.frame0 frame .cmd.frame.frame0 \ -borderwidth {2} \ -geometry {30x30} \ -relief {raised} # build widget .cmd.frame.frame0.label label .cmd.frame.frame0.label \ -text {Earlier calibrating satellite image:} # build widget .cmd.frame.frame0.entry entry .cmd.frame.frame0.entry \ -borderwidth {3} \ -relief {sunken} # build widget .cmd.frame.frame0.button button .cmd.frame.frame0.button \ -text {raster} \ -command { set file [mapset_listbox raster] if { $file != "" } { set name $file .cmd.frame.frame0.entry delete 0 end .cmd.frame.frame0.entry insert 0 $file # set_command_entry } } bind .cmd.frame.frame0.entry { set name [%W get] # set_command_entry } # place place .cmd.frame.frame0.button -x 300 -y 30 -anchor nw # place place .cmd.frame.frame0.entry -x 0 -y 30 -width 300 -anchor nw # place place .cmd.frame.frame0.label -x 0 -y 0 -anchor nw # build widget .cmd.frame.frame1 frame .cmd.frame.frame1 \ -borderwidth {2} \ -geometry {30x30} \ -relief {raised} # build widget .cmd.frame.frame1.label label .cmd.frame.frame1.label \ -text {Later calibrating satellite image:} # build widget .cmd.frame.frame1.entry entry .cmd.frame.frame1.entry \ -borderwidth {3} \ -relief {sunken} # build widget .cmd.frame.frame1.button button .cmd.frame.frame1.button \ -text {raster} \ -command { set file [mapset_listbox raster] if { $file != "" } { set name2 $file .cmd.frame.frame1.entry delete 0 end .cmd.frame.frame1.entry insert 0 $file # set_command_entry } } bind .cmd.frame.frame1.entry { set name2 [%W get] # set_command_entry } # place place .cmd.frame.frame1.label -x 0 -y 0 -anchor nw # place place .cmd.frame.frame1.entry -x 0 -y 30 -width 300 -anchor nw # place place .cmd.frame.frame1.button -x 300 -y 30 -anchor nw # build widget .cmd.frame.frame2 frame .cmd.frame.frame2 \ -borderwidth {2} \ -geometry {30x30} \ -relief {raised} # build widget .cmd.frame.frame2.label label .cmd.frame.frame2.label \ -text {Raster stand map for calibrating area:} # build widget .cmd.frame.frame2.entry entry .cmd.frame.frame2.entry \ -borderwidth {3} \ -relief {sunken} # build widget .cmd.frame.frame2.button button .cmd.frame.frame2.button \ -text {raster} \ -command { set file [mapset_listbox raster] if { $file != "" } { set name3 $file .cmd.frame.frame2.entry delete 0 end .cmd.frame.frame2.entry insert 0 $file # set_command_entry } } # place place .cmd.frame.frame2.label -x 0 -y 0 -anchor nw # place place .cmd.frame.frame2.entry -x 0 -y 30 -width 300 -anchor nw # place place .cmd.frame.frame2.button -x 300 -y 30 -anchor nw # build widget .cmd.frame.frame5 frame .cmd.frame.frame5 \ -borderwidth {2} \ -geometry {30x30} \ -relief {raised} # build widget .cmd.frame.frame5.label label .cmd.frame.frame5.label \ -text {Image to be calibrate:} # build widget .cmd.frame.frame5.entry entry .cmd.frame.frame5.entry \ -borderwidth {3} \ -relief {sunken} # build widget .cmd.frame.frame5.button button .cmd.frame.frame5.button \ -text {raster} \ -command { set file [mapset_listbox raster] if { $file != "" } { set name5 $file .cmd.frame.frame5.entry delete 0 end .cmd.frame.frame5.entry insert 0 $file # set_command_entry } } bind .cmd.frame.frame5.entry { set name5 [%W get] # set_command_entry } # place place .cmd.frame.frame5.label -x 0 -y 0 -anchor nw # place place .cmd.frame.frame5.entry -x 0 -y 30 -width 300 -anchor nw # place place .cmd.frame.frame5.button -x 300 -y 30 -anchor nw # build widget .cmd.frame.frame3 frame .cmd.frame.frame3 \ -borderwidth {2} \ -geometry {30x30} \ -relief {raised} # build widget .cmd.frame.frame3.label label .cmd.frame.frame3.label \ -text {Calibrated image:} # build widget .cmd.frame.frame3.entry entry .cmd.frame.frame3.entry \ -borderwidth {3} \ -relief {sunken} bind .cmd.frame.frame3.entry { set name4 [%W get] # set_command_entry } # place place .cmd.frame.frame3.label -x 0 -y 0 -anchor nw # place place .cmd.frame.frame3.entry -x 0 -y 30 -width 300 -anchor nw # build widget .cmd.frame.button1 button .cmd.frame.button1 \ -text {Ok} \ -width {8} \ -command { Run destroy .cmd } # build widget .cmd.frame.button2 button .cmd.frame.button2 \ -text {Cancel} \ -width {8} \ -command { destroy .cmd } # place # place .cmd.frame.frame4 -x 0 -y 351 -width 347 -height 65 -anchor nw # place place .cmd.frame.button1 -x 56 -y 390 -anchor nw # place place .cmd.frame.button2 -x 220 -y 390 -anchor nw # place place .cmd.frame.frame3 -x 0 -y 305 -width 347 -height 65 -anchor nw # place place .cmd.frame.frame5 -x 0 -y 240 -width 347 -height 65 -anchor nw # place place .cmd.frame.frame2 -x 0 -y 175 -width 347 -height 65 -anchor nw # place place .cmd.frame.frame1 -x 0 -y 110 -width 347 -height 65 -anchor nw # place place .cmd.frame.frame0 -x 0 -y 45 -width 347 -height 65 -anchor nw # place place .cmd.frame.label -x 0 -y 0 -anchor nw # pack widget . pack append .cmd \ .cmd.frame {top frame center} ## .cmd.frame.frame0.entry insert end cal.2 # .cmd.frame.frame5.entry insert end cal.2 # .cmd.frame.frame1.entry insert end cal.9 # .cmd.frame.frame2.entry insert end calib_stand_id # .cmd.frame.frame3.entry insert end cal.2.cal if {"[info procs XFEdit]" != ""} { catch "XFMiscBindWidgetTree ." after 2 "catch {XFEditSetShowWindows}" } } global name set name "" global name2 set name2 "" global name3 set name3 "" global name4 set name4 "" global name5 set name5 "" global name6 set name6 "" global database global location global mapset global feature if { [info exists env(GISDBASE)] == 0 || [info exists env(LOCATION_NAME)] == 0 || [info exists env(MAPSET)] == 0 } { puts stdout "GISDBASE, LOCATION_NAME and MAPSET must be set !!!" return } set database $env(GISDBASE) set location $env(LOCATION_NAME) set mapset $env(MAPSET) set gisbase $env(GISBASE) set feature "" proc_i.kuvio