#2113: v.report reports wrong categories after deleting/merging features in the
digitizer
-------------------------+--------------------------------------------------
Reporter: hcho | Owner: grass-dev@…
Type: defect | Status: new
Priority: major | Milestone: 7.0.0
Component: Python | Version: svn-trunk
Keywords: | Platform: All
Cpu: Unspecified |
-------------------------+--------------------------------------------------
After deleting/merging features in the digitizer, the number of categories
in the vector map becomes less than the number of rows in the attribute
table. For example, I originally had 130 features, 130 categories, and 130
rows in a vector map. I deleted and merged some features and now I have
one feature that has 43 categories, and still 130 rows in the table.
'''v.category main_stream option=print''' shows these 43 cats:
128/109/123/125/112/104/108/113/107/102/103/96/98/99/130/129/21/22/23/20/18/87/85/86/68/84/69/37/39/40/42/25/35/24/67/83/4/2/16/17/9/10/6
Now, if I use '''v.report map=main_stream option=length''', I get exactly
43 lines, but they're not the correct 43 categories. They're simply from 1
to 43. Also, if I use the percent unit, even if all these records
represent the same geometry, percent calculations are not all 100%, but
100/43%, which I understand why this happens, but doesn't make sense.
I tried to fix the first problem with the following patch:
{{{
127c127,129
< records3 = [r1 + r2[1:] for r1, r2 in zip(records1, records2)]
---
> records3 =
> for r2 in records2:
> records3.append(filter(lambda r1: r1[0] == r2[0],
records1)[0] + r2[1:])
}}}
But, this is a partial fix because it doesn't fix the percent problem and
doesn't handle the '''if not colnames''' case where it uses v.category.
It would be great if experienced python developers can take a look at
these issues.
The following is a simple version of these problems:
Currently, '''v.report main_stream option=length''' reports:
{{{
cat|value|length
1|3781|80418.2088197
2|3781|80418.2088197
3|3781|80418.2088197
4|3781|80418.2088197
5|3781|80418.2088197
}}}
But, I think this command should report the following because
main_stream's only feature has 10/4/6/2/9:
{{{
cat|value|length
2|3781|80418.2088197
4|3781|80418.2088197
6|3781|80418.2088197
9|3781|80418.2088197
10|3781|80418.2088197
}}}
Also, '''v.report main_stream option=length units=percent''' shows
{{{
cat|value|length
1|3781|20.0
2|3781|20.0
3|3781|20.0
4|3781|20.0
5|3781|20.0
}}}
but this map has only one line geometry with five cats.
Thanks.
Huidae
--
Ticket URL: <http://trac.osgeo.org/grass/ticket/2113>
GRASS GIS <http://grass.osgeo.org>