[GRASS-dev] [GRASS-SVN] r70710 - in grass/branches/releasebranch_7_2: lib/vector/vedit raster/r.timestamp raster/r.to.vect raster/r.topidx raster/r.topmodel scripts/v.db.addtable vector/v.build.polylines vector/v.distance vector/v.edit vector/v.patch vector/v.select vector/v.to.db vector/v.to.points vector/v.what

Huidae Cho grass4u at gmail.com
Wed Mar 1 06:49:02 PST 2017


I wish I could add a log message to that commit. Since I have no admin
rights to SVN... hopefully, this log message will help you prepare release
news (used new tools/svnlog.sh from r70714):

r.timestamp: typo in the manual (backport r70666)
v.what: Fix the default distance threshold (backport r70637)
v.patch: build topology after appending (backport r70636)
v.edit: Fix the default threshold distance (backport r70635)
v.db.addtable: Check for duplicate column names (backport r70634)
v.to.db: Don't throw a fatal error when there are no features (backport
r70633)
v.to.db: Fix r70633; Don't throw a fatal error when there are no features
(backport r70706)
v.to.db: better check for Vect_cidx_get_num_cats_by_index (backport r70707)
v.to.db: findex > -1 (backport r70708)
v.distance: Fix separator in the manual (backport r70611)
v.distance: Update the manual; column= & -p are mutually exclusive
(backport r70612)
v.distance: Define default column names for -p; Suppress compiler warnings
(backport r70613)
v.distance: Don't create (0,0) points where no nearest points are found
(backport r70614)
v.build.polylines: Activate the cats=same option; Remove compile warnings
(backport r70599)
v.to.points: Don't interpolate for use=node according to the manual
(backport r70589)
vedit: Remove a compile warning (backport r70586)
v.select: Avoid database warnings when no features are selected and copy an
empty table (backport r70582)
vedit: Fix snapping to BgMap (backport r70537)
r.to.vect: Fix a couple of compile errors/warnings (backport r70509)
r.to.vect: Call the DB error handler before the vector handler to avoid
busy database warnings

Reproduce this issue in the North Carolina sample dataset:
        r.to.vect input=aspect output=aspect type=line

Any unthinned input raster will produce the same issue.
(backport r70506)
------------------------------------------------------------------------
r.to.vect: copyright year (backport r70709)
r.to.vect: Remove unnecessary parentheses (backport r70507)
r.topmodel, r.topidx: Fix links (backport r69139)


On Wed, Mar 1, 2017 at 8:16 AM, Huidae Cho <grass4u at gmail.com> wrote:

