3.3 KiB
title | list_title | description | menu | weight | canonical | v2 | list_code_example | ||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Work with geo-temporal data | Geo-temporal data | Use the Flux Geo package to filter geo-temporal data and group by geographic location or track. |
|
20 | /{{< latest "influxdb" "v2" >}}/query-data/flux/geo/ | /influxdb/v2.0/query-data/flux/geo/ | ```js import "experimental/geo" sampleGeoData |> geo.filterRows(region: {lat: 30.04, lon: 31.23, radius: 200.0}) |> geo.groupByArea(newColumn: "geoArea", level: 5) ``` |
Use the [Flux Geo package](/{{< latest "flux" >}}/stdlib/experimental/geo) to filter geo-temporal data and group by geographic location or track.
{{% warn %}} The Geo package is experimental and subject to change at any time. By using it, you agree to the [risks of experimental functions](/{{< latest "flux" >}}/stdlib/experimental/#experimental-functions-are-subject-to-change). {{% /warn %}}
To work with geo-temporal data:
-
Import the
experimental/geo
package.import "experimental/geo"
-
Load geo-temporal data. See below for sample geo-temporal data.
-
Do one or more of the following:
- Shape data to work with the Geo package
- Filter data by region (using strict or non-strict filters)
- Group data by area or by track
{{< children >}}
Sample data
Many of the examples in this section use a sampleGeoData
variable that represents
a sample set of geo-temporal data.
The Bird Migration Sample Data
available on GitHub provides sample geo-temporal data that meets the
[requirements of the Flux Geo package](/{{< latest "flux" >}}/stdlib/experimental/geo/#geo-schema-requirements).
Load annotated CSV sample data
Use the [experimental csv.from()
function](/{{< latest "flux" >}}/stdlib/experimental/csv/from/)
to load the sample bird migration annotated CSV data from GitHub:
import `experimental/csv`
sampleGeoData = csv.from(
url: "https://github.com/influxdata/influxdb2-sample-data/blob/master/bird-migration-data/bird-migration.csv"
)
{{% note %}}
csv.from(url: ...)
downloads sample data each time you execute the query (~1.3 MB).
If bandwidth is a concern, use the [to()
function](/{{< latest "flux" >}}/stdlib/built-in/outputs/to/)
to write the data to a bucket, and then query the bucket with [from()
](/{{< latest "flux" >}}/stdlib/built-in/inputs/from/).
{{% /note %}}
Write sample data to InfluxDB with line protocol
Use curl
and the influx write
command to write bird migration line protocol to InfluxDB.
Replace db/rp
with your destination bucket:
curl https://raw.githubusercontent.com/influxdata/influxdb2-sample-data/master/bird-migration-data/bird-migration.line --output ./tmp-data
influx write -b db/rp @./tmp-data
rm -f ./tmp-data
Use Flux to query the bird migration data and assign it to the sampleGeoData
variable:
sampleGeoData = from(bucket: "db/rp")
|> range(start: 2019-01-01T00:00:00Z, stop: 2019-12-31T23:59:59Z)
|> filter(fn: (r) => r._measurement == "migration")