[GRASS-dev] use of WIND_OVERRIDE in GRASS

Glynn Clements <glynn@gclements.plus.com> writes:

>> exec `g.region rast="$RAST"`

> This is bogus on two counts. First, g.region doesn't output a shell
> command, so the use of exec and backticks makes no sense. Second,
> shell scripts shouldn't change the current region; they should create
> a temporary region with "g.region ... save=..." and use
> WIND_OVERRIDE.

  Apparently, there're a couple of scripts to be fixed in GRASS
  itself. An (untested) patch follows.

diff --git a/scripts/i.fusion.brovey/i.fusion.brovey b/scripts/i.fusion.brovey/i.fusion.brovey
index ce0be15..8cde5ea 100755
--- a/scripts/i.fusion.brovey/i.fusion.brovey
+++ b/scripts/i.fusion.brovey/i.fusion.brovey
@@ -118,8 +118,6 @@ export LC_NUMERIC

cleanup()
{
- #restore settings:
- g.region region=i.fusion.brovey.$TMP
  g.remove region=i.fusion.brovey.$TMP > /dev/null
}

@@ -137,10 +135,12 @@ if [ $? -ne 0 ] ; then
  exit 1
fi

-#save current settings:
+# clone current region
g.region save=i.fusion.brovey.$TMP > /dev/null
+WIND_OVERRIDE=i.fusion.brovey.$TMP
+export WIND_OVERRIDE

-g.message message="Temporarily setting raster resolution to PAN resolution: $PANRES"
+# set the resolution
g.region res=$PANRES -ap > /dev/null

g.message "Performing Brovey transformation..."
diff --git a/scripts/i.in.spotvgt/i.in.spotvgt b/scripts/i.in.spotvgt/i.in.spotvgt
index 826b307..25cbab1 100755
--- a/scripts/i.in.spotvgt/i.in.spotvgt
+++ b/scripts/i.in.spotvgt/i.in.spotvgt
@@ -200,8 +200,10 @@ g.message message="Imported SPOT VEGETATION NDVI map <$NAME>."
# Coefficient a = 0.004
# Coefficient b = -0.1

-#save region before zoom to SPOT image
-g.region save=spot_$PID 2>&1 >/dev/null
+# switch to a temporary region
+WIND_OVERRIDE=spot_$PID
+export WIND_OVERRIDE
+g.region -d 2>&1 >/dev/null
g.region rast=$NAME 2>&1 >/dev/null

g.message "Remapping digital numbers to NDVI..."
@@ -276,8 +278,7 @@ EOF
   g.message message="Filtered SPOT VEGETATION NDVI map <${NAME}_filt>."
fi

-# restore user settings:
-g.region region=spot_$PID 2>&1 >/dev/null
+# remove the temporary region
g.remove region=spot_$PID 2>&1 >/dev/null

#### clean up the mess

Patch applied to SVN-HEAD.

Thanks, Ivan.

Markus

On Jan 7, 2008 10:27 AM, Ivan Shmakov <ivan@theory.asu.ru> wrote:

>>>>> Glynn Clements <glynn@gclements.plus.com> writes:

>> exec `g.region rast="$RAST"`

> This is bogus on two counts. First, g.region doesn't output a shell
> command, so the use of exec and backticks makes no sense. Second,
> shell scripts shouldn't change the current region; they should create
> a temporary region with "g.region ... save=..." and use
> WIND_OVERRIDE.

        Apparently, there're a couple of scripts to be fixed in GRASS
        itself. An (untested) patch follows.

diff --git a/scripts/i.fusion.brovey/i.fusion.brovey b/scripts/i.fusion.brovey/i.fusion.brovey
index ce0be15..8cde5ea 100755
--- a/scripts/i.fusion.brovey/i.fusion.brovey
+++ b/scripts/i.fusion.brovey/i.fusion.brovey
@@ -118,8 +118,6 @@ export LC_NUMERIC

cleanup()
{
- #restore settings:
- g.region region=i.fusion.brovey.$TMP
  g.remove region=i.fusion.brovey.$TMP > /dev/null
}

@@ -137,10 +135,12 @@ if [ $? -ne 0 ] ; then
  exit 1
fi

-#save current settings:
+# clone current region
g.region save=i.fusion.brovey.$TMP > /dev/null
+WIND_OVERRIDE=i.fusion.brovey.$TMP
+export WIND_OVERRIDE

-g.message message="Temporarily setting raster resolution to PAN resolution: $PANRES"
+# set the resolution
g.region res=$PANRES -ap > /dev/null

g.message "Performing Brovey transformation..."
diff --git a/scripts/i.in.spotvgt/i.in.spotvgt b/scripts/i.in.spotvgt/i.in.spotvgt
index 826b307..25cbab1 100755
--- a/scripts/i.in.spotvgt/i.in.spotvgt
+++ b/scripts/i.in.spotvgt/i.in.spotvgt
@@ -200,8 +200,10 @@ g.message message="Imported SPOT VEGETATION NDVI map <$NAME>."
# Coefficient a = 0.004
# Coefficient b = -0.1

-#save region before zoom to SPOT image
-g.region save=spot_$PID 2>&1 >/dev/null
+# switch to a temporary region
+WIND_OVERRIDE=spot_$PID
+export WIND_OVERRIDE
+g.region -d 2>&1 >/dev/null
g.region rast=$NAME 2>&1 >/dev/null

g.message "Remapping digital numbers to NDVI..."
@@ -276,8 +278,7 @@ EOF
   g.message message="Filtered SPOT VEGETATION NDVI map <${NAME}_filt>."
fi

-# restore user settings:
-g.region region=spot_$PID 2>&1 >/dev/null
+# remove the temporary region
g.remove region=spot_$PID 2>&1 >/dev/null

#### clean up the mess