[GRASS-dev] [GRASS GIS] #1248: r.thin may be broken

#1248: r.thin may be broken
-------------------------+--------------------------------------------------
Reporter: cmbarton | Owner: grass-dev@…
     Type: defect | Status: new
Priority: normal | Milestone: 7.0.0
Component: Raster | Version: svn-trunk
Keywords: r.thin | Platform: Unspecified
      Cpu: Unspecified |
-------------------------+--------------------------------------------------
I recently tried to use r.thin in GRASS 7 (compiled from trunk a few days
ago) and it seems to be behaving oddly. So I tested it against the
Spearfish demo set. I ran r.watershed to generate a stream network
(delete_streams) and then tried to thin it. The network generated by
r.watershed is already down to a single cell in most places; only a few
need thinning. But the r.thin output seems odd. It says it is deleting
thousands of cells each iteration, with the number of cells deleted
dropping by 8 each iteration. After 200 iterations, r.thin says that
thinning is not completed. Looking at results, only a small fraction of
the stream network was actually generated by r.thin. Here is an example of
r.thin output:

r.thin input=delete_streams@PERMANENT output=delete_streams_thinned
File delete_streams@PERMANENT -- 466 rows X 633 columns
Bounding box: l = 2, r = 634, t = 2, b = 467
Pass number 1
Deleted 2194 pixels
Pass number 2
Deleted 2186 pixels
Pass number 3
Deleted 2178 pixels
Pass number 4
Deleted 2170 pixels
Pass number 5
...
Deleted 618 pixels
Pass number 199
Deleted 610 pixels
Pass number 200
Deleted 602 pixels
Thinning not completed, consider to increase 'iterations' parameter.
Output file 466 rows X 633 columns
Window 466 rows X 633 columns

--
Ticket URL: <http://trac.osgeo.org/grass/ticket/1248&gt;
GRASS GIS <http://grass.osgeo.org>

#1248: r.thin may be broken
-------------------------+--------------------------------------------------
Reporter: cmbarton | Owner: grass-dev@…
     Type: defect | Status: new
Priority: normal | Milestone: 7.0.0
Component: Raster | Version: svn-trunk
Keywords: r.thin | Platform: Unspecified
      Cpu: Unspecified |
-------------------------+--------------------------------------------------

Comment(by cmbarton):

I'm trying to reformat the output so that it is easier to see.

{{{
r.thin input=delete_streams@PERMANENT output=delete_streams_thinned
File delete_streams@PERMANENT -- 466 rows X 633 columns
Bounding box: l = 2, r = 634, t = 2, b = 467
Pass number 1
Deleted 2194 pixels
Pass number 2
Deleted 2186 pixels
Pass number 3
Deleted 2178 pixels
Pass number 4
Deleted 2170 pixels
...
Pass number 197
Deleted 626 pixels
Pass number 198
Deleted 618 pixels
Pass number 199
Deleted 610 pixels
Pass number 200
Deleted 602 pixels
Thinning not completed, consider to increase 'iterations' parameter.
Output file 466 rows X 633 columns
Window 466 rows X 633 columns

}}}

--
Ticket URL: <http://trac.osgeo.org/grass/ticket/1248#comment:1&gt;
GRASS GIS <http://grass.osgeo.org>

#1248: r.thin may be broken
-------------------------+--------------------------------------------------
Reporter: cmbarton | Owner: grass-dev@…
     Type: defect | Status: new
Priority: normal | Milestone: 7.0.0
Component: Raster | Version: svn-trunk
Keywords: r.thin | Platform: Unspecified
      Cpu: Unspecified |
-------------------------+--------------------------------------------------

Comment(by cmbarton):

I just tested this in GRASS 6.4.1 and r.thin works fine. All thinning of
the same map in spearfish was completed in 1 pass.

Michael

--
Ticket URL: <http://trac.osgeo.org/grass/ticket/1248#comment:2&gt;
GRASS GIS <http://grass.osgeo.org>

#1248: r.thin may be broken
-------------------------+--------------------------------------------------
Reporter: cmbarton | Owner: grass-dev@…
     Type: defect | Status: new
Priority: normal | Milestone: 7.0.0
Component: Raster | Version: svn-trunk
Keywords: r.thin | Platform: Unspecified
      Cpu: Unspecified |
-------------------------+--------------------------------------------------

Comment(by mmetz):

