[GRASS-dev] Re: [GRASS-SVN] r49205 - in grass/trunk: lib/python raster/r.info

Markus Metz markus.metz.giswork at googlemail.com
Mon Nov 14 05:39:43 EST 2011


Sören Gebbert:
> Hi all,
> i agree with Martins point of view. Having just a single flag "-g" to
> print all available information in "shell" style makes IMHO much more
> sense. It reduces the need for many flags which may change over time
> and which confuses module developer and API designer.
> Having only a single flag allows that additionally information can be
> added without the need for a new flag. This is also very useful when
> designing the GRASS Python API.
>
> The implementation of  "-g" in Martins way for r.info, v.info.
> r3.info, g.region and many more, helps to implement a convenient and
> compatible module behavior.
>
+1

"-g" is generally used in GRASS to print info in shell script style. A
bunch of flags each printing one bit of information in shell style is
IMHO a bit messy, one single flag should do (most of the times).

Markus M

> I use this solution in the temporal extension too.
>
> My 2c
> Soeren
>
> 2011/11/14 Martin Landa <landa.martin at gmail.com>:
>> I highly *disagree* with this revert! Merging very specific options
>> which just prints one information to generic `-g` is a good idea (from
>> my POV). Please don't revert the commits which are just against your
>> *personal* taste! What's the opinion of other developers?
>>
>> Martin
>>
>> 2011/11/14  <svn_grass at osgeo.org>:
>>> Author: hamish
>>> Date: 2011-11-13 22:55:13 -0800 (Sun, 13 Nov 2011)
>>> New Revision: 49205
>>>
>>> Modified:
>>>   grass/trunk/lib/python/raster.py
>>>   grass/trunk/raster/r.info/main.c
>>> Log:
>>> undo r49166: units, vdatum, and title can not be eval'd so needed to be split out. on doing that it was apparent that -g needs to act the same as g.region and v.info modules -- basic region info only. -s is debatable to belong to -g or not, but -gs is very easy if needed.
>>>
>>> Modified: grass/trunk/lib/python/raster.py
>>> ===================================================================
>>> --- grass/trunk/lib/python/raster.py    2011-11-14 06:49:25 UTC (rev 49204)
>>> +++ grass/trunk/lib/python/raster.py    2011-11-14 06:55:13 UTC (rev 49205)
>>> @@ -73,7 +73,7 @@
>>>         else:
>>>             return float(s)
>>>
>>> -    s = read_command('r.info', flags = 'g', map = map)
>>> +    s = read_command('r.info', flags = 'rgstmpud', map = map)
>>>     kv = parse_key_val(s)
>>>     for k in ['min', 'max']:
>>>        kv[k] = float_or_null(kv[k])
>>>
>>> Modified: grass/trunk/raster/r.info/main.c
>>> ===================================================================
>>> --- grass/trunk/raster/r.info/main.c    2011-11-14 06:49:25 UTC (rev 49204)
>>> +++ grass/trunk/raster/r.info/main.c    2011-11-14 06:55:13 UTC (rev 49205)
>>> @@ -60,8 +60,9 @@
>>>     struct Reclass reclass;
>>>     struct GModule *module;
>>>     struct Option *opt1;
>>> -    struct Flag *gflag, *hflag;
>>> -
>>> +    struct Flag *rflag, *sflag, *tflag, *gflag, *hflag, *mflag;
>>> +    struct Flag *uflag, *dflag, *timestampflag;
>>> +
>>>     /* Initialize GIS Engine */
>>>     G_gisinit(argv[0]);
>>>
>>> @@ -74,14 +75,44 @@
>>>
>>>     opt1 = G_define_standard_option(G_OPT_R_MAP);
>>>
>>> +    rflag = G_define_flag();
>>> +    rflag->key = 'r';
>>> +    rflag->description = _("Print range only");
>>> +
>>> +    sflag = G_define_flag();
>>> +    sflag->key = 's';
>>> +    sflag->description =
>>> +       _("Print raster map resolution (NS-res, EW-res) only");
>>> +
>>> +    tflag = G_define_flag();
>>> +    tflag->key = 't';
>>> +    tflag->description = _("Print raster map type only");
>>> +
>>>     gflag = G_define_flag();
>>>     gflag->key = 'g';
>>> -    gflag->description = _("Print basic info in shell script style");
>>> +    gflag->description = _("Print map region only");
>>>
>>>     hflag = G_define_flag();
>>>     hflag->key = 'h';
>>>     hflag->description = _("Print raster history instead of info");
>>>
>>> +    uflag = G_define_flag();
>>> +    uflag->key = 'u';
>>> +    uflag->description = _("Print raster map data units only");
>>> +
>>> +    dflag = G_define_flag();
>>> +    dflag->key = 'd';
>>> +    dflag->description = _("Print raster map vertical datum only");
>>> +
>>> +    mflag = G_define_flag();
>>> +    mflag->key = 'm';
>>> +    mflag->description = _("Print map title only");
>>> +
>>> +    timestampflag = G_define_flag();
>>> +    timestampflag->key = 'p';
>>> +    timestampflag->description =
>>> +       _("Print raster map timestamp (day.month.year hour:minute:seconds) only");
>>> +
>>>     if (G_parser(argc, argv))
>>>        exit(EXIT_FAILURE);
>>>
>>> @@ -115,8 +146,9 @@
>>>
>>>     out = stdout;
>>>
>>> -    /* no flags */
>>> -    if (!gflag->answer && !hflag->answer) {
>>> +    if (!rflag->answer && !sflag->answer && !tflag->answer &&
>>> +       !gflag->answer && !hflag->answer && !timestampflag->answer &&
>>> +       !mflag->answer && !uflag->answer && !dflag->answer) {
>>>        divider('+');
>>>
>>>        compose_line(out, "Layer:    %-29.29s  Date: %s", name,
>>> @@ -289,10 +321,9 @@
>>>
>>>        fprintf(out, "\n");
>>>     }
>>> -    else {     /* g,h flag */
>>> +    else {     /* r,s,t,g,h, or m flag */
>>>
>>> -       if (gflag->answer) {
>>> -           /* old rflag */
>>> +       if (rflag->answer) {
>>>            if (data_type == CELL_TYPE) {
>>>                if (2 == Rast_read_range(name, "", &crange)) {
>>>                    fprintf(out, "min=NULL\n");
>>> @@ -311,7 +342,10 @@
>>>                fprintf(out, "min=%.15g\n", zmin);
>>>                fprintf(out, "max=%.15g\n", zmax);
>>>            }
>>> -
>>> +
>>> +       }
>>> +
>>> +       if (gflag->answer) {
>>>            G_format_northing(cellhd.north, tmp1, -1);
>>>            G_format_northing(cellhd.south, tmp2, -1);
>>>            fprintf(out, "north=%s\n", tmp1);
>>> @@ -321,46 +355,47 @@
>>>            G_format_easting(cellhd.west, tmp2, -1);
>>>            fprintf(out, "east=%s\n", tmp1);
>>>            fprintf(out, "west=%s\n", tmp2);
>>> -
>>> -           /* old sflag */
>>> +       }
>>> +
>>> +       if (sflag->answer) {
>>>            G_format_resolution(cellhd.ns_res, tmp3, cellhd.proj);
>>>            fprintf(out, "nsres=%s\n", tmp3);
>>>
>>>            G_format_resolution(cellhd.ew_res, tmp3, cellhd.proj);
>>>            fprintf(out, "ewres=%s\n", tmp3);
>>> -
>>> -           /* new rows and columns parameters */
>>> -           fprintf(out, "rows=%d\n", cellhd.rows);
>>> -           fprintf(out, "cols=%d\n", cellhd.cols);
>>> -
>>> -           /* old tflag */
>>> +       }
>>> +
>>> +       if (tflag->answer) {
>>>            fprintf(out, "datatype=%s\n",
>>>                    (data_type == CELL_TYPE ? "CELL" :
>>>                     (data_type == DCELL_TYPE ? "DCELL" :
>>>                      (data_type == FCELL_TYPE ? "FCELL" : "??"))));
>>> -
>>> -           /* old mflag */
>>> +       }
>>> +
>>> +       if (mflag->answer) {
>>>            fprintf(out, "title=%s (%s)\n", cats_ok ? cats.title :
>>>                    "??", hist_ok ? Rast_get_history(&hist, HIST_TITLE) : "??");
>>> -
>>> -           /* old timestampflag */
>>> +       }
>>> +
>>> +       if (timestampflag->answer) {
>>>            if (time_ok && (first_time_ok || second_time_ok)) {
>>>
>>>                G_format_timestamp(&ts, timebuff);
>>>
>>>                /*Create the r.info timestamp string */
>>>                fprintf(out, "timestamp=\"%s\"\n", timebuff);
>>> +
>>>            }
>>>            else {
>>>                fprintf(out, "timestamp=\"none\"\n");
>>> -           }
>>> -
>>> -           /* old uflag */
>>> -           fprintf(out, "units=%s\n", units ? units : "(none)");
>>> -           /* old dflag */
>>> -           fprintf(out, "vertical_datum=%s\n", vdatum ? vdatum : "(none)");
>>> +           }
>>>        }
>>>
>>> +       if (uflag->answer)
>>> +           fprintf(out, "units=%s\n", units ? units : "(none)");
>>> +       if (dflag->answer)
>>> +           fprintf(out, "vertical_datum=%s\n", vdatum ? vdatum : "(none)");
>>> +
>>>        if (hflag->answer) {
>>>            if (hist_ok) {
>>>                fprintf(out, "Data Source:\n");
>>> @@ -375,7 +410,8 @@
>>>                }
>>>            }
>>>        }
>>> -    }
>>> +    }                          /* else rflag or sflag or tflag or gflag or hflag or mflag */
>>> +
>>>     return EXIT_SUCCESS;
>>>  }
>>>
>>>
>>> _______________________________________________
>>> grass-commit mailing list
>>> grass-commit at lists.osgeo.org
>>> http://lists.osgeo.org/mailman/listinfo/grass-commit
>>>
>>
>>
>>
>> --
>> Martin Landa <landa.martin gmail.com> * http://geo.fsv.cvut.cz/~landa
>> _______________________________________________
>> grass-dev mailing list
>> grass-dev at lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/grass-dev
>>
> _______________________________________________
> grass-dev mailing list
> grass-dev at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/grass-dev
>


More information about the grass-dev mailing list