[GRASS-SVN] r43627 - grass/branches/releasebranch_6_4/vector/v.what
svn_grass at osgeo.org
svn_grass at osgeo.org
Wed Sep 22 14:39:12 EDT 2010
Author: neteler
Date: 2010-09-22 18:39:12 +0000 (Wed, 22 Sep 2010)
New Revision: 43627
Modified:
grass/branches/releasebranch_6_4/vector/v.what/description.html
grass/branches/releasebranch_6_4/vector/v.what/main.c
grass/branches/releasebranch_6_4/vector/v.what/what.c
grass/branches/releasebranch_6_4/vector/v.what/what.h
Log:
backport: shell script style output added
Modified: grass/branches/releasebranch_6_4/vector/v.what/description.html
===================================================================
--- grass/branches/releasebranch_6_4/vector/v.what/description.html 2010-09-22 18:38:00 UTC (rev 43626)
+++ grass/branches/releasebranch_6_4/vector/v.what/description.html 2010-09-22 18:39:12 UTC (rev 43627)
@@ -4,7 +4,8 @@
Outputs the category number value(s) associated with user-specified location(s)
in user-specified vector map layer(s). This module was derived from the
<em>d.what.vect</em> module by removing all interactive code and
-modification of the output for easy parsing.
+modification of the output for easy parsing. Using the <em>-g</em> flag permits to
+generate script style output which is easily parsable.
<P>
This module always reports standard acres, even when the location uses
US Survey feet as the map unit.
Modified: grass/branches/releasebranch_6_4/vector/v.what/main.c
===================================================================
--- grass/branches/releasebranch_6_4/vector/v.what/main.c 2010-09-22 18:38:00 UTC (rev 43626)
+++ grass/branches/releasebranch_6_4/vector/v.what/main.c 2010-09-22 18:39:12 UTC (rev 43627)
@@ -36,7 +36,7 @@
int main(int argc, char **argv)
{
- struct Flag *printattributes, *topo_flag;
+ struct Flag *printattributes, *topo_flag, *shell_flag;
struct Option *opt1, *coords_opt, *maxdistance;
struct Cell_head window;
struct GModule *module;
@@ -84,6 +84,10 @@
printattributes->key = 'a';
printattributes->description = _("Print attribute information");
+ shell_flag = G_define_flag();
+ shell_flag->key = 'g';
+ shell_flag->description = _("Print the stats in shell script style");
+
if ((argc > 1 || !vect) && G_parser(argc, argv))
exit(EXIT_FAILURE);
@@ -168,7 +172,7 @@
ret = sscanf(buf, "%lf%c%lf", &xval, &ch, &yval);
if (ret == 3 && (ch == ',' || ch == ' ' || ch == '\t')) {
what(xval, yval, maxd, width, mwidth, topo_flag->answer,
- printattributes->answer);
+ printattributes->answer, shell_flag->answer);
}
else {
G_warning(_("Unknown input format, skipping: '%s'"), buf);
@@ -182,7 +186,7 @@
xval = atof(coords_opt->answers[i]);
yval = atof(coords_opt->answers[i + 1]);
what(xval, yval, maxd, width, mwidth, topo_flag->answer,
- printattributes->answer);
+ printattributes->answer, shell_flag->answer);
}
}
Modified: grass/branches/releasebranch_6_4/vector/v.what/what.c
===================================================================
--- grass/branches/releasebranch_6_4/vector/v.what/what.c 2010-09-22 18:38:00 UTC (rev 43626)
+++ grass/branches/releasebranch_6_4/vector/v.what/what.c 2010-09-22 18:39:12 UTC (rev 43627)
@@ -15,7 +15,7 @@
#define WDTH 5
int what(double east, double north, double maxdist, int width,
- int mwidth, int topo, int showextra)
+ int mwidth, int topo, int showextra, int script)
{
int type;
char east_buf[40], north_buf[40];
@@ -38,7 +38,7 @@
/* always use plain feet not US survey ft */
/* if you really want USfeet, try G_database_units_to_meters_factor()
- here, but then watch that sq_miles is not affected too */
+ here, but then watch that sq_miles is not affected too */
sqm_to_sqft = 1 / ( 0.0254 * 0.0254 * 12 * 12 );
@@ -52,8 +52,7 @@
maxdist, 0, 0);
if (line == 0) {
line = Vect_find_line(&Map[i], east, north, 0.0,
- GV_LINE | GV_BOUNDARY | GV_FACE, maxdist, 0,
- 0);
+ GV_LINE | GV_BOUNDARY | GV_FACE, maxdist, 0, 0);
}
if (line == 0) {
@@ -67,8 +66,14 @@
G_format_easting(east, east_buf, G_projection());
G_format_northing(north, north_buf, G_projection());
if (line + area > 0 || G_verbose() >= G_verbose_std()) {
- fprintf(stdout, "\nEast: %s\nNorth: %s\n", east_buf,
- north_buf);
+ if (script) {
+ fprintf(stdout, "East=%s\nNorth=%s\n", east_buf,
+ north_buf);
+ }
+ else {
+ fprintf(stdout, "\nEast: %s\nNorth: %s\n", east_buf,
+ north_buf);
+ }
if (notty)
fprintf(stderr, "\nEast: %s\nNorth: %s\n", east_buf,
north_buf);
@@ -81,11 +86,15 @@
*str = 0;
if (line + area > 0 || G_verbose() >= G_verbose_std()) {
- /* fprintf(stdout, "Map: %*s \nMapset: %-*s\n", width, Map[i].name, mwidth, Map[i].mapset); */
- fprintf(stdout, "\nMap: %s \nMapset: %s\n", Map[i].name,
- Map[i].mapset);
+ if (script) {
+ fprintf(stdout, "Map=%s\nMapset=%s\n", Map[i].name,
+ Map[i].mapset);
+ }
+ else {
+ fprintf(stdout, "\nMap: %s \nMapset: %s\n", Map[i].name,
+ Map[i].mapset);
+ }
if (notty)
- /* fprintf(stderr, "Map: %*s \nMapset: %-*s\n", width, Map[i].name, mwidth, Map[i].mapset); */
fprintf(stderr, "\nMap: %s \nMapset: %s\n", Map[i].name,
Map[i].mapset);
}
@@ -135,18 +144,27 @@
float angle;
Vect_get_line_areas(&(Map[i]), line, &left, &right);
- fprintf(stdout, "Looking for features within: %f\n",
- maxdist);
- fprintf(stdout,
- _("Id: %d\nType: %s\nLeft: %d\nRight: %d\n"),
- line, buf, left, right);
+ if (script) {
+ fprintf(stdout, "Feature_max_distance=%f\n", maxdist);
+ fprintf(stdout,
+ "Id=%d\nType=%s\nLeft=%d\nRight=%d\n",
+ line, buf, left, right);
+ }
+ else {
+ fprintf(stdout, "Looking for features within: %f\n",
+ maxdist);
+ fprintf(stdout,
+ _("Id: %d\nType: %s\nLeft: %d\nRight: %d\n"),
+ line, buf, left, right);
+ }
if (type & GV_LINES) {
nnodes = 2;
fprintf(stdout, _("Length: %f\n"), l);
}
else { /* points */
nnodes = 1;
- fprintf(stdout, "\n");
+ if (!script)
+ fprintf(stdout, "\n");
}
Vect_get_line_nodes(&(Map[i]), line, &node[0], &node[1]);
@@ -157,26 +175,47 @@
nnlines = Vect_get_node_n_lines(&(Map[i]), node[n]);
Vect_get_node_coor(&(Map[i]), node[n], &nx, &ny, &nz);
- fprintf(stdout,
- _("Node[%d]: %d\nNumber of lines: %d\nCoordinates: %.6f, %.6f, %.6f\n"),
- n, node[n], nnlines, nx, ny, nz);
+ if (script) {
+ fprintf(stdout,
+ _("Node[%d]=%d\nNumber_lines=%d\nCoordinates=%.6f,%.6f,%.6f\n"),
+ n, node[n], nnlines, nx, ny, nz);
+ }
+ else {
+ fprintf(stdout,
+ _("Node[%d]: %d\nNumber of lines: %d\nCoordinates: %.6f, %.6f, %.6f\n"),
+ n, node[n], nnlines, nx, ny, nz);
+ }
for (nli = 0; nli < nnlines; nli++) {
nodeline =
Vect_get_node_line(&(Map[i]), node[n], nli);
angle =
Vect_get_node_line_angle(&(Map[i]), node[n], nli);
- fprintf(stdout, _("Id: %5d\nAngle: %.8f\n"),
- nodeline, angle);
+ if (script) {
+ fprintf(stdout, "Id=%5d\nAngle=%.8f\n",
+ nodeline, angle);
+ }
+ else {
+ fprintf(stdout, _("Id: %5d\nAngle: %.8f\n"),
+ nodeline, angle);
+ }
}
}
}
else {
- fprintf(stdout, _("Type: %s"), buf);
- fprintf(stdout, _("Id: %d\n"), line);
- if (type & GV_LINES)
- fprintf(stdout, _("Length: %f\n"), l);
+ if (script) {
+ fprintf(stdout, "Type=%s\n", buf);
+ fprintf(stdout, "Id=%d\n", line);
+ if (type & GV_LINES)
+ fprintf(stdout, "Length=%f\n", l);
+ }
+ else {
+ fprintf(stdout, _("Type: %s"), buf);
+ fprintf(stdout, _("Id: %d\n"), line);
+ if (type & GV_LINES)
+ fprintf(stdout, _("Length: %f\n"), l);
+ }
}
/* Height */
@@ -185,7 +224,13 @@
double min, max;
if (type & GV_POINTS) {
- fprintf(stdout, _("Point height: %f\n"), Points->z[0]);
+ if (script) {
+ fprintf(stdout, "Point_height=%f\n", Points->z[0]);
+ }
+ else {
+ fprintf(stdout, _("Point height: %f\n"),
+ Points->z[0]);
+ }
}
else if (type & GV_LINES) {
min = max = Points->z[0];
@@ -196,12 +241,24 @@
max = Points->z[j];
}
if (min == max) {
- fprintf(stdout, _("Line height: %f\n"), min);
+ if (script) {
+ fprintf(stdout, "Line_height=%f\n", min);
+ }
+ else {
+ fprintf(stdout, _("Line height: %f\n"), min);
+ }
}
else {
- fprintf(stdout,
- _("Line height min: %f\nLine height max: %f\n"),
- min, max);
+ if (script) {
+ fprintf(stdout,
+ "Line_height_min=%f\nLine_height_max=%f\n",
+ min, max);
+ }
+ else {
+ fprintf(stdout,
+ _("Line height min: %f\nLine height max: %f\n"),
+ min, max);
+ }
}
}
} /* if height */
@@ -209,11 +266,20 @@
if (area > 0) {
if (Map[i].head.with_z && getz) {
- fprintf(stdout, _("Type: Area\nArea height: %f\n"),
- z);
+ if (script) {
+ fprintf(stdout, "Type=Area\nArea_height=%f\n", z);
+ }
+ else {
+ fprintf(stdout, _("Type: Area\nArea height: %f\n"), z);
+ }
}
else {
- fprintf(stdout, _("Type: Area\n"));
+ if (script) {
+ fprintf(stdout, "Type=Area\n");
+ }
+ else {
+ fprintf(stdout, _("Type: Area\n"));
+ }
}
@@ -229,27 +295,52 @@
int nisles, isleidx, isle, isle_area;
nisles = Vect_get_area_num_isles(&Map[i], area);
- fprintf(stdout, _("Area: %d\nNumber of isles: %d\n"), area,
- nisles);
+ if (script) {
+ fprintf(stdout, "Area=%d\nNumber_isles=%d\n", area,
+ nisles);
+ }
+ else {
+ fprintf(stdout, _("Area: %d\nNumber of isles: %d\n"),
+ area, nisles);
+ }
for (isleidx = 0; isleidx < nisles; isleidx++) {
isle = Vect_get_area_isle(&Map[i], area, isleidx);
- fprintf(stdout, _("Isle[%d]: %d\n"), isleidx, isle);
+ if (script) {
+ fprintf(stdout, "Isle[%d]=%d\n", isleidx, isle);
+ }
+ else {
+ fprintf(stdout, _("Isle[%d]: %d\n"), isleidx, isle);
+ }
}
isle = Vect_find_island(&Map[i], east, north);
if (isle) {
isle_area = Vect_get_isle_area(&Map[i], isle);
- fprintf(stdout, _("Island: %d In area: %d\n"), isle,
- isle_area);
+ if (script) {
+ fprintf(stdout, "Island=%d\nIsland_area=%d\n", isle,
+ isle_area);
+ }
+ else {
+ fprintf(stdout, _("Island: %d In area: %d\n"), isle,
+ isle_area);
+ }
}
}
else {
- fprintf(stdout, _("Sq Meters: %.3f\nHectares: %.3f\n"),
- sq_meters, hectares);
- fprintf(stdout, _("Acres: %.3f\nSq Miles: %.4f\n"),
- acres, sq_miles);
+ if (script) {
+ fprintf(stdout, "Sq_Meters=%.3f\nHectares=%.3f\n",
+ sq_meters, hectares);
+ fprintf(stdout, "Acres=%.3f\nSq_Miles=%.4f\n",
+ acres, sq_miles);
+ }
+ else {
+ fprintf(stdout, _("Sq Meters: %.3f\nHectares: %.3f\n"),
+ sq_meters, hectares);
+ fprintf(stdout, _("Acres: %.3f\nSq Miles: %.4f\n"),
+ acres, sq_miles);
+ }
if (notty) {
fprintf(stderr,
_("Sq Meters: %.3f\nHectares: %.3f\n"),
@@ -268,23 +359,46 @@
if (Cats->n_cats > 0) {
int j;
+ char *formbuf1, *formbuf2;
for (j = 0; j < Cats->n_cats; j++) {
G_debug(2, "field = %d category = %d\n", Cats->field[j],
Cats->cat[j]);
- fprintf(stdout, _("Layer: %d\nCategory: %d\n"),
- Cats->field[j], Cats->cat[j]);
+ if (script) {
+ fprintf(stdout, "Layer=%d\nCategory=%d\n", Cats->field[j],
+ Cats->cat[j]);
+ }
+ else {
+ fprintf(stdout, _("Layer: %d\nCategory: %d\n"),
+ Cats->field[j], Cats->cat[j]);
+ }
Fi = Vect_get_field(&(Map[i]), Cats->field[j]);
if (Fi != NULL && showextra) {
int format = F_TXT, edit_mode = F_VIEW;
- fprintf(stdout,
- _("\nDriver: %s\nDatabase: %s\nTable: %s\nKey column: %s\n"),
- Fi->driver, Fi->database, Fi->table, Fi->key);
- F_generate(Fi->driver, Fi->database, Fi->table, Fi->key,
- Cats->cat[j], NULL, NULL, edit_mode, format,
- &form);
- fprintf(stdout, "%s", form);
+ if (script) {
+ fprintf(stdout,
+ "Driver=%s\nDatabase=%s\nTable=%s\nKey_column=%s\n",
+ Fi->driver, Fi->database, Fi->table, Fi->key);
+ }
+ else {
+ fprintf(stdout,
+ _("\nDriver: %s\nDatabase: %s\nTable: %s\nKey column: %s\n"),
+ Fi->driver, Fi->database, Fi->table, Fi->key);
+ }
+ F_generate(Fi->driver, Fi->database, Fi->table,
+ Fi->key, Cats->cat[j], NULL, NULL,
+ edit_mode, format, &form);
+
+ if (script) {
+ formbuf1 = G_str_replace(form, " : ", "=");
+ formbuf2 = G_str_replace(formbuf1, " ", "_");
+ fprintf(stdout, "%s", formbuf2);
+ G_free(formbuf1);
+ G_free(formbuf2);
+ }
+ else
+ fprintf(stdout, "%s", form);
G_free(form);
G_free(Fi);
}
Modified: grass/branches/releasebranch_6_4/vector/v.what/what.h
===================================================================
--- grass/branches/releasebranch_6_4/vector/v.what/what.h 2010-09-22 18:38:00 UTC (rev 43626)
+++ grass/branches/releasebranch_6_4/vector/v.what/what.h 2010-09-22 18:39:12 UTC (rev 43627)
@@ -1,5 +1,5 @@
/* what.c */
-extern int what(double, double, double, int, int, int, int);
+extern int what(double, double, double, int, int, int, int, int);
extern char **vect;
extern int nvects;
More information about the grass-commit
mailing list