Replying to [comment:2 cmbarton]:
> I just tested this in GRASS 6.4.1 and r.thin works fine. All thinning of
the same map in spearfish was completed in 1 pass.

Try r44645. The bug is that G_get_map_row() in 6.x converts NULLs to
zeros, but there is no equivalent to G_get_map_row() in 7.0, where
G_get_map_row() is usually replaced with Rast_get_c_row() which does not
convert NULLs to zeros. The current fix converts NULLs to zeros in
r.thin/io.c, but a proper fix would be to update r.thin and test against
NULL values with !Rast_is_c_null_value() instead of e.g. buf[col] != 0.
Padding should also use NULL and not zero. Therefore I would opt to change
the status to enhancement if the current fix is working.

And all modules that use G_get_map_row() in 6.x should be checked...

Markus M

--
Ticket URL: <http://trac.osgeo.org/grass/ticket/1248#comment:3&gt;
GRASS GIS <http://grass.osgeo.org>

#1248: r.thin may be broken
-------------------------+--------------------------------------------------
Reporter: cmbarton | Owner: grass-dev@…
     Type: defect | Status: new
Priority: normal | Milestone: 7.0.0
Component: Raster | Version: svn-trunk
Keywords: r.thin | Platform: Unspecified
      Cpu: Unspecified |
-------------------------+--------------------------------------------------

Comment(by cmbarton):

I'll try the fix and let you know. Thanks.

Michael

--
Ticket URL: <https://trac.osgeo.org/grass/ticket/1248#comment:4&gt;
GRASS GIS <http://grass.osgeo.org>

#1248: r.thin may be broken
-------------------------+--------------------------------------------------
Reporter: cmbarton | Owner: grass-dev@…
     Type: defect | Status: new
Priority: normal | Milestone: 7.0.0
Component: Raster | Version: svn-trunk
Keywords: r.thin | Platform: Unspecified
      Cpu: Unspecified |
-------------------------+--------------------------------------------------

Comment(by cmbarton):

This seems to have fixed r.thin for now. Thanks.

Michael

--
Ticket URL: <http://trac.osgeo.org/grass/ticket/1248#comment:5&gt;
GRASS GIS <http://grass.osgeo.org>

#1248: r.thin may be broken
--------------------------+-------------------------------------------------
  Reporter: cmbarton | Owner: grass-dev@…
      Type: defect | Status: closed
  Priority: normal | Milestone: 7.0.0
Component: Raster | Version: svn-trunk
Resolution: fixed | Keywords: r.thin
  Platform: Unspecified | Cpu: Unspecified
--------------------------+-------------------------------------------------
Changes (by hamish):

  * status: new => closed
  * resolution: => fixed

--
Ticket URL: <http://trac.osgeo.org/grass/ticket/1248#comment:6&gt;
GRASS GIS <http://grass.osgeo.org>

#1248: r.thin may be broken
--------------------------+-------------------------------------------------
  Reporter: cmbarton | Owner: grass-dev@…
      Type: defect | Status: closed
  Priority: normal | Milestone: 7.0.0
Component: Raster | Version: svn-trunk
Resolution: fixed | Keywords: r.thin
  Platform: Unspecified | Cpu: Unspecified
--------------------------+-------------------------------------------------

Comment(by cmbarton):

Replying to [comment:6 hamish]:

Markus M suggested keeping this open, at least as an enhancement, because
he didn't feel that this was a proper fix.

Michael

--
Ticket URL: <http://trac.osgeo.org/grass/ticket/1248#comment:7&gt;
GRASS GIS <http://grass.osgeo.org>

#1248: r.thin may be broken
--------------------------+-------------------------------------------------
  Reporter: cmbarton | Owner: grass-dev@…
      Type: defect | Status: reopened
  Priority: normal | Milestone: 7.0.0
Component: Raster | Version: svn-trunk
Resolution: | Keywords: r.thin
  Platform: Unspecified | Cpu: Unspecified
--------------------------+-------------------------------------------------
Changes (by hamish):

  * status: closed => reopened
  * resolution: fixed =>

Comment:

ok, oh

--
Ticket URL: <https://trac.osgeo.org/grass/ticket/1248#comment:8&gt;
GRASS GIS <http://grass.osgeo.org>

#1248: r.thin may be broken
--------------------------+-------------------------------------------------
  Reporter: cmbarton | Owner: grass-dev@…
      Type: defect | Status: reopened
  Priority: normal | Milestone: 7.0.0
