[GRASS-dev] [GRASS GIS] #3244: Vect_get_map_box() and level1
GRASS GIS
trac at osgeo.org
Sat Jan 14 07:43:29 PST 2017
#3244: Vect_get_map_box() and level1
--------------------------+------------------------------------
Reporter: martinl | Owner: grass-dev@…
Type: task | Status: new
Priority: normal | Milestone: 7.2.1
Component: Vector | Version: unspecified
Resolution: | Keywords: vlib, map bbox, level1
CPU: Unspecified | Platform: Unspecified
--------------------------+------------------------------------
Comment (by martinl):
Replying to [comment:1 martinl]:
> Patch attached attachment:get_map_box.diff. Unfortunately it requires
change in function definition (`const struct Map_info *` -> `struct
Map_into *`) since `Vect_rewind()` is called.
Touching `plus_head` structure on level1 is not good idea since this
structure is designed for topological level 2. I modified patch by
introducing `Vect_get_map_box1()` which works on level1. On level 1
`Vect_get_map_box()` returns error code. Example of usage (which fixes
`d.vect zcolor=elevation` for maps open on level 1):
{{{
--- display/d.vect/shape.c (revision 70370)
+++ display/d.vect/shape.c (working copy)
@@ -188,7 +188,10 @@
z_style = NULL;
}
else {
- Vect_get_map_box(Map, &box);
+ if (Vect_level(Map) > 1)
+ Vect_get_map_box(Map, &box);
+ else
+ Vect_get_map_box1(Map, &box);
Rast_make_fp_colors(&zcolors, z_style, box.B, box.T);
}
}
}}}
This approach could be used by other modules which works on level 1 like
`g.region` with `vector` option. Anyway the map features will be read
mostly twice(*) (by module itself and by `Vect_get_map_box1()`), so
probably it make better sense to modify each module which works on level1
and requires map bbox to fill bound_box structure locally when reading
features by the module.
(*) Not the case of `g.region`, so at least for this module
`Vect_get_map_box1()` make sense.
--
Ticket URL: <https://trac.osgeo.org/grass/ticket/3244#comment:3>
GRASS GIS <https://grass.osgeo.org>
More information about the grass-dev
mailing list