Filter geo-temporal data by region

Use the `geo.filterRows` function to filter geo-temporal data by geographic region:

The following example uses the sample bird migration data and queries data points within 200km of Cairo, Egypt:

``````import "experimental/geo"

sampleGeoData
|> geo.filterRows(region: {lat: 30.04, lon: 31.23, radius: 200.0}, strict: true)
``````

Define a geographic region

Many functions in the Geo package filter data based on geographic region. Define a geographic region using one of the the following shapes:

box

Define a box-shaped region by specifying a record containing the following properties:

• minLat: minimum latitude in decimal degrees (WGS 84) (Float)
• maxLat: maximum latitude in decimal degrees (WGS 84) (Float)
• minLon: minimum longitude in decimal degrees (WGS 84) (Float)
• maxLon: maximum longitude in decimal degrees (WGS 84) (Float)
Example box-shaped region
``````{
minLat: 40.51757813,
maxLat: 40.86914063,
minLon: -73.65234375,
maxLon: -72.94921875,
}
``````

circle

Define a circular region by specifying a record containing the following properties:

• lat: latitude of the circle center in decimal degrees (WGS 84) (Float)
• lon: longitude of the circle center in decimal degrees (WGS 84) (Float)
Example circular region
``````{
lat: 40.69335938,
lon: -73.30078125,
}
``````

polygon

Define a polygonal region with a record containing the latitude and longitude for each point in the polygon:

• points: points that define the custom polygon (Array of records)

Define each point with a record containing the following properties:

``````- **lat**: latitude in decimal degrees (WGS 84) _(Float)_
- **lon**: longitude in decimal degrees (WGS 84) _(Float)_
``````
Example polygonal region
``````{
points: [
{lat: 40.671659, lon: -73.936631},
{lat: 40.706543, lon: -73.749177},
{lat: 40.791333, lon: -73.880327},
]
}
``````

Strict and non-strict filtering

In most cases, the specified geographic region does not perfectly align with S2 grid cells.

• Non-strict filtering returns points that may be outside of the specified region but inside S2 grid cells partially covered by the region.
• Strict filtering returns only points inside the specified region.

Strict filtering is less performant, but more accurate than non-strict filtering.

S2 grid cell
Filter region
Returned point

Strict filtering

Non-strict filtering