Documentation

geo.gridFilter() function

geo.gridFilter() is experimental and subject to change at any time.

geo.gridFilter() filters data by a specified geographic region.

The function compares input data to a set of S2 cell ID tokens located in the specified region. Input data must include an s2_cell_id column that is part of the group key.

Note: S2 Grid cells may not perfectly align with the defined region, so results may include data with coordinates outside the region, but inside S2 grid cells partially covered by the region. Use geo.toRows() and geo.strictFilter() after geo.gridFilter() to precisely filter points.

Function type signature
(
    <-tables: stream[{B with s2_cell_id: string}],
    region: A,
    ?level: int,
    ?maxSize: int,
    ?minSize: int,
    ?s2cellIDLevel: int,
    ?units: {distance: string},
) => stream[{B with s2_cell_id: string}] where A: Record

For more information, see Function type signatures.

Parameters

region

(Required) Region containing the desired data points.

Specify record properties for the shape.

minSize

Minimum number of cells that cover the specified region. Default is 24.

maxSize

Maximum number of cells that cover the specified region. Default is -1 (unlimited).

level

S2 cell level of grid cells. Default is -1.

Note: level is mutually exclusive with minSize and maxSize and must be less than or equal to s2cellIDLevel.

s2cellIDLevel

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

units

Record that defines the unit of measurement for distance. Default is the geo.units option.

tables

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

Examples

Filter data to a specified region

import "experimental/geo"

data
    |> geo.gridFilter(region: {lat: 40.69335938, lon: -73.30078125, radius: 20.0})

View example input and output


Was this page helpful?

Thank you for your feedback!


Telegraf Enterprise now in public beta

Get early access to the Telegraf Controller and provide feedback to help shape the future of Telegraf Enterprise.

See the Blog Post

The upcoming Telegraf Enterprise offering is for organizations running Telegraf at scale and is comprised of two key components:

  • Telegraf Controller: A control plane (UI + API) that centralizes Telegraf configuration management and agent health visibility.
  • Telegraf Enterprise Support: Official support for Telegraf Controller and Telegraf plugins.

Join the Telegraf Enterprise beta to get early access to the Telegraf Controller and provide feedback to help shape the future of Telegraf Enterprise.

For more information:

InfluxDB Docker latest tag changing to InfluxDB 3 Core

On May 27, 2026, the latest tag for InfluxDB Docker images will point to InfluxDB 3 Core. To avoid unexpected upgrades, use specific version tags in your Docker deployments.

If using Docker to install and run InfluxDB, the latest tag will point to InfluxDB 3 Core. To avoid unexpected upgrades, use specific version tags in your Docker deployments. For example, if using Docker to run InfluxDB v2, replace the latest version tag with a specific version tag in your Docker pull command–for example:

docker pull influxdb:2