[GRASS-dev] vector query overhaul proposal

Michael Barton michael.barton at asu.edu
Wed Aug 6 12:30:03 EDT 2008


About 9 months ago, I suggested an overhaul of the GRASS vector query  
framework (original post <http://lists.osgeo.org/pipermail/grass-dev/2007-September/033173.html 
 >)

Now that work has started on GRASS 7 in ernest, I'd like to reiterate  
this. Besides giving GRASS a simpler and richer query ability, it  
would permit much easier GUI interface to vector querying--such as  
interactively drawing a box or polygon around points to select them  
for query in the new database table manager.

So here is the idea. It involves some upgrades to modules we already  
have, but no new modules. The nice thing is we are almost there. I'll  
also drop this in the bug tracker as an enhancement suggestion.

**v.select (query using a vector map):
1. add flags -p and -g for text output instead of creating a new map.  
It would report which map(s) and feature(s)/cat(s) meet the query  
criteria.
2. allow multiple maps to be selected. This would directly address  
Eric's question. If the output is a map, it would be the equivalent of  
v.patch on all queried vector elements.
3. add operators "contains" and "adjacent". Contains=all vector  
features whose nodes are completely inside a polygon (or inside or  
touching the boundary). Adjacent=all vector features who share a node/ 
point or line/boundary with the selecting feature. Because GRASS is  
topologically correct, adjacency information is readily available.
4. maybe change option names from ainput and binput to selector and  
selected or queried. This would have to wait until GRASS 7, of course.  
I find ainput and binput not very clear where used in other vector  
operations either (maybe I'm just dense).

**v.what (query using coordinates):
1. add flags -p and -g for current behavior (-pg could be the default  
if we wanted to do this before GRASS 7)
2. add "output=" option to allow v.what to create a new map from the  
results of its query, like v.select does
3. allow multiple maps for input, as with the suggestion for v.select
4. allow coordinates to be read optionally as a line or area/boundary  
(-l or -a?) instead of only as individual points.
5. add operators overlap, contains, adjacent. (This also would make  
possible interactive vector selection with a mouse drawn box or  
polygon from the GUI) In other words, have v.select and v.what work  
the same except that v.select uses a vector map for querying and  
v.what uses a set of coordinate points.

**v.overlay (boolean combination of maps):
1. drop the ainput and binput. Replace with just input.
2. allow multiple maps to be entered into input, not just 2
3. deprecate v.patch because v.overlay with the OR operator replaces  
it. (If we wanted to do this before GRASS 7, we'd have to create a new  
module, maybe named v.combine or something like that because this  
changes the default behavior of v.overlay)

Michael
______________________________
C. Michael Barton, Professor of Anthropology
Director of Graduate Studies
School of Human Evolution & Social Change
Center for Social Dynamics & Complexity
Arizona State University
Tempe, AZ  85287-2402
USA

voice: 480-965-6262; fax: 480-965-7671
www: http://www.public.asu.edu/~cmbarton



More information about the grass-dev mailing list