[GRASS-SVN] r64024 - grass/branches/releasebranch_7_0/raster3d/r3.info
svn_grass at osgeo.org
svn_grass at osgeo.org
Fri Jan 9 00:35:56 PST 2015
Author: neteler
Date: 2015-01-09 00:35:55 -0800 (Fri, 09 Jan 2015)
New Revision: 64024
Added:
grass/branches/releasebranch_7_0/raster3d/r3.info/main.c
Removed:
grass/branches/releasebranch_7_0/raster3d/r3.info/r3.info.main.c
Log:
r3.info: 3d cell -> raster_3d in msg; use standard filename
Copied: grass/branches/releasebranch_7_0/raster3d/r3.info/main.c (from rev 64023, grass/branches/releasebranch_7_0/raster3d/r3.info/r3.info.main.c)
===================================================================
--- grass/branches/releasebranch_7_0/raster3d/r3.info/main.c (rev 0)
+++ grass/branches/releasebranch_7_0/raster3d/r3.info/main.c 2015-01-09 08:35:55 UTC (rev 64024)
@@ -0,0 +1,496 @@
+
+/***************************************************************************
+*
+* MODULE: r3.info
+*
+* AUTHOR(S): Roman Waupotitsch, Michael Shapiro, Helena Mitasova, Bill Brown,
+* Lubos Mitas, Jaro Hofierka
+*
+* PURPOSE: Outputs basic information about a user-specified 3D raster map layer.
+*
+* COPYRIGHT: (C) 2005 by the GRASS Development Team
+*
+* This program is free software under the GNU General Public
+* License (>=v2). Read the file COPYING that comes with GRASS
+* for details.
+*
+*****************************************************************************/
+
+/* \todo
+ * History support still not full implemented.
+ * Only parts of the timestep functionality are implemented, the timzone is missed ;).
+ */
+
+/*local prototype */
+int format_double(double value, char *buf);
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <grass/gis.h>
+#include <grass/raster3d.h>
+#include <grass/glocale.h>
+
+#define printline(x) fprintf (out," | %-74.74s |\n",x)
+#define divider(x) \
+ fprintf (out," %c",x);\
+ for (i = 0; i < 76; i++)\
+ fprintf(out,"-");\
+ fprintf (out,"%c\n",x)
+
+#define TMP_LENGTH 100
+
+static char *name;
+
+/**************************************************************************/
+int main(int argc, char *argv[])
+{
+ const char *mapset;
+ char *line = NULL;
+ char tmp1[TMP_LENGTH], tmp2[TMP_LENGTH], tmp3[TMP_LENGTH];
+ char timebuff[256];
+ int i;
+ FILE *out;
+ RASTER3D_Region cellhd;
+ RASTER3D_Map *g3map;
+ struct Categories cats;
+ struct History hist;
+ struct TimeStamp ts;
+ int head_ok;
+ int cats_ok;
+ int hist_ok;
+ int time_ok = 0, first_time_ok = 0, second_time_ok = 0;
+ struct Option *opt1;
+ struct Flag *rflag;
+ struct Flag *gflag;
+ struct Flag *hflag;
+ int data_type;
+
+ struct GModule *module;
+ double dmin, dmax;
+
+ G_gisinit(argv[0]);
+
+ module = G_define_module();
+ G_add_keyword(_("raster3d"));
+ G_add_keyword(_("metadata"));
+ G_add_keyword(_("extent"));
+ G_add_keyword(_("voxel"));
+ module->description =
+ _("Outputs basic information about a user-specified 3D raster map layer.");
+
+ opt1 = G_define_standard_option(G_OPT_R3_MAP);
+
+ gflag = G_define_flag();
+ gflag->key = 'g';
+ gflag->description = _("Print raster3d information in shell style");
+
+ 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 raster history instead of info");
+
+ if (G_parser(argc, argv))
+ exit(EXIT_FAILURE);
+
+ name = G_store(opt1->answer);
+ mapset = G_find_raster3d(name, "");
+
+ if (mapset == NULL)
+ G_fatal_error(_("3D Raster map <%s> not found"), name);
+
+ /*We need to open the map */
+ g3map =
+ Rast3d_open_cell_old(name, mapset, RASTER3D_DEFAULT_WINDOW,
+ RASTER3D_TILE_SAME_AS_FILE, RASTER3D_NO_CACHE);
+ if (NULL == g3map)
+ G_fatal_error(_("Unable to open 3D raster map <%s>"), name);
+
+ /*Get the maptype */
+ data_type = Rast3d_file_type_map(g3map);
+ head_ok = Rast3d_read_region_map(name, mapset, &cellhd) >= 0;
+ hist_ok = Rast3d_read_history(name, mapset, &hist) >= 0;
+ cats_ok = Rast3d_read_cats(name, mapset, &cats) >= 0;
+ /*Check the Timestamp */
+ time_ok = G_read_raster3d_timestamp(name, mapset, &ts) > 0;
+
+ /*Check for valid entries, show none if no entire available! */
+ if (time_ok) {
+ if (ts.count > 0)
+ first_time_ok = 1;
+ if (ts.count > 1)
+ second_time_ok = 1;
+ }
+
+ out = stdout;
+
+ /*Show the info if no flag is set */
+ if (!rflag->answer && !gflag->answer && !hflag->answer) {
+ divider('+');
+
+ if (G_asprintf(&line, "Layer: %-29.29s Date: %s", name,
+ hist_ok ? Rast_get_history(&hist, HIST_MAPID) : "??") > 0)
+ printline(line);
+ else
+ G_fatal_error(_("Cannot allocate memory for string"));
+
+
+ if (G_asprintf(&line, "Mapset: %-29.29s Login of Creator: %s", mapset,
+ hist_ok ? Rast_get_history(&hist, HIST_CREATOR) : "??") > 0)
+ printline(line);
+ else
+ G_fatal_error(_("Cannot allocate memory for string"));
+
+
+ if (G_asprintf(&line, "Location: %s", G_location()) > 0)
+ printline(line);
+ else
+ G_fatal_error(_("Cannot allocate memory for string"));
+
+ if (G_asprintf(&line, "DataBase: %s", G_gisdbase()) > 0)
+ printline(line);
+ else
+ G_fatal_error(_("Cannot allocate memory for string"));
+
+ 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)) {
+
+ G_format_timestamp(&ts, timebuff);
+
+ /*Create the r.info timestamp string */
+ if (G_asprintf(&line, "Timestamp: %s", timebuff) > 0)
+ printline(line);
+ else
+ G_fatal_error(_("Cannot allocate memory for string"));
+ }
+ else {
+ if (G_asprintf(&line, "Timestamp: none") > 0)
+ printline(line);
+ else
+ G_fatal_error(_("Cannot allocate memory for string"));
+ }
+
+
+ divider('|');
+ printline("");
+
+ if (cats_ok) {
+ format_double((double)cats.num, tmp1);
+ }
+
+ if (G_asprintf(&line, " Type of Map: %-20.20s Number of Categories: %-9s",
+ "raster_3d", cats_ok ? tmp1 : "??") > 0)
+ printline(line);
+ else
+ G_fatal_error(_("Cannot allocate memory for string"));
+
+ if (G_asprintf(&line, " Data Type: %s",
+ (data_type == FCELL_TYPE ? "FCELL" :
+ (data_type == DCELL_TYPE ? "DCELL" : "??"))) > 0)
+ printline(line);
+ else
+ G_fatal_error(_("Cannot allocate memory for string"));
+
+
+ if (head_ok) {
+ if (G_asprintf(&line, " Rows: %d", cellhd.rows) > 0)
+ printline(line);
+ else
+ G_fatal_error(_("Cannot allocate memory for string"));
+
+ if (G_asprintf(&line, " Columns: %d", cellhd.cols) > 0)
+ printline(line);
+ else
+ G_fatal_error(_("Cannot allocate memory for string"));
+
+ if (G_asprintf(&line, " Depths: %d", cellhd.depths) > 0)
+ printline(line);
+ else
+ G_fatal_error(_("Cannot allocate memory for string"));
+
+ if (G_asprintf
+ (&line, " Total Cells: %ld",
+ (long)cellhd.rows * cellhd.cols * cellhd.depths) > 0)
+ printline(line);
+ else
+ G_fatal_error(_("Cannot allocate memory for string"));
+
+ double totalSize = 0;
+ for(i = 0; i < g3map->nTiles; i++)
+ totalSize += g3map->tileLength[i];
+
+ if (G_asprintf(&line, " Total size: %ld Bytes",
+ (long)(totalSize)) > 0)
+ printline(line);
+ else
+ G_fatal_error(_("Cannot allocate memory for string"));
+
+ if (G_asprintf(&line, " Number of tiles: %d",
+ 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/g3map->nTiles)) > 0)
+ printline(line);
+ else
+ G_fatal_error(_("Cannot allocate memory for string"));
+
+ int tileSize = 0;
+
+ if(data_type == FCELL_TYPE)
+ tileSize = sizeof(FCELL) * g3map->tileX * g3map->tileY *
+ ((RASTER3D_Map* )g3map)->tileZ;
+
+ if(data_type == DCELL_TYPE)
+ tileSize = sizeof(DCELL) * g3map->tileX * g3map->tileY *
+ g3map->tileZ;
+
+ if (G_asprintf(&line, " Tile size in memory: %ld Bytes",
+ (long)(tileSize)) > 0)
+ printline(line);
+ else
+ G_fatal_error(_("Cannot allocate memory for string"));
+
+ if (G_asprintf(&line, " Number of tiles in x, y and z: %d, %d, %d",
+ 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",
+ g3map->tileX, g3map->tileY,
+ g3map->tileZ) > 0)
+ printline(line);
+ else
+ G_fatal_error(_("Cannot allocate memory for string"));
+
+ printline("");
+
+ if (G_asprintf
+ (&line, " Projection: %s (zone %d)",
+ G_database_projection_name(), G_zone()) > 0)
+ printline(line);
+ else
+ G_fatal_error(_("Cannot allocate memory for string"));
+
+ G_format_northing(cellhd.north, tmp1, cellhd.proj);
+ G_format_northing(cellhd.south, tmp2, cellhd.proj);
+ G_format_resolution(cellhd.ns_res, tmp3, cellhd.proj);
+ if (G_asprintf
+ (&line, " N: %10s S: %10s Res: %5s", tmp1,
+ tmp2, tmp3) > 0)
+ printline(line);
+ else
+ G_fatal_error(_("Cannot allocate memory for string"));
+
+ G_format_easting(cellhd.east, tmp1, cellhd.proj);
+ G_format_easting(cellhd.west, tmp2, cellhd.proj);
+ G_format_resolution(cellhd.ew_res, tmp3, cellhd.proj);
+ if (G_asprintf
+ (&line, " E: %10s W: %10s Res: %5s", tmp1,
+ tmp2, tmp3) > 0)
+ printline(line);
+ else
+ G_fatal_error(_("Cannot allocate memory for string"));
+
+ format_double(cellhd.top, tmp1);
+ format_double(cellhd.bottom, tmp2);
+ format_double(cellhd.tb_res, tmp3);
+ if (G_asprintf
+ (&line, " T: %10s B: %10s Res: %5s", tmp1,
+ tmp2, tmp3) > 0)
+ printline(line);
+ else
+ G_fatal_error(_("Cannot allocate memory for string"));
+ 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)
+ sprintf(tmp1, "%s", "NULL");
+ else
+ format_double(dmin, tmp1);
+ if(dmax != dmax)
+ sprintf(tmp2, "%s", "NULL");
+ else
+ format_double(dmax, tmp2);
+
+ if (G_asprintf
+ (&line, " Range of data: min = %10s max = %10s", tmp1,
+ tmp2) > 0)
+ printline(line);
+ else
+ G_fatal_error(_("Cannot allocate memory for string"));
+ }
+
+ printline("");
+
+ if (hist_ok) {
+ printline(" Data Source:");
+ if (G_asprintf(&line, " %s", Rast_get_history(&hist, HIST_DATSRC_1)) > 0)
+ printline(line);
+ else
+ G_fatal_error(_("Cannot allocate memory for string"));
+
+ if (G_asprintf(&line, " %s", Rast_get_history(&hist, HIST_DATSRC_2)) > 0)
+ printline(line);
+ else
+ G_fatal_error(_("Cannot allocate memory for string"));
+
+ printline("");
+
+ printline(" Data Description:");
+ if (G_asprintf(&line, " %s", Rast_get_history(&hist, HIST_KEYWRD)) > 0)
+ printline(line);
+ else
+ G_fatal_error(_("Cannot allocate memory for string"));
+
+ printline("");
+ if (Rast_history_length(&hist)) {
+ printline(" Comments: ");
+
+ for (i = 0; i < Rast_history_length(&hist); i++)
+
+ /**************************************/
+ {
+ if (G_asprintf(&line, " %s", Rast_history_line(&hist, i)) > 0)
+ printline(line);
+ else
+ G_fatal_error(_("Cannot allocate memory for string"));
+
+ }
+ }
+
+ printline("");
+ }
+
+ divider('+');
+
+ fprintf(out, "\n");
+ }
+ else {/* Print information in shell style*/
+ if (gflag->answer) {
+ sprintf(tmp1, "%f", cellhd.north);
+ sprintf(tmp2, "%f", cellhd.south);
+ G_trim_decimal(tmp1);
+ G_trim_decimal(tmp2);
+ fprintf(out, "north=%s\n", tmp1);
+ fprintf(out, "south=%s\n", tmp2);
+
+ sprintf(tmp1, "%f", cellhd.east);
+ sprintf(tmp2, "%f", cellhd.west);
+ G_trim_decimal(tmp1);
+ G_trim_decimal(tmp2);
+ fprintf(out, "east=%s\n", tmp1);
+ fprintf(out, "west=%s\n", tmp2);
+
+ fprintf(out, "bottom=%g\n", cellhd.bottom);
+ fprintf(out, "top=%g\n", cellhd.top);
+
+ 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);
+
+ fprintf(out, "tbres=%g\n", cellhd.tb_res);
+
+ fprintf(out, "rows=%d\n", cellhd.rows);
+ fprintf(out, "cols=%d\n", cellhd.cols);
+ fprintf(out, "depths=%d\n", cellhd.depths);
+
+ 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\"\n", 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);
+
+ 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));
+ fprintf(out, "Data Description:\n");
+ fprintf(out, " %s\n", Rast_get_history(&hist, HIST_KEYWRD));
+ if (Rast_history_length(&hist)) {
+ fprintf(out, "Comments:\n");
+ for (i = 0; i < Rast_history_length(&hist); i++)
+ fprintf(out, " %s\n", Rast_history_line(&hist, i));
+ }
+ }
+ else {
+ G_fatal_error(_("Error while reading history file"));
+ }
+ }
+ }
+
+ /*Close the opened map */
+ if (!Rast3d_close(g3map))
+ G_fatal_error(_("Unable to close 3D raster map <%s>"), name);
+
+
+ return 0;
+}
+
+/**************************************************************************/
+int format_double(double value, char *buf)
+{
+
+ sprintf(buf, "%.8f", value);
+ G_trim_decimal(buf);
+ return 0;
+}
Deleted: grass/branches/releasebranch_7_0/raster3d/r3.info/r3.info.main.c
===================================================================
--- grass/branches/releasebranch_7_0/raster3d/r3.info/r3.info.main.c 2015-01-09 01:01:59 UTC (rev 64023)
+++ grass/branches/releasebranch_7_0/raster3d/r3.info/r3.info.main.c 2015-01-09 08:35:55 UTC (rev 64024)
@@ -1,496 +0,0 @@
-
-/***************************************************************************
-*
-* MODULE: r3.info
-*
-* AUTHOR(S): Roman Waupotitsch, Michael Shapiro, Helena Mitasova, Bill Brown,
-* Lubos Mitas, Jaro Hofierka
-*
-* PURPOSE: Outputs basic information about a user-specified 3D raster map layer.
-*
-* COPYRIGHT: (C) 2005 by the GRASS Development Team
-*
-* This program is free software under the GNU General Public
-* License (>=v2). Read the file COPYING that comes with GRASS
-* for details.
-*
-*****************************************************************************/
-
-/* \todo
- * History support still not full implemented.
- * Only parts of the timestep functionality are implemented, the timzone is missed ;).
- */
-
-/*local prototype */
-int format_double(double value, char *buf);
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <grass/gis.h>
-#include <grass/raster3d.h>
-#include <grass/glocale.h>
-
-#define printline(x) fprintf (out," | %-74.74s |\n",x)
-#define divider(x) \
- fprintf (out," %c",x);\
- for (i = 0; i < 76; i++)\
- fprintf(out,"-");\
- fprintf (out,"%c\n",x)
-
-#define TMP_LENGTH 100
-
-static char *name;
-
-/**************************************************************************/
-int main(int argc, char *argv[])
-{
- const char *mapset;
- char *line = NULL;
- char tmp1[TMP_LENGTH], tmp2[TMP_LENGTH], tmp3[TMP_LENGTH];
- char timebuff[256];
- int i;
- FILE *out;
- RASTER3D_Region cellhd;
- RASTER3D_Map *g3map;
- struct Categories cats;
- struct History hist;
- struct TimeStamp ts;
- int head_ok;
- int cats_ok;
- int hist_ok;
- int time_ok = 0, first_time_ok = 0, second_time_ok = 0;
- struct Option *opt1;
- struct Flag *rflag;
- struct Flag *gflag;
- struct Flag *hflag;
- int data_type;
-
- struct GModule *module;
- double dmin, dmax;
-
- G_gisinit(argv[0]);
-
- module = G_define_module();
- G_add_keyword(_("raster3d"));
- G_add_keyword(_("metadata"));
- G_add_keyword(_("extent"));
- G_add_keyword(_("voxel"));
- module->description =
- _("Outputs basic information about a user-specified 3D raster map layer.");
-
- opt1 = G_define_standard_option(G_OPT_R3_MAP);
-
- gflag = G_define_flag();
- gflag->key = 'g';
- gflag->description = _("Print raster3d information in shell style");
-
- 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 raster history instead of info");
-
- if (G_parser(argc, argv))
- exit(EXIT_FAILURE);
-
- name = G_store(opt1->answer);
- mapset = G_find_raster3d(name, "");
-
- if (mapset == NULL)
- G_fatal_error(_("3D Raster map <%s> not found"), name);
-
- /*We need to open the map */
- g3map =
- Rast3d_open_cell_old(name, mapset, RASTER3D_DEFAULT_WINDOW,
- RASTER3D_TILE_SAME_AS_FILE, RASTER3D_NO_CACHE);
- if (NULL == g3map)
- G_fatal_error(_("Unable to open 3D raster map <%s>"), name);
-
- /*Get the maptype */
- data_type = Rast3d_file_type_map(g3map);
- head_ok = Rast3d_read_region_map(name, mapset, &cellhd) >= 0;
- hist_ok = Rast3d_read_history(name, mapset, &hist) >= 0;
- cats_ok = Rast3d_read_cats(name, mapset, &cats) >= 0;
- /*Check the Timestamp */
- time_ok = G_read_raster3d_timestamp(name, mapset, &ts) > 0;
-
- /*Check for valid entries, show none if no entire available! */
- if (time_ok) {
- if (ts.count > 0)
- first_time_ok = 1;
- if (ts.count > 1)
- second_time_ok = 1;
- }
-
- out = stdout;
-
- /*Show the info if no flag is set */
- if (!rflag->answer && !gflag->answer && !hflag->answer) {
- divider('+');
-
- if (G_asprintf(&line, "Layer: %-29.29s Date: %s", name,
- hist_ok ? Rast_get_history(&hist, HIST_MAPID) : "??") > 0)
- printline(line);
- else
- G_fatal_error(_("Cannot allocate memory for string"));
-
-
- if (G_asprintf(&line, "Mapset: %-29.29s Login of Creator: %s", mapset,
- hist_ok ? Rast_get_history(&hist, HIST_CREATOR) : "??") > 0)
- printline(line);
- else
- G_fatal_error(_("Cannot allocate memory for string"));
-
-
- if (G_asprintf(&line, "Location: %s", G_location()) > 0)
- printline(line);
- else
- G_fatal_error(_("Cannot allocate memory for string"));
-
- if (G_asprintf(&line, "DataBase: %s", G_gisdbase()) > 0)
- printline(line);
- else
- G_fatal_error(_("Cannot allocate memory for string"));
-
- 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)) {
-
- G_format_timestamp(&ts, timebuff);
-
- /*Create the r.info timestamp string */
- if (G_asprintf(&line, "Timestamp: %s", timebuff) > 0)
- printline(line);
- else
- G_fatal_error(_("Cannot allocate memory for string"));
- }
- else {
- if (G_asprintf(&line, "Timestamp: none") > 0)
- printline(line);
- else
- G_fatal_error(_("Cannot allocate memory for string"));
- }
-
-
- divider('|');
- printline("");
-
- if (cats_ok) {
- format_double((double)cats.num, tmp1);
- }
-
- if (G_asprintf(&line, " Type of Map: %-20.20s Number of Categories: %-9s",
- "3d cell", cats_ok ? tmp1 : "??") > 0)
- printline(line);
- else
- G_fatal_error(_("Cannot allocate memory for string"));
-
- if (G_asprintf(&line, " Data Type: %s",
- (data_type == FCELL_TYPE ? "FCELL" :
- (data_type == DCELL_TYPE ? "DCELL" : "??"))) > 0)
- printline(line);
- else
- G_fatal_error(_("Cannot allocate memory for string"));
-
-
- if (head_ok) {
- if (G_asprintf(&line, " Rows: %d", cellhd.rows) > 0)
- printline(line);
- else
- G_fatal_error(_("Cannot allocate memory for string"));
-
- if (G_asprintf(&line, " Columns: %d", cellhd.cols) > 0)
- printline(line);
- else
- G_fatal_error(_("Cannot allocate memory for string"));
-
- if (G_asprintf(&line, " Depths: %d", cellhd.depths) > 0)
- printline(line);
- else
- G_fatal_error(_("Cannot allocate memory for string"));
-
- if (G_asprintf
- (&line, " Total Cells: %ld",
- (long)cellhd.rows * cellhd.cols * cellhd.depths) > 0)
- printline(line);
- else
- G_fatal_error(_("Cannot allocate memory for string"));
-
- double totalSize = 0;
- for(i = 0; i < g3map->nTiles; i++)
- totalSize += g3map->tileLength[i];
-
- if (G_asprintf(&line, " Total size: %ld Bytes",
- (long)(totalSize)) > 0)
- printline(line);
- else
- G_fatal_error(_("Cannot allocate memory for string"));
-
- if (G_asprintf(&line, " Number of tiles: %d",
- 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/g3map->nTiles)) > 0)
- printline(line);
- else
- G_fatal_error(_("Cannot allocate memory for string"));
-
- int tileSize = 0;
-
- if(data_type == FCELL_TYPE)
- tileSize = sizeof(FCELL) * g3map->tileX * g3map->tileY *
- ((RASTER3D_Map* )g3map)->tileZ;
-
- if(data_type == DCELL_TYPE)
- tileSize = sizeof(DCELL) * g3map->tileX * g3map->tileY *
- g3map->tileZ;
-
- if (G_asprintf(&line, " Tile size in memory: %ld Bytes",
- (long)(tileSize)) > 0)
- printline(line);
- else
- G_fatal_error(_("Cannot allocate memory for string"));
-
- if (G_asprintf(&line, " Number of tiles in x, y and z: %d, %d, %d",
- 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",
- g3map->tileX, g3map->tileY,
- g3map->tileZ) > 0)
- printline(line);
- else
- G_fatal_error(_("Cannot allocate memory for string"));
-
- printline("");
-
- if (G_asprintf
- (&line, " Projection: %s (zone %d)",
- G_database_projection_name(), G_zone()) > 0)
- printline(line);
- else
- G_fatal_error(_("Cannot allocate memory for string"));
-
- G_format_northing(cellhd.north, tmp1, cellhd.proj);
- G_format_northing(cellhd.south, tmp2, cellhd.proj);
- G_format_resolution(cellhd.ns_res, tmp3, cellhd.proj);
- if (G_asprintf
- (&line, " N: %10s S: %10s Res: %5s", tmp1,
- tmp2, tmp3) > 0)
- printline(line);
- else
- G_fatal_error(_("Cannot allocate memory for string"));
-
- G_format_easting(cellhd.east, tmp1, cellhd.proj);
- G_format_easting(cellhd.west, tmp2, cellhd.proj);
- G_format_resolution(cellhd.ew_res, tmp3, cellhd.proj);
- if (G_asprintf
- (&line, " E: %10s W: %10s Res: %5s", tmp1,
- tmp2, tmp3) > 0)
- printline(line);
- else
- G_fatal_error(_("Cannot allocate memory for string"));
-
- format_double(cellhd.top, tmp1);
- format_double(cellhd.bottom, tmp2);
- format_double(cellhd.tb_res, tmp3);
- if (G_asprintf
- (&line, " T: %10s B: %10s Res: %5s", tmp1,
- tmp2, tmp3) > 0)
- printline(line);
- else
- G_fatal_error(_("Cannot allocate memory for string"));
- 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)
- sprintf(tmp1, "%s", "NULL");
- else
- format_double(dmin, tmp1);
- if(dmax != dmax)
- sprintf(tmp2, "%s", "NULL");
- else
- format_double(dmax, tmp2);
-
- if (G_asprintf
- (&line, " Range of data: min = %10s max = %10s", tmp1,
- tmp2) > 0)
- printline(line);
- else
- G_fatal_error(_("Cannot allocate memory for string"));
- }
-
- printline("");
-
- if (hist_ok) {
- printline(" Data Source:");
- if (G_asprintf(&line, " %s", Rast_get_history(&hist, HIST_DATSRC_1)) > 0)
- printline(line);
- else
- G_fatal_error(_("Cannot allocate memory for string"));
-
- if (G_asprintf(&line, " %s", Rast_get_history(&hist, HIST_DATSRC_2)) > 0)
- printline(line);
- else
- G_fatal_error(_("Cannot allocate memory for string"));
-
- printline("");
-
- printline(" Data Description:");
- if (G_asprintf(&line, " %s", Rast_get_history(&hist, HIST_KEYWRD)) > 0)
- printline(line);
- else
- G_fatal_error(_("Cannot allocate memory for string"));
-
- printline("");
- if (Rast_history_length(&hist)) {
- printline(" Comments: ");
-
- for (i = 0; i < Rast_history_length(&hist); i++)
-
- /**************************************/
- {
- if (G_asprintf(&line, " %s", Rast_history_line(&hist, i)) > 0)
- printline(line);
- else
- G_fatal_error(_("Cannot allocate memory for string"));
-
- }
- }
-
- printline("");
- }
-
- divider('+');
-
- fprintf(out, "\n");
- }
- else {/* Print information in shell style*/
- if (gflag->answer) {
- sprintf(tmp1, "%f", cellhd.north);
- sprintf(tmp2, "%f", cellhd.south);
- G_trim_decimal(tmp1);
- G_trim_decimal(tmp2);
- fprintf(out, "north=%s\n", tmp1);
- fprintf(out, "south=%s\n", tmp2);
-
- sprintf(tmp1, "%f", cellhd.east);
- sprintf(tmp2, "%f", cellhd.west);
- G_trim_decimal(tmp1);
- G_trim_decimal(tmp2);
- fprintf(out, "east=%s\n", tmp1);
- fprintf(out, "west=%s\n", tmp2);
-
- fprintf(out, "bottom=%g\n", cellhd.bottom);
- fprintf(out, "top=%g\n", cellhd.top);
-
- 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);
-
- fprintf(out, "tbres=%g\n", cellhd.tb_res);
-
- fprintf(out, "rows=%d\n", cellhd.rows);
- fprintf(out, "cols=%d\n", cellhd.cols);
- fprintf(out, "depths=%d\n", cellhd.depths);
-
- 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\"\n", 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);
-
- 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));
- fprintf(out, "Data Description:\n");
- fprintf(out, " %s\n", Rast_get_history(&hist, HIST_KEYWRD));
- if (Rast_history_length(&hist)) {
- fprintf(out, "Comments:\n");
- for (i = 0; i < Rast_history_length(&hist); i++)
- fprintf(out, " %s\n", Rast_history_line(&hist, i));
- }
- }
- else {
- G_fatal_error(_("Error while reading history file"));
- }
- }
- }
-
- /*Close the opened map */
- if (!Rast3d_close(g3map))
- G_fatal_error(_("Unable to close 3D raster map <%s>"), name);
-
-
- return 0;
-}
-
-/**************************************************************************/
-int format_double(double value, char *buf)
-{
-
- sprintf(buf, "%.8f", value);
- G_trim_decimal(buf);
- return 0;
-}
More information about the grass-commit
mailing list