v.profile(1)

πŸ’– v.profile πŸ’–

okay bestie, welcome to v.profile, a GRASS GIS User's Manual page 🫢 (that's the manual name, it's literally in the title up top, iykyk). We're in the vector toolkit today and this one is the profiling tool. Grab a snack πŸ“

✨ KEYWORDS ✨

vector, profile, transect

transect… the way that word alone is giving main character energy 😭


🌸 SYNOPSIS 🌸

okay so here's the whole vibe check on how you call it:

v.profile
v.profile --help
v.profile [-cz] input=name  [type=string[,string,...]]
[where=sql_query]   [layer=string]   [output=string]
[separator=character]   [dp=integer]  buffer=float  [map_output=name]
[coordinates=east,north[,east,north,...]]   [profile_map=name]
[profile_where=sql_query]   [profile_layer=integer]   [--overwrite]
[--help]  [--verbose]  [--quiet]  [--ui]

πŸŽ€ FLAGS πŸŽ€

  • -c β€” do not print column names πŸ™ˆ like, skip the header row bestie
  • -z β€” do not print 3D vector data (z values). ngl this only affects 3D vectors, so if ur map is flat it's just sitting there being decorative πŸ’…
  • --overwrite β€” allow output files to overwrite existing files 😀 (yes it will absolutely eat ur old file, that's the point)
  • --help β€” print usage summary ✨
  • --verbose β€” verbose module output πŸ—£οΈ
  • --quiet β€” quiet module output 🀫
  • --ui β€” force launching GUI dialog πŸ–±οΈ

πŸ¦‹ PARAMETERS πŸ¦‹

  • input=name [required] β€” Name of input vector map. Or data source for direct OGR access πŸ‘‘
  • type=string[,string,...] β€” Input feature type. Options: point, line. Default: point,line
  • where=sql_query β€” WHERE conditions of SQL statement without 'where' keyword. Example: income < 1000 and population >= 10000
  • layer=string β€” Layer number or name. Use features only from specified layer. Default: 1
  • output=string β€” Path to output text file or - for stdout. Default: -
  • separator=character β€” Field separator. Special characters: pipe, comma, space, tab, newline. Default: pipe
  • dp=integer β€” Number of significant digits. Options: 0-32. Default: 2
  • buffer=float [required] β€” Buffer (tolerance) for points in map units. How far points can be from sampling line. Default: 10
  • map_output=name β€” Name for profile line and buffer output map. Profile line and buffer around it will be written πŸ’«
  • coordinates=east,north[,east,north,...] β€” Coordinates for profiling line nodes. Specify profiling line vertexes and nodes πŸ“
  • profile_map=name β€” Profiling line map. Vector map containing profiling line
  • profile_where=sql_query β€” WHERE conditions for input profile line map. Use to select only one line from profiling line map
  • profile_layer=integer β€” Profiling line map layer. Default: 1

🌈 DESCRIPTION 🌈

v.profile prints out distance and attributes of points/lines along a profiling line. Distance is calculated from the first profiling line coordinate pair or from the beginning of vector line 🧚

The buffer (tolerance) parameter sets how far a point can be located from a profiling line and still be included in the output data set. The output map option can be used to visually check which points are profiled. The buffer (tolerance) setting does not affect lines. Lines are sampled at their crossing point with the profiling line ✨

By default Z values are printed if input vector is a 3D map. It can be disabled with the -z flag.

The profiling line can be provided as N,E coordinate pairs or from an input vector map. As a profiling line must be a single line, the user should use the profile_where parameter to select a single line from a profile input map if it contains multiple vector features πŸ‘€


πŸ’œ NOTES πŸ’œ

Currently the module can profile only points and lines (including 3D ones). Areas and other complex features are not supported. If in future users can provide reasonable examples how area sampling should work and why it is important, area (or any other feature type) sampling can be added πŸ€·β™€οΈ

okay so real talk bestie πŸ’€ Due to bugs in GRASS native buffering algorithms, this module for now depends on GEOS and will not function if GRASS is compiled without GEOS. This restriction will be removed as soon as GRASS native buffer generation is fixed. no cap.

πŸ”₯ EXAMPLES πŸ”₯

List all geonames along part of road NC-96 (NC Basic dataset)

The output will be stored in a file for later usage. We will use comma as delimiter and three numbers after decimal separator for distance. Output file will contain data for all points, that are within 500 m range to profiling line πŸš—

v.profile input=geonames@PERMANENT output=/home/user/NC_96_geonames.csv\
  separator=comma dp=3 buffer=500 profile_map=roadsmajor@PERMANENT profile_where=cat=56
# Now lets see the output:
cat NC_96_geonames.csv
Number,Distance,cat,GEONAMEID,NAME,ASCIINAME,ALTERNATEN,FEATURECLA,FEATURECOD,COUNTRYCOD,CC2,ADMIN1,POPULATION,ELEVATION,GTOPO30,TIMEZONE,MODIFICATI,PPLKEY,SRC_ID,MAINT_ID
1,360.719,26881,4482019,"New Zebulon Elementary School","New Zebulon Elementary School","","S","SCH","US","","NC",0,106,91,"America/Iqaluit","2006-01-15 00:00:00",0,0,0
2,846.806,22026,4476596,"Little River, Township of","Little River, Township of","","A","ADMD","US","","NC",0,0,91,"America/Iqaluit","2006-01-15 00:00:00",0,0,0
3,2027.918,16681,4470608,"Hendricks Pond","Hendricks Pond","","H","RSV","US","","NC",0,0,91,"America/Iqaluit","2006-01-15 00:00:00",0,0,0
4,2027.918,16690,4470622,"Hendricks Dam","Hendricks Dam","","S","DAM","US","","NC",0,0,91,"America/Iqaluit","2006-01-15 00:00:00",0,0,0
5,2999.214,39338,4496159,"Union Chapel","Union Chapel","","","","US","","NC",0,0,96,"America/Iqaluit","2006-01-15 00:00:00",0,0,0
6,3784.992,43034,4500325,"Zebulon Airport","Zebulon Airport","","S","AIRP","US","","NC",0,108,98,"America/Iqaluit","2006-01-15 00:00:00",0,0,0

Create river valley crossection and provide river marker (Spearfish dataset)

# Take elevation samples
r.profile input=elevation.dem@PERMANENT output=/home/user/elevation.profile \
  profile=600570.27364,4920613.41838,600348.034348,4920840.38617
# Now get distance to place where river marker should be set
v.profile input=streams@PERMANENT output=/home/user/river_profile.csv \
  east_north=600570.27364,4920613.41838,600348.034348,4920840.38617

😭 BUGS 😭

  • Strings are enclosed in double quotes ", still quotes within string are not escaped πŸ’€
  • Output does not contain Vector CAT values. Only way how to get CAT value is from the attribute table πŸ˜”
  • If sampled feature (point, line) contains multiple attribute entries (has multiple CAT values), only the first one is reported. If this is a limitation in some practical use case, a feature request in GRASS GIS issue tracker should be opened 🫢

🫢 SEE ALSO 🫢

r.profile, Linear Referencing System


πŸ‘‘ AUTHOR πŸ‘‘

Maris Nartiss


⭐ SOURCE CODE ⭐

Available at: v.profile source code (history)

Accessed: Saturday Jan 17 05:41:29 2026

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


and that's the whole page bestie 🌸 this was the GRASS GIS 8.4.2 Reference Manual version of v.profile(1), Β© 2003-2025 GRASS Development Team, and yeah we're on GRASS 8.4.2 at the bottom there. slay, go profile something βœ¨πŸ’…πŸ¦‹

πŸ“¦ where this page comes from