[GRASS-SVN] r63799 - in grass/branches/releasebranch_7_0: . display/d.geodesic display/d.rhumbline

svn_grass at osgeo.org svn_grass at osgeo.org
Sun Dec 28 05:30:25 PST 2014


Author: neteler
Date: 2014-12-28 05:30:25 -0800 (Sun, 28 Dec 2014)
New Revision: 63799

Modified:
   grass/branches/releasebranch_7_0/
   grass/branches/releasebranch_7_0/display/d.geodesic/d.geodesic.html
   grass/branches/releasebranch_7_0/display/d.geodesic/d_geodesic.png
   grass/branches/releasebranch_7_0/display/d.geodesic/local_proto.h
   grass/branches/releasebranch_7_0/display/d.geodesic/main.c
   grass/branches/releasebranch_7_0/display/d.geodesic/plot.c
   grass/branches/releasebranch_7_0/display/d.rhumbline/main.c
Log:
d.geodesic: hardcoded miles changed to units choice; new screenshot (related to trac #2417); d.rhumbline: minor sync with d.geodesic (trunk, r63798)


Property changes on: grass/branches/releasebranch_7_0
___________________________________________________________________
Modified: svn:mergeinfo
   - /grass/trunk:60817,61096,61141,61994,62105,62179-62180,62182,62190,62403,62422,62424,62437,62466,62469,62487,62491,62494,62501,62506,62508-62509,62515,62518-62519,62521,62526,62533,62539,62541,62555,62562,62566,62570,62573,62575,62585,62588,62597,62603,62606,62608-62609,62614,62618,62628,62632,62638,62642,62648-62649,62652,62654-62657,62666,62691,62705,62709,62723,62730,62739,62741,62743,62746,62750-62752,62757,62762,62785,62798,62800-62801,62803,62805,62812,62822,62824,62828,62831,62838,62845,62847,62850,62856,62879,62881,62886,62904,62907-62908,62910,62912,62914,62916,62918,62920,62925,62932-62933,62935,62940,62942,62944-62946,62949,62955-62956,62958,62960,62962,62964,62966-62968,62970,62973,62975,62977,62981,62983,62985,62987,62989,62991,62993,62995,62997,62999-63000,63003,63005,63007,63009,63011,63013,63015,63017,63020,63022,63024,63026,63028-63031,63033,63035,63037,63040,63043-63044,63047,63049,63051,63053,63055,63057,63060,63062-63064,63066,63068,63070-63071,63074,
 63076,63079,63081,63083,63085,63087,63089,63091,63093,63095,63098,63100,63102,63105,63107,63109,63111,63113-63114,63116,63119,63121,63123,63125,63130,63132-63133,63135,63137,63140,63143,63145,63147,63149,63151,63153-63154,63157,63160,63165,63170,63173,63175,63187,63192-63193,63196,63199-63200,63202,63209,63216,63220-63221,63224,63227,63240,63246,63250,63255,63259,63261,63275-63276,63279,63281,63283,63287,63290,63292,63297,63302,63304-63307,63315,63319,63327,63330,63332,63339,63342,63345,63361-63363,63367,63379,63389,63391,63393,63402,63408-63409,63416-63417,63425,63427,63429,63431,63433,63448,63451,63453,63457,63459,63464-63470,63473,63482,63497,63505,63508,63510,63515,63521-63524,63526,63536-63537,63551-63552,63554,63556,63558-63559,63562,63570,63576,63582,63589-63593,63602,63604,63608-63609,63616,63618,63624,63626,63628,63630,63634,63639,63642,63644,63650,63652,63656,63679,63685,63689,63691,63693,63695,63698,63700-63702,63704,63706-63707,63709,63711,63713,63715,63717-63718
 ,63721-63727,63731,63733,63740-63742,63744,63747-63749,63751-63752,63756,63758,63761,63767,63783,63787,63793
   + /grass/trunk:60817,61096,61141,61994,62105,62179-62180,62182,62190,62403,62422,62424,62437,62466,62469,62487,62491,62494,62501,62506,62508-62509,62515,62518-62519,62521,62526,62533,62539,62541,62555,62562,62566,62570,62573,62575,62585,62588,62597,62603,62606,62608-62609,62614,62618,62628,62632,62638,62642,62648-62649,62652,62654-62657,62666,62691,62705,62709,62723,62730,62739,62741,62743,62746,62750-62752,62757,62762,62785,62798,62800-62801,62803,62805,62812,62822,62824,62828,62831,62838,62845,62847,62850,62856,62879,62881,62886,62904,62907-62908,62910,62912,62914,62916,62918,62920,62925,62932-62933,62935,62940,62942,62944-62946,62949,62955-62956,62958,62960,62962,62964,62966-62968,62970,62973,62975,62977,62981,62983,62985,62987,62989,62991,62993,62995,62997,62999-63000,63003,63005,63007,63009,63011,63013,63015,63017,63020,63022,63024,63026,63028-63031,63033,63035,63037,63040,63043-63044,63047,63049,63051,63053,63055,63057,63060,63062-63064,63066,63068,63070-63071,63074,
 63076,63079,63081,63083,63085,63087,63089,63091,63093,63095,63098,63100,63102,63105,63107,63109,63111,63113-63114,63116,63119,63121,63123,63125,63130,63132-63133,63135,63137,63140,63143,63145,63147,63149,63151,63153-63154,63157,63160,63165,63170,63173,63175,63187,63192-63193,63196,63199-63200,63202,63209,63216,63220-63221,63224,63227,63240,63246,63250,63255,63259,63261,63275-63276,63279,63281,63283,63287,63290,63292,63297,63302,63304-63307,63315,63319,63327,63330,63332,63339,63342,63345,63361-63363,63367,63379,63389,63391,63393,63402,63408-63409,63416-63417,63425,63427,63429,63431,63433,63448,63451,63453,63457,63459,63464-63470,63473,63482,63497,63505,63508,63510,63515,63521-63524,63526,63536-63537,63551-63552,63554,63556,63558-63559,63562,63570,63576,63582,63589-63593,63602,63604,63608-63609,63616,63618,63624,63626,63628,63630,63634,63639,63642,63644,63650,63652,63656,63679,63685,63689,63691,63693,63695,63698,63700-63702,63704,63706-63707,63709,63711,63713,63715,63717-63718
 ,63721-63727,63731,63733,63740-63742,63744,63747-63749,63751-63752,63756,63758,63761,63767,63783,63787,63793,63798

Modified: grass/branches/releasebranch_7_0/display/d.geodesic/d.geodesic.html
===================================================================
--- grass/branches/releasebranch_7_0/display/d.geodesic/d.geodesic.html	2014-12-28 13:22:50 UTC (rev 63798)
+++ grass/branches/releasebranch_7_0/display/d.geodesic/d.geodesic.html	2014-12-28 13:30:25 UTC (rev 63799)
@@ -8,20 +8,12 @@
 
 <h2>OPTIONS</h2>
 
-This program can be run either interactively or non-interactively. 
-If the user types <b>d.geodesic</b> on the command line and runs it without other program 
-parameters, the mouse will be activated; the user is asked to use 
-the mouse to indicate the starting and ending points of each geodesic line 
-to be drawn. The default line color (black) and text color (red) 
-will be used. 
+By default black line color and red text color will be used. 
 
-<p>Alternately, the user can specify the starting and ending coordinates 
-of the geodesic, line color, and text color on the command line, 
-and run the program non-interactively. 
-
-<p>Once the user indicates the starting and ending coordinates 
-of the geodesic, the line and its length (in miles) are displayed to 
-the user's graphics monitor. If the text color is set to <em>none</em>,
+<p>
+By indicating the starting and ending coordinates 
+of the geodesic, the line and its length (by default in meters) are displayed to 
+the graphical output. If the text color is set to <em>none</em>,
 the great circle distance is not displayed.
 
 <h2>EXAMPLE</h2>
@@ -33,10 +25,11 @@
 g.region vector=country_boundaries -p
 d.mon wx0
 d.vect country_boundaries type=area
+# show additionally a 20 degree grid
+d.grid 20
+
 d.geodesic coordinates=55:58W,33:18S,26:43E,60:37N \
-  line_color=yellow text_color=red
-# show additionally 10 degree grid
-d.grid 10
+  line_color=yellow text_color=red units=kilometers
 </pre></div>
 
 <p><center>

Modified: grass/branches/releasebranch_7_0/display/d.geodesic/d_geodesic.png
===================================================================
(Binary files differ)

Modified: grass/branches/releasebranch_7_0/display/d.geodesic/local_proto.h
===================================================================
--- grass/branches/releasebranch_7_0/display/d.geodesic/local_proto.h	2014-12-28 13:22:50 UTC (rev 63798)
+++ grass/branches/releasebranch_7_0/display/d.geodesic/local_proto.h	2014-12-28 13:30:25 UTC (rev 63799)
@@ -1 +1 @@
-void plot(double, double, double, double, int, int);
+void plot(double, double, double, double, int, int, double, const char *);

Modified: grass/branches/releasebranch_7_0/display/d.geodesic/main.c
===================================================================
--- grass/branches/releasebranch_7_0/display/d.geodesic/main.c	2014-12-28 13:22:50 UTC (rev 63798)
+++ grass/branches/releasebranch_7_0/display/d.geodesic/main.c	2014-12-28 13:30:25 UTC (rev 63799)
@@ -11,7 +11,7 @@
  *               Jan-Oliver Wagner <jan intevation.de>
  * PURPOSE:      displays a geodesic line in the active frame on the user's 
  *               graphics monitor
- * COPYRIGHT:    (C) 1999-2006 by the GRASS Development Team
+ * COPYRIGHT:    (C) 1999-2014 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
@@ -31,10 +31,13 @@
     int text_color;
     double lon1, lat1, lon2, lat2;
     char *deftcolor;
+    const char *unit;
+    int unit_id;
+    double factor;
     struct GModule *module;
     struct
     {
-	struct Option *lcolor, *tcolor, *coor;
+	struct Option *lcolor, *tcolor, *coor, *units;
     } parm;
 
     G_gisinit(argv[0]);
@@ -42,6 +45,8 @@
     module = G_define_module();
     G_add_keyword(_("display"));
     G_add_keyword(_("distance"));
+    G_add_keyword(_("great circle"));
+    G_add_keyword(_("shortest path"));
     module->description =
 	_("Displays a geodesic line, tracing the shortest distance "
 	"between two geographic points along a great circle, in "
@@ -60,14 +65,24 @@
     parm.tcolor->key = "text_color";
     parm.tcolor->label = _("Text color or \"none\"");
     parm.tcolor->answer = NULL;
-    
+
+    parm.units = G_define_standard_option(G_OPT_M_UNITS);
+    parm.units->options = "meters,kilometers,feet,miles";
+    parm.units->label = parm.units->description;
+    parm.units->answer = "meters";
+
     if (G_parser(argc, argv))
 	exit(EXIT_FAILURE);
 
-
     if (G_projection() != PROJECTION_LL)
-	G_fatal_error(_("Location is not %s"), G__projection_name(PROJECTION_LL));
+	G_fatal_error(_("Location is not %s"),
+		      G__projection_name(PROJECTION_LL));
 
+    /* get conversion factor and unit name */
+    unit_id = G_units(parm.units->answer);
+    factor = 1. / G_meters_to_units_factor(unit_id);
+    unit = G_get_units_name(unit_id, 1, 0);
+
     if (parm.coor->answers[0] == NULL)
 	G_fatal_error(_("No coordinates given"));
 
@@ -103,8 +118,8 @@
     else
 	text_color = D_translate_color(parm.tcolor->answer);
 
-    plot(lon1, lat1, lon2, lat2, line_color, text_color);
-    
+    plot(lon1, lat1, lon2, lat2, line_color, text_color, factor, unit);
+
     D_save_command(G_recreate_command());
     D_close_driver();
 

Modified: grass/branches/releasebranch_7_0/display/d.geodesic/plot.c
===================================================================
--- grass/branches/releasebranch_7_0/display/d.geodesic/plot.c	2014-12-28 13:22:50 UTC (rev 63798)
+++ grass/branches/releasebranch_7_0/display/d.geodesic/plot.c	2014-12-28 13:30:25 UTC (rev 63799)
@@ -1,13 +1,11 @@
+#include <stdio.h>
 #include <string.h>
-#include <grass/display.h>
 #include <grass/gis.h>
-#include <stdio.h>
+#include <grass/display.h>
 #include "local_proto.h"
 
-#define METERS_TO_MILES(x) ((x) * 6.213712e-04)
-
 void plot(double lon1, double lat1, double lon2, double lat2,
-     int line_color, int text_color)
+	  int line_color, int text_color, double factor, const char *unit)
 {
     double distance;
     double text_x, text_y;
@@ -33,6 +31,7 @@
 	for (i = 0; i <= nsteps; i++) {
 	    double lon = lon1 + (lon2 - lon1) * i / nsteps;
 	    double lat = G_geodesic_lat_from_lon(lon);
+
 	    if (i == 0)
 		D_move_abs(lon, lat);
 	    else
@@ -58,7 +57,7 @@
 	D_text_size(10, 10);
 
 	distance = G_geodesic_distance(lon1, lat1, lon2, lat2);
-	sprintf(buf, "%.0f miles", METERS_TO_MILES(distance));
+	sprintf(buf, "%.0f %s", distance / factor, unit);
 
 	D_pos_abs(text_x, text_y);
 	D_get_text_box(buf, &t, &b, &l, &r);

Modified: grass/branches/releasebranch_7_0/display/d.rhumbline/main.c
===================================================================
--- grass/branches/releasebranch_7_0/display/d.rhumbline/main.c	2014-12-28 13:22:50 UTC (rev 63798)
+++ grass/branches/releasebranch_7_0/display/d.rhumbline/main.c	2014-12-28 13:30:25 UTC (rev 63799)
@@ -17,7 +17,8 @@
  *               for details.
  *
  *****************************************************************************/
-/* TODO: implement G_rhumbline_distance() in libgis 
+/* TODO: implement G_rhumbline_distance() in libgis
+ * see also d.geodesic
  */
 
 #include <stdlib.h>
@@ -56,9 +57,15 @@
     parm.lcolor->label = _("Line color");
 
 #ifdef CAN_DO_DISTANCES
-    parm.tcolor = G_define_option(G_OPT_M_COORDS);
+    parm.tcolor = G_define_standard_option(G_OPT_C_FG);
     parm.tcolor->key = "text_color";
-    parm.tcolor->label = _("Text color");
+    parm.tcolor->label = _("Text color or \"none\"");
+    parm.tcolor->answer = NULL;
+
+    parm.units = G_define_standard_option(G_OPT_M_UNITS);
+    parm.units->options = "meters,kilometers,feet,miles";
+    parm.units->label = parm.units->description;
+    parm.units->answer = "meters";
 #endif
 
     if (G_parser(argc, argv))
@@ -68,6 +75,13 @@
 	G_fatal_error(_("Location is not %s"),
 		      G__projection_name(PROJECTION_LL));
 
+#ifdef CAN_DO_DISTANCES
+    /* get conversion factor and unit name */
+    unit_id = G_units(parm.units->answer);
+    factor = 1. / G_meters_to_units_factor(unit_id);
+    unit = G_get_units_name(unit_id, 1, 0);
+#endif
+
     if (parm.coor->answers[0] == NULL)
 	G_fatal_error(_("No coordinates given"));
 
@@ -98,10 +112,11 @@
 	deftcolor = DEFAULT_FG_COLOR;
 
     if (parm.tcolor->answer == NULL)
-	parm.tcolor->answer = deftcolor;
-    text_color = D_translate_color(parm.tcolor->answer);
-    if (!text_color)
 	text_color = D_translate_color(deftcolor);
+    else if (strcmp(parm.tcolor->answer, "none") == 0)
+	text_color = -1;
+    else
+	text_color = D_translate_color(parm.tcolor->answer);
 #endif
 
     plot(lon1, lat1, lon2, lat2, line_color, text_color);



More information about the grass-commit mailing list