v.kernel(1)

πŸ’– v.kernel β€” the GRASS GIS glow-up for your points πŸ’–

okay bestie, welcome to v.kernel(1), a page straight out of the GRASS GIS User's Manual. this one's a baddie: it makes density maps. raster ones, vector ones, network ones. the whole vibe. let's get into it 🫢


✨ NAME ✨

v.kernel β€” generates a raster density map from vector points map. density is computed using a moving kernel. optionally generates a vector density map on a vector network. yes, it does both. versatile queen. πŸ‘‘


🏷️ KEYWORDS 🏷️

vector, kernel density, point density, heatmap, hotspot

like... it's giving heatmap. it's giving hotspot. iykyk. πŸ”₯


🌸 SYNOPSIS 🌸

v.kernel
v.kernel --help
v.kernel [-oqnm] input=name  [net=name]   [output=name]
[net_output=name]  radius=float  [dsize=float]   [segmax=float]
[distmax=float]   [multiplier=float]   [node=string]   [kernel=string]
[--overwrite]  [--help]  [--verbose]  [--quiet]  [--ui]

πŸŽ€ Flags πŸŽ€

  • -o β€” tries to calculate an optimal radius, using the value you gave for radius as the maximum. experimental, bestie. handle with care πŸ™ˆ
  • -q β€” only calculates the optimal radius and then dips (no map gets written). just the number, nothing else, periodt.
  • -n β€” in network mode, normalizes values by the sum of density multiplied by the length of each segment. the integral over the output map then gives 1.0 * multiplier. math ate. πŸ’…
  • -m β€” in network mode, multiplies the result by the number of input points.
  • --overwrite β€” lets output files overwrite files that already exist. chaotic but permitted.
  • --help β€” prints the usage summary.
  • --verbose β€” verbose module output. it will tell you things. so many things.
  • --quiet β€” quiet module output. shhh.
  • --ui β€” forces the GUI dialog to launch. main character GUI energy.

🧚 Parameters 🧚

  • input=name [required] β€” name of the input vector map with training points. this is the whole point of the operation. the points. the moment. ⭐
  • net=name β€” name of the input network vector map. give it this if you want the network flavor.
  • output=name β€” name for the output raster map.
  • net_output=name β€” name for the output vector density map. outputs a vector map if a network map is given.
  • radius=float [required] β€” kernel radius, in map units. required, bestie. no skipping.
  • dsize=float β€” discretization error, in map units. Default: 0.
  • segmax=float β€” maximum length of segment on network. Default: 100.
  • distmax=float β€” maximum distance from point to network. Default: 100.
  • multiplier=float β€” multiply the density result by this number. Default: 1.
  • node=string β€” node method. Options: none, split. Default: none.
    • none: no method applied at nodes with more than 2 arcs
    • split: equal split (Okabe 2009) applied at nodes
  • kernel=string β€” kernel function. Options: uniform, triangular, epanechnikov, quartic, triweight, gaussian, cosine. Default: gaussian.

πŸ’œ DESCRIPTION πŸ’œ

so, v.kernel generates a raster density map from vector points data using a moving kernel. the kernel density functions you can choose from are uniform, triangular, epanechnikov, quartic, triweight, gaussian, and cosine β€” and the default is gaussian, because gaussian is that girl. ✨

the module can also generate a vector density map on a vector network. here's the tea tho: conventional kernel functions produce biased estimates by overestimating the densities around network nodes. meanwhile the equal split method of Okabe et al. (2009) produces unbiased density estimates. the equal split method uses the kernel function you picked with the kernel option, and you turn it on with node=split. iconic behavior, honestly. πŸ¦‹


πŸ“ NOTES πŸ“

the multiplier option exists to overcome the limitation that the resulting density, when you're outputting a vector map, is stored as category (an integer). the density result stored as category may be multiplied by this number. so like... it's a workaround. a cute little workaround. πŸ’…

for the gaussian kernel, the standard deviation for the gaussian function is set to 1/4 of the radius. noted. no cap.

with the -o flag (experimental!), the command tries to calculate an optimal radius. the value of radius is taken as the maximum value. the radius is calculated based on the gaussian function, using ALL points β€” not just those in the current region. all of them. every single one. πŸ‘‘


🌈 EXAMPLES 🌈

compute density of points (using a vector map of schools from the North Carolina sample dataset):

g.region region=wake_30m
v.kernel input=schools_wake output=schools_density radius=5000 multiplier=1000000
r.colors map=schools_density color=bcyr

School density

like... look at her go. πŸŽ€


πŸ’€ KNOWN ISSUES πŸ’€

the module only considers the presence of points, but not (yet) any attribute values. so your attributes are just... sitting there. unread. someday, bestie. someday. 😭


πŸ“š REFERENCES πŸ“š

  • Okabe, A., Satoh, T., Sugihara, K. (2009). A kernel density estimation method for networks, its computational method and a GIS-based tool. International Journal of Geographical Information Science, Vol 23(1), pp. 7-32. DOI: 10.1080/13658810802475491

πŸ‘€ SEE ALSO πŸ‘€

v.surf.rst

Overview: Interpolation and Resampling in GRASS GIS


πŸ‘‘ AUTHORS πŸ‘‘

  • Stefano Menegon, ITC-irst, Trento, Italy
  • Radim Blazek (additional kernel density functions and network part)

πŸ”₯ SOURCE CODE πŸ”₯

Available at: v.kernel source code (history)

Accessed: Saturday Jan 17 05:41:23 2026

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

Β© 2003-2025 GRASS Development Team, GRASS GIS 8.4.2 Reference Manual


and that's the whole page, bestie!! this was written for GRASS 8.4.2 (the source/version vibe, fr fr) and accessed on Saturday Jan 17 05:41:23 2026 β€” so you know it's fresh. go make some density maps, you absolute legend. slay. πŸ’–βœ¨πŸŒΈ

πŸ“¦ where this page comes from