From eb218e89939e7ac5a6193fb76e1400e895be5a18 Mon Sep 17 00:00:00 2001 From: Scott Anderson Date: Mon, 23 Mar 2020 14:14:04 -0600 Subject: [PATCH] updated geo guides to address PR feedback --- content/v2.0/query-data/flux/geo/_index.md | 24 +++++++++---- .../query-data/flux/geo/filter-by-region.md | 17 +++++----- .../query-data/flux/geo/group-geo-data.md | 20 +++++------ .../query-data/flux/geo/shape-geo-data.md | 34 +++++++++---------- .../flux/stdlib/experimental/geo/_index.md | 5 ++- layouts/shortcodes/children.html | 2 +- 6 files changed, 56 insertions(+), 46 deletions(-) diff --git a/content/v2.0/query-data/flux/geo/_index.md b/content/v2.0/query-data/flux/geo/_index.md index 8b6e3a597..3cc45fae4 100644 --- a/content/v2.0/query-data/flux/geo/_index.md +++ b/content/v2.0/query-data/flux/geo/_index.md @@ -11,19 +11,31 @@ weight: 220 Use the [Flux Geo package](/v2.0/reference/flux/stdlib/experimental/geo) to filter geo-temporal data and group by geographic location or track. -Import the `experimental/geo` package. - -```js -import "experimental/geo" -``` {{% warn %}} The Geo package is experimental and subject to change at any time. By using it, you agree to the [risks of experimental functions](/v2.0/reference/flux/stdlib/experimental/#use-experimental-functions-at-your-own-risk). {{% /warn %}} +**To work with geo-temporal data:** + +1. Import the `experimental/geo` package. + + ```js + import "experimental/geo" + ``` + +2. Load geo-temporal data. _See below for [sample geo-temporal data](#sample-data)._ +3. Do one or more of the following: + + - [Shape data to work with the Geo package](#shape-data-to-work-with-the-geo-package) + - [Filter data by region](#filter-geo-temporal-data-by-region) (using strict or non-strict filters) + - [Group data by area or by track](#group-geo-temporal-data) + {{< children >}} +--- + ## Sample data Many of the examples in this section use a `sampleGeoData` variable that represents a sample set of geo-temporal data. @@ -44,7 +56,7 @@ sampleGeoData = csv.from( ``` {{% note %}} -This downloads all the sample data each time you execute the query **(~1.3 MB)**. +`csv.from(url: ...)` downloads sample data each time you execute the query **(~1.3 MB)**. If bandwidth is a concern, use the [`to()` function](/v2.0/reference/flux/stdlib/built-in/outputs/to/) to write the data to a bucket, and then query the bucket with [`from()`](/v2.0/reference/flux/stdlib/built-in/inputs/from/). {{% /note %}} diff --git a/content/v2.0/query-data/flux/geo/filter-by-region.md b/content/v2.0/query-data/flux/geo/filter-by-region.md index e788a6f54..cffde7f5a 100644 --- a/content/v2.0/query-data/flux/geo/filter-by-region.md +++ b/content/v2.0/query-data/flux/geo/filter-by-region.md @@ -19,13 +19,11 @@ list_code_example: | ``` --- -Use the [`geo.fitlerRows` function](/v2.0/reference/flux/stdlib/geo/filterrows/) -to filter geo-temporal data by geographic region. -Define a box-shaped, circular, or polygonal region to filter by. -Enable or disable strict filtering. +Use the [`geo.filterRows` function](/v2.0/reference/flux/stdlib/geo/filterrows/) +to filter geo-temporal data by geographic region: -- [Define geographic regions](#define-geographic-regions) -- [Strict and non-strict filtering](#strict-and-non-strict-filtering) +1. [Define a geographic region](#define-geographic-regions) +2. [Use strict or non-strict filtering](#strict-and-non-strict-filtering) The following example uses the [sample bird migration data](/v2.0/query-data/flux/geo/#sample-data) and queries data points **within 200km of Cairo, Egypt**: @@ -40,9 +38,9 @@ sampleGeoData ) ``` -## Define geographic regions +## Define a geographic region Many functions in the Geo package filter data based on geographic region. -Define geographic regions using the following shapes: +Define a geographic region using one of the the following shapes: - [box](#box) - [circle](#circle) @@ -83,7 +81,8 @@ Define a circular region by specifying an object containing the following proper ``` ### polygon -Define a custom polygon region using an object containing the following properties: +Define a polygonal region with an object containing the latitude and longitude for +each point in the polygon: - **points**: points that define the custom polygon _(Array of objects)_ diff --git a/content/v2.0/query-data/flux/geo/group-geo-data.md b/content/v2.0/query-data/flux/geo/group-geo-data.md index a0519387b..8a4d64c3d 100644 --- a/content/v2.0/query-data/flux/geo/group-geo-data.md +++ b/content/v2.0/query-data/flux/geo/group-geo-data.md @@ -1,8 +1,8 @@ --- title: Group geo-temporal data description: > - Use the `geo.groupByArea()` and `geo.groupByTrack()` functions to group geo-temporal - data points by area or by tracks or routes. + Use the `geo.groupByArea()` to group geo-temporal data by area and `geo.asTracks()` + to group data into tracks or routes. menu: v2_0: parent: Geo-temporal data @@ -17,8 +17,8 @@ list_code_example: | ``` --- -Use the `geo.groupByArea()` and `geo.asTracks()` functions to group geo-temporal -data points by area or by tracks or routes. +Use the `geo.groupByArea()` to group geo-temporal data by area and `geo.asTracks()` +to group data into tracks or routes. - [Group data by area](#group-data-by-area) - [Group data into tracks or routes](#group-data-into-tracks-or-routes) @@ -28,9 +28,9 @@ Use the [`geo.groupByArea()` function](/v2.0/reference/flux/stdlib/experimental/ to group geo-temporal data points by geographic area. Areas are determined by [S2 grid cells](https://s2geometry.io/devguide/s2cell_hierarchy.html#s2cellid-numbering) -- Use the `newColumn` parameter to specify a new column in which to store the unique area identifier for each point. -- Use the `level` parameter to specify the [S2 cell level](https://s2geometry.io/resources/s2cell_statistics) - to use when calculating geographic areas. +- Specify a new column to store the unique area identifier for each point with the `newColumn` parameter. +- Specify the [S2 cell level](https://s2geometry.io/resources/s2cell_statistics) + to use when calculating geographic areas with the `level` parameter. The following example uses the [sample bird migration data](/v2.0/query-data/flux/geo/#sample-data) to query data points within 200km of Cairo, Egypt and group them by geographic area: @@ -46,13 +46,13 @@ sampleGeoData ) ``` -### Group data into tracks or routes +### Group data by track or route Use [`geo.asTracks()` function](/v2.0/reference/flux/stdlib/experimental/geo/astracks/) to group data points into tracks or routes and order them by time or other columns. Data must contain a unique identifier for each track. For example: `id` or `tid`. -- Use the `groupBy` parameter to specify columns that uniquely identify each track or route. -- Use the `sortBy` parameter to specify which columns to sort by. Default is `["_time"]`. +- Specify columns that uniquely identify each track or route with the `groupBy` parameter. +- Specify which columns to sort by with the `sortBy` parameter. Default is `["_time"]`. The following example uses the [sample bird migration data](/v2.0/query-data/flux/geo/#sample-data) to query data points within 200km of Cairo, Egypt and group them into routes unique diff --git a/content/v2.0/query-data/flux/geo/shape-geo-data.md b/content/v2.0/query-data/flux/geo/shape-geo-data.md index 9a688928e..a93b81e42 100644 --- a/content/v2.0/query-data/flux/geo/shape-geo-data.md +++ b/content/v2.0/query-data/flux/geo/shape-geo-data.md @@ -38,7 +38,7 @@ Functions in the Geo package require the following data schema: ## Rename latitude and longitude fields Use [`map()`](/v2.0/reference/flux/stdlib/built-in/transformations/map/) to rename -existing latitude and longitude fields keys using other names. +existing latitude and longitude fields using other names. ```js from(bucket: "example-bucket") @@ -53,31 +53,29 @@ from(bucket: "example-bucket") ``` ## Generate S2 cell ID tokens -The Geo package uses the [S2 Geometry Library](https://s2geometry.io/) which -represents geographic coordinates on a three-dimensional sphere. +The Geo package uses the [S2 Geometry Library](https://s2geometry.io/) to represent +geographic coordinates on a three-dimensional sphere. The sphere is divided into [cells](https://s2geometry.io/devguide/s2cell_hierarchy), each with a unique 64-bit identifier (S2 cell ID). Grid and S2 cell ID accuracy are defined by a [level](https://s2geometry.io/resources/s2cell_statistics). {{% note %}} -For faster filtering, use higher S2 Cell ID levels. -But know that that higher levels increase [series cardinality](/v2.0/reference/glossary/#series-cardinality). +To filter more quickly, use higher S2 Cell ID levels, +but know that that higher levels increase [series cardinality](/v2.0/reference/glossary/#series-cardinality). {{% /note %}} The Geo package requires S2 cell IDs as tokens. -Use one of the following options to generate and add S2 cell IDs to your geo-temporal data: +To generate add S2 cell IDs tokens to your data, use one of the following options: -- [Use the Telegraf S2 Geo processor](#use-the-telegraf-s2-geo-processor) -- [Use language-specific S2 libraries](#use-language-specific-s2-libraries) -- [Add S2 cell ID token with Flux](#add-s2-cell-id-token-with-flux) +- [Generate S2 cell ID tokens with Telegraf](#generate-s2-cell-id-tokens-with-telegraf) +- [Generate S2 cell ID tokens language-specific libraries](#generate-s2-cell-id-tokens-language-specific-libraries) +- [Generate S2 cell ID tokens with Flux](#generate-s2-cell-id-tokens-with-flux) -### Use the Telegraf S2 Geo processor -The [Telegraf S2 Geo (`s2geo`) processor](https://github.com/influxdata/telegraf/tree/master/plugins/processors/s2geo) -uses `lat` and `lon` field values to generate S2 cell ID tokens at a specified `cell_level`. +### Generate S2 cell ID tokens with Telegraf +Enable the [Telegraf S2 Geo (`s2geo`) processor](https://github.com/influxdata/telegraf/tree/master/plugins/processors/s2geo) +to generate S2 cell ID tokens at a specified `cell_level` using `lat` and `lon` field values. -To have Telegraf use existing latitude -and longitude values to generate S2 cell ID tokens and assign them to the `s2_cell_id` -tag in each line of line protocol, add the following to your `telegraf.conf`: +Add the `processors.s2geo` configuration to your Telegraf configuration file (`telegraf.conf`): ```toml [[processors.s2geo]] @@ -93,7 +91,9 @@ tag in each line of line protocol, add the following to your `telegraf.conf`: cell_level = 9 ``` -### Use language-specific S2 libraries +Telegraf stores the S2 cell ID token in the `s2_cell_id` tag. + +### Generate S2 cell ID tokens language-specific libraries Many programming languages offer S2 Libraries with methods for generating S2 cell ID tokens. Use latitude and longitude with the `s2.CellID.ToToken` endpoint of the S2 Geometry Library to generate `s2_cell_id` tags. For example: @@ -102,7 +102,7 @@ Library to generate `s2_cell_id` tags. For example: - **Python:** [s2sphere.CellId.to_token()](https://s2sphere.readthedocs.io/en/latest/api.html#s2sphere.CellId) - **JavaScript:** [s2.cellid.toToken()](https://github.com/mapbox/node-s2/blob/master/API.md#cellidtotoken---string) -### Add S2 cell ID tokens with Flux +### Generate S2 cell ID tokens with Flux Use the [`geo.s2CellIDToken()` function](/v2.0/reference/flux/stdlib/experimental/geo/s2cellidtoken/) with existing longitude (`lon`) and latitude (`lat`) field values to generate and add the S2 cell ID token. First, use the [`geo.toRows()` function](/v2.0/reference/flux/stdlib/experimental/geo/torows/) diff --git a/content/v2.0/reference/flux/stdlib/experimental/geo/_index.md b/content/v2.0/reference/flux/stdlib/experimental/geo/_index.md index 514761f14..46d77d612 100644 --- a/content/v2.0/reference/flux/stdlib/experimental/geo/_index.md +++ b/content/v2.0/reference/flux/stdlib/experimental/geo/_index.md @@ -48,9 +48,8 @@ Geometry Library to generate `s2_cell_id` tags. Specify your [S2 Cell ID level](https://s2geometry.io/resources/s2cell_statistics.html). {{% note %}} -For faster filtering, use higher S2 Cell ID levels. -But know that that higher levels increase -[series cardinality](/v2.0/reference/glossary/#series-cardinality). +To filter more quickly, use higher S2 Cell ID levels, +but know that that higher levels increase [series cardinality](/v2.0/reference/glossary/#series-cardinality). {{% /note %}} Language-specific implementations of the S2 Geometry Library provide methods for diff --git a/layouts/shortcodes/children.html b/layouts/shortcodes/children.html index f24ca8051..fedd86036 100644 --- a/layouts/shortcodes/children.html +++ b/layouts/shortcodes/children.html @@ -18,7 +18,7 @@ {{ $title := cond ( isset .Params "list_title" ) .Params.list_title .Title }} {{ $url := cond ( isset .Params "external_url" ) .Params.external_url .RelPermalink }} {{ $target := cond ( isset .Params "external_url" ) "_blank" "" }} -

{{ $title }}

+

{{ $title }}

{{- if .Description }}{{- .Description | markdownify -}} {{ else }}{{- .Summary | markdownify -}}