[GRASS-SVN] r70940 - grass/trunk/vector/v.kernel

svn_grass at osgeo.org svn_grass at osgeo.org
Sun Apr 23 19:41:12 PDT 2017


Author: annakrat
Date: 2017-04-23 19:41:12 -0700 (Sun, 23 Apr 2017)
New Revision: 70940

Modified:
   grass/trunk/vector/v.kernel/main.c
Log:
v.kernel: add separate option for network density map, see #635

Modified: grass/trunk/vector/v.kernel/main.c
===================================================================
--- grass/trunk/vector/v.kernel/main.c	2017-04-23 21:23:09 UTC (rev 70939)
+++ grass/trunk/vector/v.kernel/main.c	2017-04-24 02:41:12 UTC (rev 70940)
@@ -74,14 +74,13 @@
 
 int main(int argc, char **argv)
 {
-    struct Option *in_opt, *net_opt, *out_opt;
+    struct Option *in_opt, *net_opt, *out_opt, *net_out_opt;
     struct Option *radius_opt, *dsize_opt, *segmax_opt, *netmax_opt,
 	*multip_opt, *node_opt, *kernel_opt;
     struct Flag *flag_o, *flag_q, *flag_normalize, *flag_multiply;
     char *desc;
 
     struct Map_info In, Net, Out;
-    int overwrite;
     int fdout = -1, maskfd = -1;
     int node_method, kernel_function;
     int row, col;
@@ -119,6 +118,7 @@
     in_opt = G_define_standard_option(G_OPT_V_INPUT);
     in_opt->label = _("Name of input vector map with training points");
     in_opt->description = NULL;
+    in_opt->guisection = _("Basic");
     
     net_opt = G_define_standard_option(G_OPT_V_INPUT);
     net_opt->key = "net";
@@ -127,19 +127,25 @@
     net_opt->required = NO;
     net_opt->guisection = _("Network");
 
-    out_opt = G_define_option();
+    out_opt = G_define_standard_option(G_OPT_R_OUTPUT);
     out_opt->key = "output";
-    out_opt->type = TYPE_STRING;
-    out_opt->key_desc = "name";
-    out_opt->required = YES;
-    out_opt->label = _("Name for output raster/vector map");
-    out_opt->description = _("Outputs vector map if network map is given, otherwise raster map");
+    out_opt->required = NO;
+    out_opt->label = _("Name for output raster map");
+    out_opt->guisection = _("Basic");
 
+    net_out_opt = G_define_standard_option(G_OPT_V_OUTPUT);
+    net_out_opt->key = "net_output";
+    net_out_opt->required = NO;
+    net_out_opt->label = _("Name for output vector density map");
+    net_out_opt->description = _("Outputs vector map if network map is given");
+    net_out_opt->guisection = _("Network");
+
     radius_opt = G_define_option();
     radius_opt->key = "radius";
     radius_opt->type = TYPE_DOUBLE;
     radius_opt->required = YES;
     radius_opt->description = _("Kernel radius in map units");
+    radius_opt->guisection = _("Basic");
 
     dsize_opt = G_define_option();
     dsize_opt->key = "dsize";
@@ -216,29 +222,21 @@
     flag_multiply->description =
 	_("In network mode, multiply the result by number of input points");
     flag_multiply->guisection = _("Network");
-    
-    overwrite = G_check_overwrite(argc, argv);
+
+    G_option_required(out_opt, net_out_opt, NULL);
+    G_option_exclusive(out_opt, net_out_opt, NULL);
+    /* this should be activated for GRASS 8
+    G_option_requires(net_opt, net_out_opt, NULL);
+    */
     if (G_parser(argc, argv))
 	exit(EXIT_FAILURE);
 
-    if (net_opt->answer) {
-	if (G_find_vector2(out_opt->answer, G_mapset())) {
-            if (overwrite)
-                G_warning(_("Vector map <%s> already exists and will be overwritten"),
-                          out_opt->answer);
-            else
-                G_fatal_error(_("Vector map <%s> already exists"),
-                              out_opt->answer);
-        }
-    } else {
-	if (G_find_raster(out_opt->answer, G_mapset())) {
-            if (overwrite)
-                G_warning(_("Raster map <%s> already exists and will be overwritten"),
-                          out_opt->answer);
-            else
-                G_fatal_error(_("Raster map <%s> already exists"),
-                              out_opt->answer);
-        }
+
+    if (net_opt->answer && out_opt->answer) {
+	G_warning(_("Use option net_output if you compute network density. "
+		"Name provided in option output will be used for net_output."));
+	net_out_opt->answer = out_opt->answer;
+	out_opt->answer = NULL;
     }
 
     /*read options */
@@ -291,9 +289,9 @@
     }
 
     if (net_opt->answer) {
-	Vect_check_input_output_name(in_opt->answer, out_opt->answer,
+	Vect_check_input_output_name(in_opt->answer, net_out_opt->answer,
 				     G_FATAL_EXIT);
-	Vect_check_input_output_name(net_opt->answer, out_opt->answer,
+	Vect_check_input_output_name(net_opt->answer, net_out_opt->answer,
 				     G_FATAL_EXIT);
     }
 
@@ -334,9 +332,9 @@
 	Vect_net_build_graph(&Net, GV_LINES, 0, 0, NULL, NULL, NULL, 0, 0);
 
 	if (!flag_q->answer) {
-	    if (Vect_open_new(&Out, out_opt->answer, 0) < 0)
+	    if (Vect_open_new(&Out, net_out_opt->answer, 0) < 0)
 		G_fatal_error(_("Unable to create vector map <%s>"),
-				out_opt->answer);
+				net_out_opt->answer);
 	    Vect_hist_command(&Out);
 	}
 



More information about the grass-commit mailing list