docs-v2/content/flux/v0.x/stdlib/experimental/geo/groupbyarea.md

3.5 KiB

title description menu weight flux/v0.x/tags
geo.groupByArea() function `geo.groupByArea()` groups rows by geographic area.
flux_0_x_ref
name parent identifier
geo.groupByArea experimental/geo experimental/geo/groupByArea
201
transformations
geotemporal

geo.groupByArea() groups rows by geographic area.

Area sizes are determined by the specified level. Each geographic area is assigned a unique identifier (the S2 cell ID token) which is stored in the newColumn. Results are grouped by newColumn.

Function type signature
(
    <-tables: stream[{A with s2_cell_id: string, lon: float, lat: float}],
    level: int,
    newColumn: string,
    ?s2cellIDLevel: int,
) => stream[B] where B: Record

{{% caption %}}For more information, see Function type signatures.{{% /caption %}}

Parameters

newColumn

({{< req >}}) Name of the new column for the unique identifier for each geographic area.

level

({{< req >}}) S2 Cell level used to determine the size of each geographic area.

s2cellIDLevel

S2 Cell level used in the s2_cell_id tag. Default is -1 (detects S2 cell level from the s2_cell_id tag).

tables

Input data. Default is piped-forward data (<-).

Examples

Group geotemporal data by geographic area

import "experimental/geo"

data
    |> geo.groupByArea(newColumn: "foo", level: 4)

{{< expand-wrapper >}} {{% expand "View example input and output" %}}

Input data

_time *id lat lon *s2_cell_id
2021-01-03T02:00:00Z a213b 39.08433 -75.9978 89bc
_time *id lat lon *s2_cell_id
2021-01-01T00:00:00Z a213b 41.01433 -70.7515 89e4
_time *id lat lon *s2_cell_id
2021-01-02T01:00:00Z a213b 40.9228 -73.3527 89ec

Output data

*foo _time id lat lon s2_cell_id
89b 2021-01-03T02:00:00Z a213b 39.08433 -75.9978 89bc
*foo _time id lat lon s2_cell_id
89f 2021-01-01T00:00:00Z a213b 41.01433 -70.7515 89e4
89f 2021-01-02T01:00:00Z a213b 40.9228 -73.3527 89ec

{{% /expand %}} {{< /expand-wrapper >}}