docs-v2/content/enterprise_influxdb/v1.9/flux/guides/geo/_index.md

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.
enterprise_influxdb_1_9
name parent
Geo-temporal data Query with Flux
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:

  1. Import the experimental/geo package.

    import "experimental/geo"
    
  2. Load geo-temporal data. See below for sample geo-temporal data.

  3. Do one or more of the following:

{{< 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")