[GRASS-dev] d.vect -a shows only some elements
mlennert at club.worldonline.be
Fri Oct 20 13:23:37 EDT 2006
Moritz Lennert wrote:
> Hamish wrote:
>> Moritz Lennert wrote:
>>> Using d.vect.thematic -u I fill a grassrgb column in the attribute
>>> table. See http://moritz.homelinux.org/grass/d_vect_a1.png.
>>> But when I try to reuse these colors with d.vect -a, only a few of the
>>> regions get filled (with an additional dissolution of common
>>> boundaries): http://moritz.homelinux.org/grass/d_vect_a2.png
>>> All of the objects in the map have a color code in the grassrgb
>>> I cannot reproduce this problem in spearfish, so I am a bit lost.
>>> Any ideas ?
>> "with an additional dissolution of common boundaries" is causing the
>> dissolution is based on common cat, but thematic colors are based on
>> "jk" column. areas with a common cat can have different attribute
>> e.g. if cat refers to country number, and attr col refers to province
> This is not it. The dissolution came from the simple fact, that I used
> 'd.vect type=area' instead of d.vect type=area,boundary. Sorry, I didn't
> realize this before.
> So I still have:
> GRASS 6.3.cvs (ESPON):~ > psql -d espon -c "select * from temp where
> grassrgb is NULL"
> cat | nuts2 | jk | dkdldm | ab | lmn | grassrgb
> (0 lignes)
> GRASS 6.3.cvs (ESPON):~ > psql -d espon -c "select distinct grassrgb
> from temp"
> So, the grassrgb column is filled as it should. To make sure there is
> not problem with the colours, I do a seperate d.vect for each range.
> This works perfectly: http://moritz.homelinux.org/grass/d_vect_a1.png
> But trying to reproduce this with d.vect -a, I get:
> As you can see, those regions that are colored, are colored correctly,
> but not all regions are colored. If I change the color scheme, I get
> exactly the same results: http://moritz.homelinux.org/grass/d_vect_a3.png
> It is as if d.vect stopped coloring at one point.
> If I display the map in four d.vect calls with where='grassrgb=255:0:0',
> etc, it displays fine.
> I also get the same problem if I use d.vect.thematic on the cat column...
I have done some testing, and the problem seems to be in line 224 of
if (db_CatValArray_get_value (&cvarr_rgb, cat, &cv_rgb) != DB_OK)
db_CatValArray_get_value returns 'not found' for many of the cat values.
I am wondering whether this might be due to the fact that the bsearch in
db_CatValArray_get_value needs a sorted array, but that the array is not
sorted as db_select_CatValArray() which creates the array on line 67 of
the same file only sorts lists of ints or doubles, but not of strings...
More information about the grass-dev