Component: Raster | Version: svn-trunk
Resolution: | Keywords: r.thin
  Platform: Unspecified | Cpu: Unspecified
--------------------------+-------------------------------------------------

Comment(by mmetz):

Replying to [comment:7 cmbarton]:
> Replying to [comment:6 hamish]:
>
> Markus M suggested keeping this open, at least as an enhancement,
because he didn't feel that this was a proper fix.
>
It should be properly fixed in r44866. Zero is now a valid number, all
non-NULL cells are treated as lines.

Markus M

--
Ticket URL: <https://trac.osgeo.org/grass/ticket/1248#comment:9&gt;
GRASS GIS <http://grass.osgeo.org>

Thanks. I'll give it a try.

Michael
____________________
C. Michael Barton
Director, Center for Social Dynamics & Complexity
Professor of Anthropology, School of Human Evolution & Social Change
Arizona State University

voice: 480-965-6262 (SHESC), 480-727-9746 (CSDC)
fax: 480-965-7671 (SHESC), 480-727-0709 (CSDC)
www: http://www.public.asu.edu/~cmbarton, http://csdc.asu.edu

On Jan 4, 2011, at 6:49 AM, GRASS GIS wrote:

#1248: r.thin may be broken
--------------------------+-------------------------------------------------
Reporter: cmbarton | Owner: grass-dev@…
     Type: defect | Status: reopened
Priority: normal | Milestone: 7.0.0
Component: Raster | Version: svn-trunk
Resolution: | Keywords: r.thin
Platform: Unspecified | Cpu: Unspecified
--------------------------+-------------------------------------------------

Comment(by mmetz):

Replying to [comment:7 cmbarton]:

Replying to [comment:6 hamish]:

Markus M suggested keeping this open, at least as an enhancement,

because he didn't feel that this was a proper fix.

It should be properly fixed in r44866. Zero is now a valid number, all
non-NULL cells are treated as lines.

Markus M

--
Ticket URL: <https://trac.osgeo.org/grass/ticket/1248#comment:9&gt;
GRASS GIS <http://grass.osgeo.org>

#1248: r.thin may be broken
--------------------------+-------------------------------------------------
  Reporter: cmbarton | Owner: grass-dev@…
      Type: defect | Status: reopened
  Priority: normal | Milestone: 7.0.0
Component: Raster | Version: svn-trunk
Resolution: | Keywords: r.thin
  Platform: Unspecified | Cpu: Unspecified
--------------------------+-------------------------------------------------

Comment(by cmbarton):

AFAICT, this is fixed. Anyone want to try r.thin in GRASS 7 on another
platform than Mac to be sure?

--
Ticket URL: <http://trac.osgeo.org/grass/ticket/1248#comment:10&gt;
GRASS GIS <http://grass.osgeo.org>

#1248: r.thin may be broken
--------------------------+-------------------------------------------------
  Reporter: cmbarton | Owner: grass-dev@…
      Type: defect | Status: reopened
  Priority: normal | Milestone: 7.0.0
Component: Raster | Version: svn-trunk
Resolution: | Keywords: r.thin
  Platform: Unspecified | Cpu: Unspecified
--------------------------+-------------------------------------------------

Comment(by mmetz):

Replying to [comment:10 cmbarton]:
> AFAICT, this is fixed. Anyone want to try r.thin in GRASS 7 on another
platform than Mac to be sure?

I tested on Linux before committing, works fine here. I would be really
surprised if the changes, i.e. using Rast_is_c_null_value(), are not
portable.

Markus M

--
Ticket URL: <http://trac.osgeo.org/grass/ticket/1248#comment:11&gt;
GRASS GIS <http://grass.osgeo.org>

#1248: r.thin may be broken
--------------------------+-------------------------------------------------
  Reporter: cmbarton | Owner: grass-dev@…
      Type: defect | Status: closed
  Priority: normal | Milestone: 7.0.0
Component: Raster | Version: svn-trunk
Resolution: fixed | Keywords: r.thin
  Platform: Unspecified | Cpu: Unspecified
--------------------------+-------------------------------------------------
Changes (by cmbarton):

  * status: reopened => closed
  * resolution: => fixed

Comment:

I guess we can close this now.

Michael

--
Ticket URL: <http://trac.osgeo.org/grass/ticket/1248#comment:12&gt;
GRASS GIS <http://grass.osgeo.org>