> Ah! Sorry for the huge comment and I forgot to copy log messages.
> Backporting is always difficult for me ;)
>
> On Wed, Mar 1, 2017 at 7:51 AM, Martin Landa <landa.martin at gmail.com>
> wrote:
>
>> 2017-03-01 13:31 GMT+01:00 Martin Landa <landa.martin at gmail.com>:
>> > please  *explain* your changes in log message next time. It's
>> > flustrating for those who are preparing news page about release to dig
>> > into such commits. Log message should help to understand what is
>> > purpose of the commit.
>>
>> Also spliting such huge commit into small commits would be good idea. Ma
>>
>> >>    grass/branches/releasebranch_7_2/raster/r.to.vect/areas_io.c
>> >>    grass/branches/releasebranch_7_2/raster/r.to.vect/global.h
>> >>    grass/branches/releasebranch_7_2/raster/r.to.vect/main.c
>> >>    grass/branches/releasebranch_7_2/raster/r.topidx/r.topidx.html
>> >>    grass/branches/releasebranch_7_2/raster/r.topmodel/r.topmodel.html
>> >>    grass/branches/releasebranch_7_2/scripts/v.db.addtable/v.db.
>> addtable.py
>> >>    grass/branches/releasebranch_7_2/vector/v.build.polylines/main.c
>> >>    grass/branches/releasebranch_7_2/vector/v.build.polylines/walk.c
>> >>    grass/branches/releasebranch_7_2/vector/v.distance/main.c
>> >>    grass/branches/releasebranch_7_2/vector/v.distance/v.distance.html
>> >>    grass/branches/releasebranch_7_2/vector/v.edit/main.c
>> >>    grass/branches/releasebranch_7_2/vector/v.edit/max_distance.c
>> >>    grass/branches/releasebranch_7_2/vector/v.patch/main.c
>> >>    grass/branches/releasebranch_7_2/vector/v.select/copy_tabs.c
>> >>    grass/branches/releasebranch_7_2/vector/v.select/main.c
>> >>    grass/branches/releasebranch_7_2/vector/v.to.db/main.c
>> >>    grass/branches/releasebranch_7_2/vector/v.to.points/write.c
>> >>    grass/branches/releasebranch_7_2/vector/v.what/main.c
>> >> Log:
>> >> Backport r70666, r70637, r70636, r70635, r70634, r70633, r70706,
>> r70707, r70708, r70611, r70612, r70613, r70614, r70599, r70589, r70586,
>> r70582, r70537, r70509, r70506, r70709, r70507, r69139
>> >>
>> >>
>> >>
>> >> Modified: grass/branches/releasebranch_7_2/lib/vector/vedit/break.c
>> >> ===================================================================
>> >> --- grass/branches/releasebranch_7_2/lib/vector/vedit/break.c
>>  2017-03-01 11:35:50 UTC (rev 70709)
>> >> +++ grass/branches/releasebranch_7_2/lib/vector/vedit/break.c
>>  2017-03-01 11:45:44 UTC (rev 70710)
>> >> @@ -247,12 +247,13 @@
>> >>         line_new = -1;
>> >>
>> >>      if (line_new > -1) {
>> >> +       n_points = Points_from->n_points - 1;
>> >> +
>> >>         if (first) {
>> >>             x = Points_from->x[0];
>> >>             y = Points_from->y[0];
>> >>         }
>> >>         else {
>> >> -           n_points = Points_from->n_points - 1;
>> >>             x = Points_from->x[n_points];
>> >>             y = Points_from->y[n_points];
>> >>         }
>> >>
>> >> Modified: grass/branches/releasebranch_7_2/lib/vector/vedit/move.c
>> >> ===================================================================
>> >> --- grass/branches/releasebranch_7_2/lib/vector/vedit/move.c
>> 2017-03-01 11:35:50 UTC (rev 70709)
>> >> +++ grass/branches/releasebranch_7_2/lib/vector/vedit/move.c
>> 2017-03-01 11:45:44 UTC (rev 70710)
>> >> @@ -71,7 +71,7 @@
>> >>
>> >>                     for (bgi = 0; bgi < nbgmaps; bgi++) {
>> >>                         if (Vedit_snap_point
>> >> -                           (BgMap[bgi], line, &x[j], &y[j], &z[j],
>> thresh,
>> >> +                           (BgMap[bgi], -1, &x[j], &y[j], &z[j],
>> thresh,
>> >>                              (snap == SNAPVERTEX) ? 1 : 0))
>> >>                             break;      /* snapped, don't continue */
>> >>                     }
>> >>
>> >> Modified: grass/branches/releasebranch_7_2/lib/vector/vedit/vertex.c
>> >> ===================================================================
>> >> --- grass/branches/releasebranch_7_2/lib/vector/vedit/vertex.c
>> 2017-03-01 11:35:50 UTC (rev 70709)
>> >> +++ grass/branches/releasebranch_7_2/lib/vector/vedit/vertex.c
>> 2017-03-01 11:45:44 UTC (rev 70710)
>> >> @@ -115,7 +115,7 @@
>> >>
>> >>                                 for (bgi = 0; bgi < nbgmaps; bgi++) {
>> >>                                     if (Vedit_snap_point
>> >> -                                       (BgMap[bgi], line, &x[k],
>> &y[k],
>> >> +                                       (BgMap[bgi], -1, &x[k], &y[k],
>> >>                                          &z[k], thresh_snap,
>> >>                                          (snap == SNAPVERTEX) ? 1 : 0))
>> >>                                         moved[k] = 2;
>> >>
>> >> Modified: grass/branches/releasebranch_7_2/raster/r.timestamp/r.timest
>> amp.html
>> >> ===================================================================
>> >> --- grass/branches/releasebranch_7_2/raster/r.timestamp/r.timestamp.html
>>       2017-03-01 11:35:50 UTC (rev 70709)
>> >> +++ grass/branches/releasebranch_7_2/raster/r.timestamp/r.timestamp.html
>>       2017-03-01 11:45:44 UTC (rev 70710)
>> >> @@ -15,7 +15,7 @@
>> >>
>> >>  The timestamp values must use the format as described in the <em>GRASS
>> >>  Datetime Library</em>. The source tree for this library should have a
>> >> -description of the format. For convience, the formats are reproduced
>> >> +description of the format. For convenience, the formats are reproduced
>> >>  here:
>> >>
>> >>  <p>There are two types of datetime values:
>> >>
>> >> Modified: grass/branches/releasebranch_7_2/raster/r.to.vect/areas_io.c
>> >> ===================================================================
>> >> --- grass/branches/releasebranch_7_2/raster/r.to.vect/areas_io.c
>>   2017-03-01 11:35:50 UTC (rev 70709)
>> >> +++ grass/branches/releasebranch_7_2/raster/r.to.vect/areas_io.c
>>   2017-03-01 11:45:44 UTC (rev 70710)
>> >> @@ -34,7 +34,7 @@
>> >>  int write_boundary(struct COOR *seed)
>> >>  {
>> >>      struct COOR *point, *line_begin, *line_end, *last;
>> >> -    int dir, line_type, n, n1, i;
>> >> +    int dir, line_type, n, n1;
>> >>
>> >>      point = seed;
>> >>      if ((dir = at_end(point))) {       /* already have one end of
>> line */
>> >>
>> >> Modified: grass/branches/releasebranch_7_2/raster/r.to.vect/global.h
>> >> ===================================================================
>> >> --- grass/branches/releasebranch_7_2/raster/r.to.vect/global.h
>> 2017-03-01 11:35:50 UTC (rev 70709)
>> >> +++ grass/branches/releasebranch_7_2/raster/r.to.vect/global.h
>> 2017-03-01 11:45:44 UTC (rev 70710)
>> >> @@ -104,7 +104,7 @@
>> >>  int extract_lines(void);
>> >>
>> >>  /* lines_io.c */
>> >> -int write_line(struct COOR *seed);
>> >> +int write_line(struct COOR *);
>> >>
>> >>  /* areas.c */
>> >>  int alloc_areas_bufs(int);
>> >> @@ -112,7 +112,7 @@
>> >>  int more_equivs(void);
>> >>
>> >>  /* areas_io.c */
>> >> -int write_boundary(struct COOR *seed);
>> >> +int write_boundary(struct COOR *);
>> >>  int write_area(struct area_table *, struct equiv_table *, int, int);
>> >>
>> >>  /* points.c */
>> >> @@ -124,4 +124,7 @@
>> >>  int at_end(struct COOR *);
>> >>  int read_row(void *);
>> >>  void insert_value(int, int, double);
>> >> -int free_ptr(struct COOR *ptr);
>> >> +int free_ptr(struct COOR *);
>> >> +
>> >> +/* set_error_handler.c */
>> >> +void set_error_handler(struct Map_info *, dbDriver **);
>> >>
>> >> Modified: grass/branches/releasebranch_7_2/raster/r.to.vect/main.c
>> >> ===================================================================
>> >> --- grass/branches/releasebranch_7_2/raster/r.to.vect/main.c
>> 2017-03-01 11:35:50 UTC (rev 70709)
>> >> +++ grass/branches/releasebranch_7_2/raster/r.to.vect/main.c
>> 2017-03-01 11:45:44 UTC (rev 70710)
>> >> @@ -8,7 +8,7 @@
>> >>   *
>> >>   * PURPOSE:      Converts a raster map into a vector map layer
>> >>   *
>> >> - * COPYRIGHT:    (C) 2007, 2011 by the GRASS Development Team
>> >> + * COPYRIGHT:    (C) 2007, 2011, 2017 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
>> >> @@ -151,10 +151,11 @@
>> >>         G_warning(_("Categories will be unique sequence, raster values
>> will be lost."));
>> >>      }
>> >>
>> >> +    set_error_handler(&Map, &driver);
>> >> +
>> >>      if (Vect_open_new(&Map, out_opt->answer, z_flg->answer) < 0)
>> >>         G_fatal_error(_("Unable to create vector map <%s>"),
>> out_opt->answer);
>> >> -    Vect_set_error_handler_io(NULL, &Map);
>> >> -
>> >> +
>> >>      Vect_hist_command(&Map);
>> >>
>> >>      Cats = Vect_new_cats_struct();
>> >> @@ -186,7 +187,6 @@
>> >>         if (driver == NULL)
>> >>             G_fatal_error(_("Unable to open database <%s> by driver
>> <%s>"),
>> >>                           Fi->database, Fi->driver);
>> >> -        db_set_error_handler_driver(driver);
>> >>
>> >>         /* Create new table */
>> >>         db_zero_string(&sql);
>> >>
>> >> Added: grass/branches/releasebranch_7_2/raster/r.to.vect/set_error_
>> handler.c
>> >> ===================================================================
>> >> --- grass/branches/releasebranch_7_2/raster/r.to.vect/set_error_handler.c
>>                              (rev 0)
>> >> +++ grass/branches/releasebranch_7_2/raster/r.to.vect/set_error_handler.c
>>      2017-03-01 11:45:44 UTC (rev 70710)
>> >> @@ -0,0 +1,33 @@
>> >> +#include <grass/gis.h>
>> >> +#include <grass/vector.h>
>> >> +
>> >> +struct handler_input
>> >> +{
>> >> +    struct Map_info *Map;
>> >> +    dbDriver **driver;
>> >> +};
>> >> +
>> >> +static void error_handler(void *p)
>> >> +{
>> >> +    const struct handler_input *input = (const struct handler_input
>> *)p;
>> >> +
>> >> +    if (input->driver && *input->driver)
>> >> +       db_close_database_shutdown_driver(*input->driver);
>> >> +    if (input->Map) {
>> >> +       char *name = G_store(input->Map->name);
>> >> +       if (input->Map->open == VECT_OPEN_CODE)
>> >> +           Vect_close(input->Map);
>> >> +       Vect_delete(name);
>> >> +       G_free(name);
>> >> +    }
>> >> +}
>> >> +
>> >> +void set_error_handler(struct Map_info *Map, dbDriver **driver)
>> >> +{
>> >> +    struct handler_input *input = G_malloc(sizeof(struct
>> handler_input));
>> >> +
>> >> +    input->Map = Map;
>> >> +    input->driver = driver;
>> >> +
>> >> +    G_add_error_handler(error_handler, input);
>> >> +}
>> >>
>> >> Modified: grass/branches/releasebranch_7_2/raster/r.topidx/r.topidx.ht
>> ml
>> >> ===================================================================
>> >> --- grass/branches/releasebranch_7_2/raster/r.topidx/r.topidx.html
>>   2017-03-01 11:35:50 UTC (rev 70709)
>> >> +++ grass/branches/releasebranch_7_2/raster/r.topidx/r.topidx.html
>>   2017-03-01 11:45:44 UTC (rev 70710)
>> >> @@ -23,7 +23,7 @@
>> >>  <a href="r.mapcalc.html">r.mapcalc</a>
>> >>  </em>
>> >>  <br>
>> >> -<a href="http://idea.isnew.info/r.topidx">Known issues</a>
>> >> +<a href="http://idea.isnew.info/r.topidx.html">Known issues</a>
>> >>
>> >>  <h2>REFERENCES</h2>
>> >>
>> >>
>> >> Modified: grass/branches/releasebranch_7_2/raster/r.topmodel/r.topmode
>> l.html
>> >> ===================================================================
>> >> --- grass/branches/releasebranch_7_2/raster/r.topmodel/r.topmodel.html
>> 2017-03-01 11:35:50 UTC (rev 70709)
>> >> +++ grass/branches/releasebranch_7_2/raster/r.topmodel/r.topmodel.html
>> 2017-03-01 11:45:44 UTC (rev 70710)
>> >> @@ -152,7 +152,7 @@
>> >>  <a href="r.topidx.html">r.topidx</a>
>> >>  </em>
>> >>  <br>
>> >> -<a href="http://idea.isnew.info/r.topmodel">How to run r.topmodel</a>
>> >> +<a href="http://idea.isnew.info/r.topmodel.html">How to run
>> r.topmodel</a>
>> >>
>> >>
>> >>  <h2>AUTHORS</h2>
>> >>
>> >> Modified: grass/branches/releasebranch_7_2/scripts/v.db.addtable/v.db.
>> addtable.py
>> >> ===================================================================
>> >> --- grass/branches/releasebranch_7_2/scripts/v.db.addtable/v.db.
>> addtable.py     2017-03-01 11:35:50 UTC (rev 70709)
>> >> +++ grass/branches/releasebranch_7_2/scripts/v.db.addtable/v.db.
>> addtable.py     2017-03-01 11:45:44 UTC (rev 70710)
>> >> @@ -86,7 +86,7 @@
>> >>          grass.verbose(_("Using user specified table name: %s") %
>> table)
>> >>
>> >>      # check if DB parameters are set, and if not set them.
>> >> -    grass.run_command('db.connect', flags='c')
>> >> +    grass.run_command('db.connect', flags='c', quiet=True)
>> >>      grass.verbose(_("Creating new DB connection based on default
>> mapset settings..."))
>> >>      kv = grass.db_connection()
>> >>      database = kv['database']
>> >> @@ -106,15 +106,21 @@
>> >>                                  stderr=nuldev)
>> >>
>> >>      if not table in tables.splitlines():
>> >> +        colnames = []
>> >>          if columns:
>> >> -            column_def = [x.strip().lower() for x in
>> columns.strip().split(',')]
>> >> +            column_def = []
>> >> +            for x in ' '.join(columns.lower().split()).split(','):
>> >> +                colname = x.split()[0]
>> >> +                if colname in colnames:
>> >> +                    grass.fatal(_("Duplicate column name '%s' not
>> allowed") % colname)
>> >> +                colnames.append(colname)
>> >> +                column_def.append(x)
>> >>          else:
>> >>              column_def = []
>> >>
>> >>          # if not existing, create it:
>> >> -        column_def_key = "%s integer" % key
>> >> -        if column_def_key not in column_def:
>> >> -            column_def.insert(0, column_def_key)
>> >> +        if not key in colnames:
>> >> +            column_def.insert(0, "%s integer" % key)
>> >>          column_def = ','.join(column_def)
>> >>
>> >>          grass.verbose(_("Creating table with columns (%s)...") %
>> column_def)
>> >> @@ -133,10 +139,17 @@
>> >>                        map=map_name, database=database, driver=driver,
>> >>                        layer=layer, table=table, key=key)
>> >>
>> >> -    # finally we have to add cats into the attribute DB to make
>> modules such as v.what.rast happy:
>> >> -    # (creates new row for each vector line):
>> >> -    grass.run_command('v.to.db', map=map_name, layer=layer,
>> >> -                      option='cat', column=key, qlayer=layer)
>> >> +    # finally we have to add cats into the attribute DB to make
>> >> +    # modules such as v.what.rast happy: (creates new row for each
>> >> +    # vector line):
>> >> +    try:
>> >> +        grass.run_command('v.to.db', map=map_name, layer=layer,
>> >> +                          option='cat', column=key, qlayer=layer)
>> >> +    except CalledModuleError:
>> >> +        # remove link
>> >> +        grass.run_command('v.db.connect', quiet=True, flags='d',
>> >> +                          map=map_name, layer=layer)
>> >> +        return 1
>> >>
>> >>      grass.verbose(_("Current attribute table links:"))
>> >>      if grass.verbosity() > 2:
>> >>
>> >> Modified: grass/branches/releasebranch_7_2/vector/v.build.polylines/ma
>> in.c
>> >> ===================================================================
>> >> --- grass/branches/releasebranch_7_2/vector/v.build.polylines/main.c
>>   2017-03-01 11:35:50 UTC (rev 70709)
>> >> +++ grass/branches/releasebranch_7_2/vector/v.build.polylines/main.c
>>   2017-03-01 11:45:44 UTC (rev 70710)
>> >> @@ -97,7 +97,6 @@
>> >>
>> >>      int polyline;
>> >>      int *lines_visited;
>> >> -    int points_in_polyline;
>> >>      int start_line;
>> >>      int nlines;
>> >>      int write_cats, copy_tables;
>> >> @@ -177,8 +176,10 @@
>> >>         write_cats = NO_CATS;
>> >>      else if (strcmp(cats->answer, "first") == 0)
>> >>         write_cats = ONE_CAT;
>> >> -    else
>> >> +    else if (strcmp(cats->answer, "multi") == 0)
>> >>         write_cats = MULTI_CATS;
>> >> +    else
>> >> +       write_cats = SAME_CATS;
>> >>
>> >>      if (type_opt->answer)
>> >>         type = Vect_option_to_types(type_opt);
>> >> @@ -218,9 +219,8 @@
>> >>         G_debug(1, "Polyline %d: start line = %d", polyline,
>> start_line);
>> >>
>> >>         /* Walk forward and pick up coordinates */
>> >> -       points_in_polyline =
>> >> -           walk_forward_and_pick_up_coords(&map, start_line, ltype,
>> points,
>> >> -                                           lines_visited, Cats,
>> write_cats);
>> >> +       walk_forward_and_pick_up_coords(&map, start_line, ltype,
>> points,
>> >> +                                       lines_visited, Cats,
>> write_cats);
>> >>
>> >>         /* Write the line (type of the first line is used) */
>> >>         Vect_write_line(&Out, ltype, points, Cats);
>> >> @@ -230,12 +230,10 @@
>> >>
>> >>      G_verbose_message(n_("%d line or boundaries found in input vector
>> map",
>> >>                           "%d lines or boundaries found in input
>> vector map",
>> >> -                         nlines),
>> >> -                     nlines, Vect_get_name(&map),
>> Vect_get_mapset(&map));
>> >> +                         nlines), nlines);
>> >>      G_verbose_message(n_("%d polyline stored in output vector map",
>> >>                           "%d polylines stored in output vector map",
>> >> -                         polyline),
>> >> -                     polyline, Vect_get_name(&Out),
>> Vect_get_mapset(&Out));
>> >> +                         polyline), polyline);
>> >>
>> >>      /* Copy (all linked) tables if needed */
>> >>      if (copy_tables) {
>> >>
>> >> Modified: grass/branches/releasebranch_7_2/vector/v.build.polylines/wa
>> lk.c
>> >> ===================================================================
>> >> --- grass/branches/releasebranch_7_2/vector/v.build.polylines/walk.c
>>   2017-03-01 11:35:50 UTC (rev 70709)
>> >> +++ grass/branches/releasebranch_7_2/vector/v.build.polylines/walk.c
>>   2017-03-01 11:45:44 UTC (rev 70710)
>> >> @@ -129,7 +129,7 @@
>> >>  {
>> >>      int cat_idx;
>> >>      int line, next_line, n1, n2;
>> >> -    int type, node, next_node;
>> >> +    int node, next_node;
>> >>      struct line_pnts *pnts;
>> >>      struct line_cats *cats_tmp;
>> >>
>> >> @@ -149,9 +149,9 @@
>> >>      /* Pick up first set of coordinates */
>> >>      lines_visited[line] = 1;
>> >>      if (cats_tmp)
>> >> -       type = Vect_read_line(map, pnts, Cats, line);
>> >> +       Vect_read_line(map, pnts, Cats, line);
>> >>      else
>> >> -       type = Vect_read_line(map, pnts, NULL, line);
>> >> +       Vect_read_line(map, pnts, NULL, line);
>> >>
>> >>      Vect_get_line_nodes(map, line, &n1, &n2);
>> >>      next_line = find_next_line(map, line, n1, ltype);
>> >> @@ -175,7 +175,7 @@
>> >>      node = next_node;
>> >>      while (line != 0 && line != start_line) {
>> >>         G_debug(2, "  line = %d", line);
>> >> -       type = Vect_read_line(map, pnts, cats_tmp, line);
>> >> +       Vect_read_line(map, pnts, cats_tmp, line);
>> >>         if (cats_tmp && write_cats == MULTI_CATS) {
>> >>             for (cat_idx = 0; cat_idx < cats_tmp->n_cats; cat_idx++) {
>> >>                 Vect_cat_set(Cats, cats_tmp->field[cat_idx],
>> >>
>> >> Modified: grass/branches/releasebranch_7_2/vector/v.distance/main.c
>> >> ===================================================================
>> >> --- grass/branches/releasebranch_7_2/vector/v.distance/main.c
>>  2017-03-01 11:35:50 UTC (rev 70709)
>> >> +++ grass/branches/releasebranch_7_2/vector/v.distance/main.c
>>  2017-03-01 11:45:44 UTC (rev 70710)
>> >> @@ -286,6 +286,10 @@
>> >>             Upload[i].upload = TO_ATTR;
>> >>         }
>> >>
>> >> +       /* store default column names if column= is not given */
>> >> +       if (!opt.column->answer)
>> >> +           Upload[i].column = G_store(opt.upload->answers[i]);
>> >> +
>> >>         i++;
>> >>      }
>> >>      Upload[i].upload = END;
>> >> @@ -625,8 +629,12 @@
>> >>      }
>> >>
>> >>      /* Go through all lines in 'from' and find nearest in 'to' for
>> each */
>> >> -    /* Note: as from_type is restricted to GV_POINTS (for now)
>> everything is simple */
>> >> +    /* Note: as from_type is restricted to GV_POINTS (for now)
>> everything is
>> >> +     * simple */
>> >>
>> >> +    /* suppress compiler warnings */
>> >> +    tx = ty = tz = fx = fy = fz = 0;
>> >> +
>> >>      count = 0;                 /* count of distances in 'do_all' mode
>> */
>> >>      /* Find nearest features for 'from' lines */
>> >>      if (nfromlines) {
>> >> @@ -1388,7 +1396,7 @@
>> >>             G_percent(i, count, 1);
>> >>
>> >>         /* Write line connecting nearest points */
>> >> -       if (Outp != NULL) {
>> >> +       if (Near[i].count > 0 && Outp != NULL) {
>> >>             Vect_reset_line(FPoints);
>> >>             Vect_reset_cats(FCats);
>> >>
>> >>
>> >> Modified: grass/branches/releasebranch_7_2/vector/v.distance/v.distanc
>> e.html
>> >> ===================================================================
>> >> --- grass/branches/releasebranch_7_2/vector/v.distance/v.distance.html
>> 2017-03-01 11:35:50 UTC (rev 70709)
>> >> +++ grass/branches/releasebranch_7_2/vector/v.distance/v.distance.html
>> 2017-03-01 11:45:44 UTC (rev 70710)
>> >> @@ -97,7 +97,7 @@
>> >>  needed for network analysis:
>> >>
>> >>  <div class="code"><pre>
>> >> -v.distance -p from=pnt to=ln out=connections upload=dist column=dist
>> >> +v.distance from=pnt to=ln out=connections upload=dist column=dist
>> >>  </pre></div>
>> >>
>> >>  <h3>Query information</h3>
>> >> @@ -116,7 +116,7 @@
>> >>  Find nearest features:
>> >>
>> >>  <div class="code"><pre>
>> >> -v.distance from=pnt to=map_to_query upload=cat col=somecol -p
>> >> +v.distance -p from=pnt to=map_to_query upload=cat
>> >>  </pre></div>
>> >>
>> >>  <h3>Point-in-polygon</h3>
>> >> @@ -174,7 +174,7 @@
>> >>  echo "0|-58|1" | v.in.ascii output=pnt2 input=-
>> >>
>> >>  # here, distances is in degree units
>> >> -v.distance from=pnt1 to=pnt2 upload=dist col=distance -p --q
>> >> +v.distance -p --q from=pnt1 to=pnt2 upload=dist
>> >>  from_cat|distance
>> >>  1|3
>> >>  </pre></div>
>> >> @@ -186,15 +186,14 @@
>> >>  <p>
>> >>  Spearfish sample data location:
>> >>  <div class="code"><pre>
>> >> -v.distance -pa from=archsites to=archsites upload=dist col=dist
>> >> +v.distance -pa from=archsites to=archsites upload=dist
>> >>  </pre></div>
>> >>
>> >>  <p>
>> >>  North Carolina sample data location:
>> >>
>> >>  <div class="code"><pre>
>> >> -v.distance -pa from=hospitals to=hospitals upload=dist \
>> >> -  col=dist separator=comma
>> >> +v.distance -pa from=hospitals to=hospitals upload=dist separator=tab
>> >>  from_cat to_cat       dist
>> >>                1          2          3          4          5 ...
>> >>  1             0    7489.10  339112.17   70900.39   70406.23 ...
>> >>
>> >> Modified: grass/branches/releasebranch_7_2/vector/v.edit/main.c
>> >> ===================================================================
>> >> --- grass/branches/releasebranch_7_2/vector/v.edit/main.c
>>  2017-03-01 11:35:50 UTC (rev 70709)
>> >> +++ grass/branches/releasebranch_7_2/vector/v.edit/main.c
>>  2017-03-01 11:45:44 UTC (rev 70710)
>> >> @@ -8,7 +8,7 @@
>> >>   *             Jachym Cepicky
>> >>   *             Major updates by Martin Landa <landa.martin gmail.com>
>> >>   *
>> >> - * COPYRIGHT:  (C) 2006-2014 by the GRASS Development Team
>> >> + * COPYRIGHT:  (C) 2006-2017 by the GRASS Development Team
>> >>   *
>> >>   *             This program is free software under the GNU General
>> >>   *             Public License (>=v2). Read the file COPYING that comes
>> >>
>> >> Modified: grass/branches/releasebranch_7_2/vector/v.edit/max_distance.
>> c
>> >> ===================================================================
>> >> --- grass/branches/releasebranch_7_2/vector/v.edit/max_distance.c
>>    2017-03-01 11:35:50 UTC (rev 70709)
>> >> +++ grass/branches/releasebranch_7_2/vector/v.edit/max_distance.c
>>    2017-03-01 11:45:44 UTC (rev 70710)
>> >> @@ -39,6 +39,8 @@
>> >>      if (maxdistance < 0.0) {
>> >>         G_get_window(&window);
>> >>
>> >> +       G_begin_distance_calculations();
>> >> +
>> >>         ew_dist1 =
>> >>             G_distance(window.east, window.north, window.west,
>> window.north);
>> >>         /* EW Dist at South Edge */
>> >>
>> >> Modified: grass/branches/releasebranch_7_2/vector/v.patch/main.c
>> >> ===================================================================
>> >> --- grass/branches/releasebranch_7_2/vector/v.patch/main.c
>> 2017-03-01 11:35:50 UTC (rev 70709)
>> >> +++ grass/branches/releasebranch_7_2/vector/v.patch/main.c
>> 2017-03-01 11:45:44 UTC (rev 70710)
>> >> @@ -413,8 +413,11 @@
>> >>      Vect_set_map_name(&OutMap, "Output from v.patch");
>> >>      Vect_set_person(&OutMap, G_whoami());
>> >>
>> >> -    if (!no_topo->answer)
>> >> +    if (!no_topo->answer) {
>> >> +       if (append->answer)
>> >> +           Vect_build_partial(&OutMap, GV_BUILD_NONE);
>> >>         Vect_build(&OutMap);
>> >> +    }
>> >>      Vect_close(&OutMap);
>> >>
>> >>      if (bbox_name) {
>> >>
>> >> Modified: grass/branches/releasebranch_7_2/vector/v.select/copy_tabs.c
>> >> ===================================================================
>> >> --- grass/branches/releasebranch_7_2/vector/v.select/copy_tabs.c
>>   2017-03-01 11:35:50 UTC (rev 70709)
>> >> +++ grass/branches/releasebranch_7_2/vector/v.select/copy_tabs.c
>>   2017-03-01 11:45:44 UTC (rev 70710)
>> >> @@ -55,12 +55,17 @@
>> >>         OFi =
>> >>             Vect_default_field_info(Out, IFi->number, IFi->name,
>> ttype);
>> >>
>> >> -       ret =
>> >> -           db_copy_table_by_ints(IFi->driver, IFi->database,
>> IFi->table,
>> >> -                                 OFi->driver,
>> >> -                                 Vect_subst_var(OFi->database, Out),
>> >> -                                 OFi->table, IFi->key, cats[i],
>> >> -                                 ncats[i]);
>> >> +       if (ncats[i] > 0)
>> >> +           ret = db_copy_table_by_ints(IFi->driver, IFi->database,
>> IFi->table,
>> >> +                                       OFi->driver,
>> >> +                                       Vect_subst_var(OFi->database,
>> Out),
>> >> +                                       OFi->table, IFi->key, cats[i],
>> >> +                                       ncats[i]);
>> >> +       else
>> >> +           ret = db_copy_table_where(IFi->driver, IFi->database,
>> IFi->table,
>> >> +                                     OFi->driver,
>> >> +                                     Vect_subst_var(OFi->database,
>> Out),
>> >> +                                     OFi->table, "0 = 1");
>> >>
>> >>         if (ret == DB_FAILED) {
>> >>             G_warning(_("Unable to copy table for layer %d"),
>> fields[i]);
>> >>
>> >> Modified: grass/branches/releasebranch_7_2/vector/v.select/main.c
>> >> ===================================================================
>> >> --- grass/branches/releasebranch_7_2/vector/v.select/main.c
>>  2017-03-01 11:35:50 UTC (rev 70709)
>> >> +++ grass/branches/releasebranch_7_2/vector/v.select/main.c
>>  2017-03-01 11:45:44 UTC (rev 70710)
>> >> @@ -7,7 +7,7 @@
>> >>   *               Markus Neteler <neteler itc.it>
>> >>   *               Martin Landa <landa.martin gmail.com> (GEOS support)
>> >>   * PURPOSE:      Select features from one map by features in another
>> map.
>> >> - * COPYRIGHT:    (C) 2003-2014 by the GRASS Development Team
>> >> + * COPYRIGHT:    (C) 2003-2017 by the GRASS Development Team
>> >>   *
>> >>   *               This program is free software under the GNU General
>> >>   *               Public License (>=v2). Read the file COPYING that
>> >>
>> >> Modified: grass/branches/releasebranch_7_2/vector/v.to.db/main.c
>> >> ===================================================================
>> >> --- grass/branches/releasebranch_7_2/vector/v.to.db/main.c
>> 2017-03-01 11:35:50 UTC (rev 70709)
>> >> +++ grass/branches/releasebranch_7_2/vector/v.to.db/main.c
>> 2017-03-01 11:45:44 UTC (rev 70710)
>> >> @@ -68,7 +68,7 @@
>> >>      }
>> >>
>> >>      /* allocate array for values */
>> >> -    /* (+ 1 is for cat -1 (no category) reported at the end ) */
>> >> +    /* (+1 is for cat -1 (no category) reported at the end ) */
>> >>      findex = Vect_cidx_get_field_index(&Map, options.field);
>> >>      if (findex > -1) {
>> >>         n = Vect_cidx_get_num_unique_cats_by_index(&Map, findex);
>> >> @@ -80,7 +80,8 @@
>> >>      Values = (struct value *) G_calloc(n + 1, sizeof(struct value));
>> >>
>> >>      /* prepopulate Values */
>> >> -    n = Vect_cidx_get_num_cats_by_index(&Map, findex);
>> >> +    if (findex > -1)
>> >> +       n = Vect_cidx_get_num_cats_by_index(&Map, findex);
>> >>      i = 0;
>> >>      Values[i].cat = -1;                /* features without category */
>> >>      Values[i].used = 0;
>> >>
>> >> Modified: grass/branches/releasebranch_7_2/vector/v.to.points/write.c
>> >> ===================================================================
>> >> --- grass/branches/releasebranch_7_2/vector/v.to.points/write.c
>> 2017-03-01 11:35:50 UTC (rev 70709)
>> >> +++ grass/branches/releasebranch_7_2/vector/v.to.points/write.c
>> 2017-03-01 11:45:44 UTC (rev 70710)
>> >> @@ -84,7 +84,7 @@
>> >>                 len = hypot(hypot(dx, dy), dz);
>> >>
>> >>                 /* interpolate segment */
>> >> -               if (interpolate && vert < (LPoints->n_points - 1)) {
>> >> +               if (vertex == GV_VERTEX && interpolate) {
>> >>                     int i, n;
>> >>                     double x, y, z, dlen;
>> >>
>> >>
>> >> Modified: grass/branches/releasebranch_7_2/vector/v.what/main.c
>> >> ===================================================================
>> >> --- grass/branches/releasebranch_7_2/vector/v.what/main.c
>>  2017-03-01 11:35:50 UTC (rev 70709)
>> >> +++ grass/branches/releasebranch_7_2/vector/v.what/main.c
>>  2017-03-01 11:45:44 UTC (rev 70710)
>> >> @@ -134,6 +134,7 @@
>> >>         x = window.proj;
>> >>         G_format_resolution(window.ew_res, ewres, x);
>> >>         G_format_resolution(window.ns_res, nsres, x);
>> >> +       G_begin_distance_calculations();
>> >>         EW_DIST1 =
>> >>             G_distance(window.east, window.north, window.west,
>> window.north);
>> >>         /* EW Dist at South Edge */
>> >>
>> >> _______________________________________________
>> >> grass-commit mailing list
>> >> grass-commit at lists.osgeo.org
>> >> https://lists.osgeo.org/mailman/listinfo/grass-commit
>> >
>> >
>> >
>> > --
>> > Martin Landa
>> > http://geo.fsv.cvut.cz/gwiki/Landa
>> > http://gismentors.cz/mentors/landa
>>
>>
>>
>> --
>> Martin Landa
>> http://geo.fsv.cvut.cz/gwiki/Landa
>> http://gismentors.cz/mentors/landa
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/grass-dev/attachments/20170301/b66a5b27/attachment-0001.html>


More information about the grass-dev mailing list