v.db.univar(1grass)

πŸ’– v.db.univar β€” the GRASS User's Manual glow-up πŸ’–

okay bestie, welcome to v.db.univar(1grass), aka the lil module that does univariate statistics on a selected table column for a GRASS vector map. she's numeric, she's thorough, she's giving main character energy in your attribute table. πŸŽ€

✨ KEYWORDS ✨

vector, statistics, attribute table


✨ SYNOPSIS ✨

v.db.univar
v.db.univar --help
v.db.univar [-eg] map=name  [layer=string]  column=name
[where=sql_query]   [percentile=float[,float,...]]  format=name
[--help]  [--verbose]  [--quiet]  [--ui]

🚩 Flags

  • -e β€” Extended statistics, meaning quartiles and the 90th percentile. more numbers, more fun, no cap.
  • -g β€” Print stats in shell script style. deprecated!! 😭 This flag is deprecated and will be removed in a future release. Use format=shell instead. periodt.
  • --help β€” Print usage summary.
  • --verbose β€” Verbose module output (she talks more).
  • --quiet β€” Quiet module output (she goes silent, mysterious).
  • --ui β€” Force launching GUI dialog.

πŸŽ€ Parameters

  • map=name [required] β€” Name of vector map. Or data source for direct OGR access.
  • layer=string β€” Layer number or name. Vector features can have category values in different layers, and this number determines which layer to use. When used with direct OGR access this is the layer name. Default: 1.
  • column=name [required] β€” Name of attribute column on which to calculate statistics (must be numeric, bestie, numeric only, she will not do vibes with text).
  • where=sql_query β€” WHERE conditions of SQL statement without 'where' keyword. Example: income < 1000 and population >= 10000.
  • percentile=float[,float,...] β€” Percentile to calculate (requires extended statistics flag). Options: 0-100. Default: 90.
  • format=name [required] β€” Output format. Options: plain, json, shell. Default: plain.
    • plain: Plain text output
    • json: JSON (JavaScript Object Notation)
    • shell: Shell script style for Bash eval

🌈 DESCRIPTION 🌈

v.db.univar calculates basic univariate statistics for numeric attributes in a vector attribute table. she will calculate the minimum, maximum, range, mean, standard deviation, variance, coefficient of variation, quartiles, median, and the 90th percentile. a whole buffet of numbers, and yes, we're obsessed. πŸ’…

now here's the tea: v.db.univar uses db.univar, which in turn uses db.select to grab the attribute values it's gonna crunch. which means the statistics are calculated based on the entries in the attribute table, not based on the features in the map. One attribute value is read from each line in the attribute table, whether there are no, one or several features with the category value referenced by that line, or whether any features have more than one category value. yes, that's a lot of whethers. it matters tho.

if you want feature-based (instead of attribute table-based) univariate statistics on attributes, go see v.univar instead. different girl, different job. πŸ‘‘


πŸ“ NOTES πŸ“

A database connection must be defined for the selected vector layer. no connection, no stats, no service. simple as. πŸ™ˆ


πŸ’– EXAMPLES πŸ’–

🌸 Univariate statistics on attribute table column

In this example, the 30 years precipitation data table is statistically analysed (North Carolina sample dataset) and univariate statistics performed:

# show columns of attribute table connected to precipitation map
v.info -c precip_30ynormals
# univariate statistics on 30 years annual precipitation in NC
v.db.univar precip_30ynormals column=annual

and she returns:

 Number of values: 136
 Minimum: 947.42
 Maximum: 2329.18
 Range: 1381.76
 Mean: 1289.31147058823
 [...]

look at that range. 1381.76. iconic. πŸ”₯

🌸 Univariate statistics on randomly sampled data points

In this example, random points are sampled from the elevation map (North Carolina sample dataset) and univariate statistics performed:

g.region raster=elevation -p
v.random output=samples n=100
v.db.addtable samples column="heights double precision"
v.what.rast samples raster=elevation column=heights
v.db.select samples
v.db.univar samples column=heights

random sampling arc, we love to see it. ✨

🌸 JSON output

This uses the JSON output of the module which is passed using a pipe (in Bash or other unix-like shell) to the jq tool which selects just the relevant statistic.

v.db.univar precip_30ynormals column=annual format=json | jq .statistics.mean

piping into jq to grab exactly one number? that's efficiency, that's a vibe check passed. 🫢


πŸ‘€ SEE ALSO πŸ‘€

db.univar, r.univar, v.univar, db.select, d.vect.thematic, v.random

GRASS SQL interface


🫢 AUTHORS 🫢

Michael Barton, Arizona State University

and authors of r.univar.sh (Markus Neteler et al.)

give them their flowers, they built this. πŸ’


🧚 SOURCE CODE 🧚

Available at: v.db.univar source code (history)

Latest change: Saturday Feb 14 00:16:26 2026 in commit: ae1ae67e52b94c5cef185fac50aa33b38a56875f

Main index | Vector index | Topics index | Keywords index | Graphical index | Full index


Β© 2003-2026 GRASS Development Team, GRASS 8.5.0 Reference Manual

okay and that's the whole page, bestie πŸ’– this was GRASS 8.5.0 flavor of v.db.univar, footer and all, shipped straight from the GRASS Documentation Team. go calc some stats, you're literally gonna ate it. πŸ‘‘βœ¨

πŸ“¦ where this page comes from