diff --git a/general/g.region/main.c b/general/g.region/main.c index b03d79f5cc9..06c33a2e8ce 100644 --- a/general/g.region/main.c +++ b/general/g.region/main.c @@ -371,6 +371,7 @@ int main(int argc, char *argv[]) flag.eprint, flag.center, flag.gmt_style, flag.wms_style, flag.dist_res, flag.nangle, flag.z, flag.bbox, flag.gprint, parm.save, NULL); + G_option_requires(flag.flprint, flag.gprint, NULL); if (G_parser(argc, argv)) exit(EXIT_FAILURE); diff --git a/general/g.region/printwindow.c b/general/g.region/printwindow.c index 6c065cc297b..dc2b8b3de55 100644 --- a/general/g.region/printwindow.c +++ b/general/g.region/printwindow.c @@ -34,8 +34,11 @@ void print_window(struct Cell_head *window, int print_flag, int flat_flag) double ew_dist1, ew_dist2, ns_dist1, ns_dist2; double longitude, latitude; - if (print_flag & PRINT_SH) + if (print_flag & PRINT_SH) { x = G_projection() == PROJECTION_LL ? -1 : 0; + if (flat_flag) + sep = " "; + } else x = window->proj; @@ -97,8 +100,8 @@ void print_window(struct Cell_head *window, int print_flag, int flat_flag) prj = "** unknown **"; if (print_flag & PRINT_SH) { - fprintf(stdout, "projection=%d\n", window->proj); - fprintf(stdout, "zone=%d\n", window->zone); + fprintf(stdout, "projection=%d%s", window->proj, sep); + fprintf(stdout, "zone=%d%s", window->zone, sep); } else { fprintf(stdout, "%-*s %d (%s)\n", width, @@ -122,13 +125,13 @@ void print_window(struct Cell_head *window, int print_flag, int flat_flag) if (print_flag & PRINT_SH) { if (datum[0] != '*') - fprintf(stdout, "datum=%s\n", datum); + fprintf(stdout, "datum=%s%s", datum, sep); else - fprintf(stdout, "datum=wgs84\n"); + fprintf(stdout, "datum=wgs84%s", sep); if (ellps[0] != '*') - fprintf(stdout, "ellipsoid=%s\n", ellps); + fprintf(stdout, "ellipsoid=%s%s", ellps, sep); else - fprintf(stdout, "ellipsoid=wgs84\n"); + fprintf(stdout, "ellipsoid=wgs84%s", sep); } else { @@ -144,8 +147,6 @@ void print_window(struct Cell_head *window, int print_flag, int flat_flag) } if (print_flag & PRINT_SH) { - if (flat_flag) - sep = " "; fprintf(stdout, "n=%s%s", north, sep); fprintf(stdout, "s=%s%s", south, sep); fprintf(stdout, "w=%s%s", west, sep); @@ -187,8 +188,6 @@ void print_window(struct Cell_head *window, int print_flag, int flat_flag) (long)window->rows3 * window->cols3 * window->depths, sep); #endif - if (flat_flag) - fprintf(stdout, "\n"); } else { fprintf(stdout, "%-*s %s\n", width, "north:", north); @@ -339,12 +338,16 @@ void print_window(struct Cell_head *window, int print_flag, int flat_flag) lac = latitude; if (print_flag & PRINT_SH) { - fprintf(stdout, "nw_long=%.8f\nnw_lat=%.8f\n", lo1, la1); - fprintf(stdout, "ne_long=%.8f\nne_lat=%.8f\n", lo2, la2); - fprintf(stdout, "se_long=%.8f\nse_lat=%.8f\n", lo3, la3); - fprintf(stdout, "sw_long=%.8f\nsw_lat=%.8f\n", lo4, la4); - fprintf(stdout, "center_long=%.8f\n", loc); - fprintf(stdout, "center_lat=%.8f\n", lac); + fprintf(stdout, "nw_long=%.8f%snw_lat=%.8f%s", lo1, sep, la1, + sep); + fprintf(stdout, "ne_long=%.8f%sne_lat=%.8f%s", lo2, sep, la2, + sep); + fprintf(stdout, "se_long=%.8f%sse_lat=%.8f%s", lo3, sep, la3, + sep); + fprintf(stdout, "sw_long=%.8f%ssw_lat=%.8f%s", lo4, sep, la4, + sep); + fprintf(stdout, "center_long=%.8f%s", loc, sep); + fprintf(stdout, "center_lat=%.8f%s", lac, sep); } else { G_format_easting(lo1, buf, PROJECTION_LL); @@ -380,8 +383,8 @@ void print_window(struct Cell_head *window, int print_flag, int flat_flag) if (!(print_flag & PRINT_REG)) { if (print_flag & PRINT_SH) { - fprintf(stdout, "rows=%d\n", window->rows); - fprintf(stdout, "cols=%d\n", window->cols); + fprintf(stdout, "rows=%d%s", window->rows, sep); + fprintf(stdout, "cols=%d%s", window->cols, sep); } else { fprintf(stdout, "%-*s %d\n", width, "rows:", window->rows); @@ -404,8 +407,9 @@ void print_window(struct Cell_head *window, int print_flag, int flat_flag) /* flag.eprint */ if (print_flag & PRINT_EXTENT) { if (print_flag & PRINT_SH) { - fprintf(stdout, "ns_extent=%f\n", window->north - window->south); - fprintf(stdout, "ew_extent=%f\n", window->east - window->west); + fprintf(stdout, "ns_extent=%f%s", window->north - window->south, + sep); + fprintf(stdout, "ew_extent=%f%s", window->east - window->west, sep); } else { if (G_projection() != PROJECTION_LL) { @@ -428,10 +432,10 @@ void print_window(struct Cell_head *window, int print_flag, int flat_flag) /* flag.center */ if (print_flag & PRINT_CENTER) { if (print_flag & PRINT_SH) { - fprintf(stdout, "center_easting=%f\n", - (window->west + window->east) / 2.); - fprintf(stdout, "center_northing=%f\n", - (window->north + window->south) / 2.); + fprintf(stdout, "center_easting=%f%s", + (window->west + window->east) / 2., sep); + fprintf(stdout, "center_northing=%f%s", + (window->north + window->south) / 2., sep); } else { if (G_projection() != PROJECTION_LL) { @@ -461,7 +465,7 @@ void print_window(struct Cell_head *window, int print_flag, int flat_flag) G_format_northing(window->south, south, -1); G_format_easting(window->east, east, -1); G_format_easting(window->west, west, -1); - fprintf(stdout, "bbox=%s,%s,%s,%s\n", west, south, east, north); + fprintf(stdout, "bbox=%s,%s,%s,%s%s", west, south, east, north, sep); } /* flag.nangle */ @@ -537,7 +541,7 @@ void print_window(struct Cell_head *window, int print_flag, int flat_flag) } if (print_flag & PRINT_SH) - fprintf(stdout, "converge_angle=%f\n", convergence); + fprintf(stdout, "converge_angle=%f%s", convergence, sep); else fprintf(stdout, "%-*s %f\n", width, "convergence angle:", convergence); @@ -719,13 +723,14 @@ void print_window(struct Cell_head *window, int print_flag, int flat_flag) /* print the largest bounding box */ if (print_flag & PRINT_SH) { - fprintf(stdout, "ll_n=%.8f\n", sh_ll_n); - fprintf(stdout, "ll_s=%.8f\n", sh_ll_s); - fprintf(stdout, "ll_w=%.8f\n", sh_ll_w); - fprintf(stdout, "ll_e=%.8f\n", sh_ll_e); + fprintf(stdout, "ll_n=%.8f%s", sh_ll_n, sep); + fprintf(stdout, "ll_s=%.8f%s", sh_ll_s, sep); + fprintf(stdout, "ll_w=%.8f%s", sh_ll_w, sep); + fprintf(stdout, "ll_e=%.8f%s", sh_ll_e, sep); /* center of the largest bounding box */ - fprintf(stdout, "ll_clon=%.8f\n", loc); - fprintf(stdout, "ll_clat=%.8f\n", (sh_ll_n + sh_ll_s) / 2.); + fprintf(stdout, "ll_clon=%.8f%s", loc, sep); + fprintf(stdout, "ll_clat=%.8f%s", (sh_ll_n + sh_ll_s) / 2., + sep); } else { G_format_northing(sh_ll_n, buf, PROJECTION_LL); @@ -755,4 +760,7 @@ void print_window(struct Cell_head *window, int print_flag, int flat_flag) "XY system")); } } + + if (flat_flag) + fprintf(stdout, "\n"); } diff --git a/general/g.region/testsuite/test_g_region.py b/general/g.region/testsuite/test_g_region.py index 262e01c20bb..b2f9d8aa83e 100644 --- a/general/g.region/testsuite/test_g_region.py +++ b/general/g.region/testsuite/test_g_region.py @@ -3,6 +3,7 @@ @author Anna Petrasova """ from grass.gunittest.case import TestCase +from grass.gunittest.gmodules import call_module import grass.script as gs @@ -40,6 +41,10 @@ def test_d_flag(self): self.assertEqual(n_default, region["n"]) self.assertEqual(res_default, region["nsres"]) + def test_f_flag(self): + line = call_module("g.region", flags="fglecn3", capture_stdout=True) + self.assertEqual(1, len(line.splitlines())) + if __name__ == "__main__": from grass.gunittest.main import test