On 19/08/18 22:19, Nikos Alexandris wrote:
If I am not wrong, all use cases of `read_command()` [0, 1],
in (at least) the grass-addons repository, do not consider an output
from `r.category` which includes labels.
[0]
https://grass.osgeo.org/grass74/manuals/libpython/script.html?highlight=read_command#script.core.read_command
[1]
https://grass.osgeo.org/grass75/manuals/libpython/script.html?highlight=read_command#script.core.read_command
I work on such a case where category numbers come along with label strings.
To read category numbers, I came up with:
```
import grass.script as grass
grass.read_command('r.category', map=base).split('\n')[:-1]
for category in categories:
category = category.split('\t')[0]
```
Is there any other command that will do this better? Would you consider
adding one?
If all the modules are trying to do is get a list of category values,
your approach seems the right one to me, but a simple list comprehension
should do the trick in one line:
cats = [int(x[0]) for x in [x.split('\t') for x in
g.read_command('r.category', map='RasterMap').splitlines()]]
This will work whether there are labels or not. IMHO, there is no need
to use anything more sophisticated.
Especially since a
grep -R "r.category" * | grep read_command
only gives 4 hits:
imagery/i.segment.uspo/i.segment.uspo.py: numsegments =
len(gscript.read_command('r.category',
raster/r.geomorphon/testsuite/test_r_geom.py: category =
read_command('r.category', map=self.outele)
raster/r.geomorphon/testsuite/test_r_geom.py: category =
read_command('r.category', map=self.outsint)
raster/r.neighborhoodmatrix/r.neighborhoodmatrix.py: numneighbors =
len(gscript.read_command('r.category',
The first and last only read the length (number) of categories, so this
isn't an issue.
Have you met other instances ?
Moritz
_______________________________________________
grass-dev mailing list
[email protected]
https://lists.osgeo.org/mailman/listinfo/grass-dev