[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 05:16:17 PST 2017


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.
> timestamp.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.
> html
> >> ===================================================================
> >> --- 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.
> topmodel.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/
> main.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/
> walk.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.
> distance.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/273a31bc/attachment-0001.html>


More information about the grass-dev mailing list