[GRASS-dev] Re: [GRASS-user] low radiance values after i.atcor and i.topo.corr

Glynn Clements glynn at gclements.plus.com
Mon Jun 23 07:52:29 EDT 2008


Markus Neteler wrote:

> > And i.smap is gibberish; e.g. write_img() calls G_is_c_null_value() on
> > "char"s, so that module probably hasn't worked since 4.x.
> 
> i.smap works, I have tested it recently and also others use it regularly.

Oh, it may produce output, but not necessarily correct output.

Specifically, write_img() does:

	   if(G_is_c_null_value((CELL *)&img[row][col]))
		   G_set_c_null_value(&files->cellbuf[col], 1);

But "img" is a "unsigned char **", i.e. a 2D array of bytes. The test
will only succeed if the array contains the sequence 00,00,00,80 (for
little-endian systems) or 80,00,00,00 (big-endian systems). I suspect
that the test was originally against zero, but it was incorrectly
changed when null support was added.

If that's the case, the net result will be that it writes garbage
where it should be writing nulls, and occasionally writes nulls where
it shouldn't.

Beyond that, it seems fairly straightforward. I have committed an
update which compiles without warning, but hasn't been tested.

> Any opinions on
> i.gensig
> i.gensiset
> ? Both are used for supervised classification where you have training
> areas instead of just looking at the pixels as does i.cluster.

Looking briefly at i.gensig, the algorithm seems to be quite heavily
based upon categories (e.g. using the Cell_stats stuff), so it would
need to be substantially re-written to support FP in any meaningful
sense.

-- 
Glynn Clements <glynn at gclements.plus.com>


More information about the grass-dev mailing list