Skip to content

r.object.geometry

Calculates geometry parameters for raster objects.

r.object.geometry [-m] input=name [output=name] [separator=character] format=name [--overwrite] [--verbose] [--quiet] [--qq] [--ui]

Example:

r.object.geometry input=name format=plain

grass.script.parse_command("r.object.geometry", input, output=None, separator="pipe", format="plain", flags=None, overwrite=False, verbose=False, quiet=False, superquiet=False)

Example:

gs.parse_command("r.object.geometry", input="name", format="json")

Parameters

input=name [required]
    Name of input raster map
output=name
    Name for output file
separator=character
    Field separator
    Special characters: pipe, comma, space, tab, newline
    Default: pipe
format=name [required]
    Output format
    Allowed values: plain, json
    Default: plain
    plain: Plain text output
    json: JSON (JavaScript Object Notation)
-m
    Use meters as units instead of cells

--overwrite
    Allow output files to overwrite existing files
--help
    Print usage summary
--verbose
    Verbose module output
--quiet
    Quiet module output
--qq
    Very quiet module output
--ui
    Force launching GUI dialog

input : str, required
    Name of input raster map
    Used as: input, raster, name
output : str, optional
    Name for output file
    Used as: output, file, name
separator : str, optional
    Field separator
    Special characters: pipe, comma, space, tab, newline
    Used as: input, separator, character
    Default: pipe
format : str, required
    Output format
    Used as: name
    Allowed values: plain, json
    plain: Plain text output
    json: JSON (JavaScript Object Notation)
    Default: plain
flags : str, optional
    Allowed values: m
    m
        Use meters as units instead of cells

overwrite: bool, optional
    Allow output files to overwrite existing files
    Default: False
verbose: bool, optional
    Verbose module output
    Default: False
quiet: bool, optional
    Quiet module output
    Default: False
superquiet: bool, optional
    Very quiet module output
    Default: False

DESCRIPTION

r.object.geometry calculates form statistics of raster objects in the input map and writes it to the output text file (or standard output if no output filename or '-' is given), with fields separated by the chosen separator. Objects are defined as clumps of adjacent cells with the same category value (e.g. output of r.clump or i.segment).

By default, values are in pixels. If values in meters is desired, the user can set the -m flag. If the current working region is in lat-long or has non-square pixels, using meters is recommended.

Statistics currently calculated are exactly the same as in v.to.db (except for compact_square and mean coordinates):

  • area
  • perimeter
  • compact_square (compactness compared to a square: compact_square = 4 * sqrt(area) / perimeter)
  • compact_circle (compactness compared to a circle: compact_circle = perimeter / ( 2 * sqrt(PI * area) ))
  • fractal dimension ( fd = 2 * ( log(perimeter) / log(area + 0.001) ) )
  • mean x coordinate of object (in map units)
  • mean y coordinate of object (in map units)

EXAMPLE

g.region raster=soilsID
r.object.geometry input=soilsID output=soils_geom.txt

The format=json option can be used to change the output format to JSON:

r.object.geometry input=zipcodes format=json
[
    {
        "category": 1,
        "area": 106,
        "perimeter": 62,
        "compact_circle": 1.6987670351864215,
        "compact_square": 0.66423420264432265,
        "fd": 1.7699924681225903,
        "mean_x": 631382.07547169807,
        "mean_y": 222764.15094339623
    },
    {
        "category": 2,
        "area": 57,
        "perimeter": 36,
        "compact_circle": 1.3451172460704992,
        "compact_square": 0.83887049280786108,
        "fd": 1.772672742164326,
        "mean_x": 643460.52631578944,
        "mean_y": 217232.45614035087
    },
    {
        "category": 3,
        "area": 10,
        "perimeter": 16,
        "compact_circle": 1.4272992929222168,
        "compact_square": 0.79056941504209488,
        "fd": 2.4081353865496951,
        "mean_x": 631300,
        "mean_y": 215450
    },
    {
        "category": 4,
        "area": 63,
        "perimeter": 60,
        "compact_circle": 2.1324361862292305,
        "compact_square": 0.52915026221291817,
        "fd": 1.9764401337147652,
        "mean_x": 642345.23809523811,
        "mean_y": 226599.20634920636
    },
    {
        "category": 5,
        "area": 491,
        "perimeter": 156,
        "compact_circle": 1.9859985189304281,
        "compact_square": 0.56816717451693177,
        "fd": 1.6299200778082998,
        "mean_x": 637912.93279022397,
        "mean_y": 220636.96537678209
    },
    {
        "category": 6,
        "area": 83,
        "perimeter": 60,
        "compact_circle": 1.8578355639603314,
        "compact_square": 0.60736223860961991,
        "fd": 1.8531256328449071,
        "mean_x": 635846.38554216863,
        "mean_y": 227219.8795180723
    }
]

SEE ALSO

i.segment, r.clump, v.to.db

AUTHORS

Moritz Lennert
Markus Metz (diagonal clump tracing)

SOURCE CODE

Available at: r.object.geometry source code (history)
Latest change: Wednesday Feb 12 13:18:24 2025 in commit b624fc2