[GRASS-SVN] r50692 - grass/trunk/raster3d/r3.info
svn_grass at osgeo.org
svn_grass at osgeo.org
Mon Feb 6 08:24:04 EST 2012
Author: huhabla
Date: 2012-02-06 05:24:03 -0800 (Mon, 06 Feb 2012)
New Revision: 50692
Modified:
grass/trunk/raster3d/r3.info/r3.info.main.c
Log:
Added vertical unit support, simplified command line interface to be
more compatible with r.info. Reduced the number of flags.
Modified: grass/trunk/raster3d/r3.info/r3.info.main.c
===================================================================
--- grass/trunk/raster3d/r3.info/r3.info.main.c 2012-02-06 13:22:34 UTC (rev 50691)
+++ grass/trunk/raster3d/r3.info/r3.info.main.c 2012-02-06 13:24:03 UTC (rev 50692)
@@ -52,7 +52,7 @@
int i;
FILE *out;
RASTER3D_Region cellhd;
- void *g3map;
+ RASTER3D_Map *g3map;
struct Categories cats;
struct History hist;
struct TimeStamp ts;
@@ -62,11 +62,7 @@
int time_ok = 0, first_time_ok = 0, second_time_ok = 0;
struct Option *opt1;
struct Flag *rflag;
- struct Flag *sflag;
- struct Flag *tflag;
- struct Flag *timestampflag;
struct Flag *gflag;
- struct Flag *iflag;
struct Flag *hflag;
int data_type;
@@ -81,43 +77,20 @@
module->description =
_("Outputs basic information about a user-specified 3D raster map layer.");
- opt1 = G_define_option();
- opt1->key = "map";
- opt1->type = TYPE_STRING;
- opt1->required = YES;
- opt1->gisprompt = "old,grid3,3d raster";
- opt1->description = _("Name of input 3D raster map");
+ opt1 = G_define_standard_option(G_OPT_R3_MAP);
- rflag = G_define_flag();
- rflag->key = 'r';
- rflag->description = _("Print range only");
-
- sflag = G_define_flag();
- sflag->key = 's';
- sflag->description =
- _("Print 3D raster map resolution (NS-res, EW-res, TB-res) only");
-
- tflag = G_define_flag();
- tflag->key = 't';
- tflag->description = _("Print 3D raster map type (float/double) only");
-
gflag = G_define_flag();
gflag->key = 'g';
- gflag->description = _("Print 3D raster map region only");
+ gflag->description = _("Print raster3d information in shell style");
- iflag = G_define_flag();
- iflag->key = 'i';
- iflag->description = _("Print 3D raster tile number and size information only");
-
+ rflag = G_define_flag();
+ rflag->key = 'r';
+ rflag->description = _("Print range in shell style only");
+
hflag = G_define_flag();
hflag->key = 'h';
- hflag->description = _("Print 3D raster history instead of info");
+ hflag->description = _("Print raster history instead of info");
- timestampflag = G_define_flag();
- timestampflag->key = 'p';
- timestampflag->description =
- _("Print 3D raster map timestamp (day.month.year hour:minute:seconds) only");
-
if (G_parser(argc, argv))
exit(EXIT_FAILURE);
@@ -153,8 +126,7 @@
out = stdout;
/*Show the info if no flag is set */
- if (!rflag->answer && !sflag->answer && !tflag->answer && !gflag->answer
- && !timestampflag->answer && !hflag->answer && !iflag->answer) {
+ if (!rflag->answer && !gflag->answer && !hflag->answer) {
divider('+');
if (G_asprintf(&line, "Layer: %-29.29s Date: %s", name,
@@ -181,12 +153,22 @@
else
G_fatal_error(_("Cannot allocate memory for string"));
- if (G_asprintf(&line, "Title: %s ( %s )", cats_ok ? cats.title : "??",
- hist_ok ? Rast_get_history(&hist, HIST_TITLE) : "??") > 0)
+ if (G_asprintf(&line, "Title: %s",
+ hist_ok ? Rast_get_history(&hist, HIST_TITLE) : "??") > 0)
printline(line);
else
G_fatal_error(_("Cannot allocate memory for string"));
+ if (G_asprintf(&line, "Units: %s", Rast3d_get_unit(g3map)))
+ printline(line);
+ else
+ G_fatal_error(_("Cannot allocate memory for string"));
+
+ if (G_asprintf(&line, "Vertical unit: %s", Rast3d_get_vertical_unit(g3map)))
+ printline(line);
+ else
+ G_fatal_error(_("Cannot allocate memory for string"));
+
/*This shows the TimeStamp */
if (time_ok && (first_time_ok || second_time_ok)) {
@@ -251,8 +233,8 @@
G_fatal_error(_("Cannot allocate memory for string"));
double totalSize = 0;
- for(i = 0; i < ((RASTER3D_Map* )g3map)->nTiles; i++)
- totalSize += ((RASTER3D_Map* )g3map)->tileLength[i];
+ for(i = 0; i < g3map->nTiles; i++)
+ totalSize += g3map->tileLength[i];
if (G_asprintf(&line, " Total size: %ld Bytes",
(long)(totalSize)) > 0)
@@ -261,13 +243,13 @@
G_fatal_error(_("Cannot allocate memory for string"));
if (G_asprintf(&line, " Number of tiles: %d",
- ((RASTER3D_Map* )g3map)->nTiles) > 0)
+ g3map->nTiles) > 0)
printline(line);
else
G_fatal_error(_("Cannot allocate memory for string"));
if (G_asprintf(&line, " Mean tile size: %ld Bytes",
- (long)(totalSize/((RASTER3D_Map* )g3map)->nTiles)) > 0)
+ (long)(totalSize/g3map->nTiles)) > 0)
printline(line);
else
G_fatal_error(_("Cannot allocate memory for string"));
@@ -275,12 +257,12 @@
int tileSize = 0;
if(data_type == FCELL_TYPE)
- tileSize = sizeof(FCELL) * ((RASTER3D_Map* )g3map)->tileX * ((RASTER3D_Map* )g3map)->tileY *
+ tileSize = sizeof(FCELL) * g3map->tileX * g3map->tileY *
((RASTER3D_Map* )g3map)->tileZ;
if(data_type == DCELL_TYPE)
- tileSize = sizeof(DCELL) * ((RASTER3D_Map* )g3map)->tileX * ((RASTER3D_Map* )g3map)->tileY *
- ((RASTER3D_Map* )g3map)->tileZ;
+ tileSize = sizeof(DCELL) * g3map->tileX * g3map->tileY *
+ g3map->tileZ;
if (G_asprintf(&line, " Tile size in memory: %ld Bytes",
(long)(tileSize)) > 0)
@@ -289,15 +271,15 @@
G_fatal_error(_("Cannot allocate memory for string"));
if (G_asprintf(&line, " Number of tiles in x, y and z: %d, %d, %d",
- ((RASTER3D_Map* )g3map)->nx, ((RASTER3D_Map* )g3map)->ny,
- ((RASTER3D_Map* )g3map)->nz) > 0)
+ g3map->nx, g3map->ny,
+ g3map->nz) > 0)
printline(line);
else
G_fatal_error(_("Cannot allocate memory for string"));
if (G_asprintf(&line, " Dimension of a tile in x, y, z: %d, %d, %d",
- ((RASTER3D_Map* )g3map)->tileX, ((RASTER3D_Map* )g3map)->tileY,
- ((RASTER3D_Map* )g3map)->tileZ) > 0)
+ g3map->tileX, g3map->tileY,
+ g3map->tileZ) > 0)
printline(line);
else
G_fatal_error(_("Cannot allocate memory for string"));
@@ -407,22 +389,7 @@
fprintf(out, "\n");
}
- else { /* Range */
- if (rflag->answer) {
- if (0 == Rast3d_range_load(g3map))
- G_fatal_error(_("Unable to read range of 3D raster map <%s>"), name);
-
- Rast3d_range_min_max(g3map, &dmin, &dmax);
- if(dmin != dmin)
- fprintf(out, "min=NULL\n");
- else
- fprintf(out, "min=%f\n", dmin);
- if(dmax != dmax)
- fprintf(out, "max=NULL\n");
- else
- fprintf(out, "max=%f\n", dmax);
-
- } /*Region */
+ else {/* Print information in shell style*/
if (gflag->answer) {
sprintf(tmp1, "%f", cellhd.north);
sprintf(tmp2, "%f", cellhd.south);
@@ -440,8 +407,7 @@
fprintf(out, "bottom=%g\n", cellhd.bottom);
fprintf(out, "top=%g\n", cellhd.top);
- } /*Resolution */
- if (sflag->answer) {
+
G_format_resolution(cellhd.ns_res, tmp3, cellhd.proj);
fprintf(out, "nsres=%s\n", tmp3);
@@ -449,24 +415,46 @@
fprintf(out, "ewres=%s\n", tmp3);
fprintf(out, "tbres=%g\n", cellhd.tb_res);
- } /*Datatype */
- if (tflag->answer) {
+
fprintf(out, "datatype=\"%s\"\n",
data_type == FCELL_TYPE ? "FCELL" :
data_type == DCELL_TYPE ? "DCELL" :
- "??");
+ "??");
+
+ if (time_ok && (first_time_ok || second_time_ok)) {
+ G_format_timestamp(&ts, timebuff);
+ fprintf(out, "timestamp=\"%s\"", timebuff);
+ }
+ else {
+ fprintf(out, "timestamp=\"none\"\n");
+ }
+ fprintf(out, "units=\"%s\"\n", Rast3d_get_unit(g3map));
+ fprintf(out, "vertical_units=\"%s\"\n", Rast3d_get_vertical_unit(g3map));
+ fprintf(out, "tilenumx=%d\n", g3map->nx);
+ fprintf(out, "tilenumy=%d\n", g3map->ny);
+ fprintf(out, "tilenumz=%d\n", g3map->nz);
+ fprintf(out, "tiledimx=%d\n", g3map->tileX);
+ fprintf(out, "tiledimy=%d\n", g3map->tileY);
+ fprintf(out, "tiledimz=%d\n", g3map->tileZ);
+ }
+ if (rflag->answer) {
+ if (0 == Rast3d_range_load(g3map))
+ G_fatal_error(_("Unable to read range of 3D raster map <%s>"), name);
- } /*Resolution */
- if (iflag->answer) {
- fprintf(out, "tilenumx=%d\n", ((RASTER3D_Map* )g3map)->nx);
- fprintf(out, "tilenumy=%d\n", ((RASTER3D_Map* )g3map)->ny);
- fprintf(out, "tilenumz=%d\n", ((RASTER3D_Map* )g3map)->nz);
- fprintf(out, "tiledimx=%d\n", ((RASTER3D_Map* )g3map)->tileX);
- fprintf(out, "tiledimy=%d\n", ((RASTER3D_Map* )g3map)->tileY);
- fprintf(out, "tiledimz=%d\n", ((RASTER3D_Map* )g3map)->tileZ);
- } /*History output */
+ Rast3d_range_min_max(g3map, &dmin, &dmax);
+ if(dmin != dmin)
+ fprintf(out, "min=NULL\n");
+ else
+ fprintf(out, "min=%f\n", dmin);
+ if(dmax != dmax)
+ fprintf(out, "max=NULL\n");
+ else
+ fprintf(out, "max=%f\n", dmax);
+ }
if (hflag->answer) {
if (hist_ok) {
+ fprintf(out, "Title:\n");
+ fprintf(out, " %s\n", Rast_get_history(&hist, HIST_TITLE));
fprintf(out, "Data Source:\n");
fprintf(out, " %s\n", Rast_get_history(&hist, HIST_DATSRC_1));
fprintf(out, " %s\n", Rast_get_history(&hist, HIST_DATSRC_2));
@@ -481,21 +469,7 @@
else {
G_fatal_error(_("Error while reading history file"));
}
- } /*Timestamp */
- 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\"", timebuff);
-
- }
- else {
- fprintf(out, "Timestamp=\"none\"\n");
- }
}
-
}
/*Close the opened map */
More information about the grass-commit
mailing list