文档文档

使用 Geo 软件包处理形状数据

此页面记录了早期版本的 InfluxDB OSS。InfluxDB OSS v2 是最新的稳定版本。请参阅等效的 InfluxDB v2 文档: 使用 Geo 软件包处理形状数据

Geo 软件包中的函数需要以下数据模式

  • 包含 S2 Cell ID 作为令牌s2_cell_id 标签
  • 包含十进制度纬度 (WGS 84) 的 lat field 字段
  • 包含十进制度经度 (WGS 84) 的 lon field 字段

塑造地理时序数据

如果您的数据已包含纬度和经度字段,请使用 geo.shapeData()函数 重命名字段以符合 Geo 软件包的要求,将数据透视为行式集合,并为每个点生成 S2 Cell ID 令牌。

import "experimental/geo"

from(bucket: "example-bucket")
  |> range(start: -1h)
  |> filter(fn: (r) => r._measurement == "example-measurement")
  |> geo.shapeData(
    latField: "latitude",
    lonField: "longitude",
    level: 10
  )

生成 S2 Cell ID 令牌

Geo 软件包使用 S2 Geometry Library 在三维球体上表示地理坐标。球体被划分为 单元格,每个单元格都有一个唯一的 64 位标识符(S2 Cell ID)。网格和 S2 Cell ID 精度由 级别 定义。

为了更快地过滤,请使用更高的 S2 Cell ID 级别,但请注意,更高的级别会增加序列基数

Geo 软件包需要 S2 Cell ID 作为令牌。要生成 S2 Cell ID 令牌并添加到您的数据,请使用以下选项之一

使用 Telegraf 生成 S2 Cell ID 令牌

启用 Telegraf S2 Geo (s2geo) 处理器 以使用 latlon 字段值,在指定的 cell_level 生成 S2 Cell ID 令牌。

processors.s2geo 配置添加到您的 Telegraf 配置文件 (telegraf.conf)

[[processors.s2geo]]
  ## The name of the lat and lon fields containing WGS-84 latitude and
  ## longitude in decimal degrees.
  lat_field = "lat"
  lon_field = "lon"

  ## New tag to create
  tag_key = "s2_cell_id"

  ## Cell level (see https://s2geometry.io/resources/s2cell_statistics.html)
  cell_level = 9

Telegraf 将 S2 Cell ID 令牌存储在 s2_cell_id 标签中。

使用特定于语言的库生成 S2 Cell ID 令牌

许多编程语言都提供 S2 库,其中包含生成 S2 Cell ID 令牌的方法。将纬度和经度与 S2 Geometry Library 的 s2.CellID.ToToken 端点一起使用,以生成 s2_cell_id 标签。例如

使用 Flux 生成 S2 Cell ID 令牌

geo.s2CellIDToken() 函数 与现有的经度 (lon) 和纬度 (lat) 字段值一起使用,以生成并添加 S2 Cell ID 令牌。首先,使用 geo.toRows() 函数latlon 字段透视为行式集合

import "experimental/geo"

from(bucket: "example-bucket")
  |> range(start: -1h)
  |> filter(fn: (r) => r._measurement == "example-measurement")
  |> geo.toRows()
  |> map(fn: (r) => ({ r with
    s2_cell_id: geo.s2CellIDToken(point: {lon: r.lon, lat: r.lat}, level: 10)
  }))

geo.shapeData()函数 也生成 S2 Cell ID 令牌。


此页是否对您有帮助?

感谢您的反馈!


Flux 的未来

Flux 即将进入维护模式。您可以继续像现在这样使用它,而无需对代码进行任何更改。

阅读更多

InfluxDB 3 开源版现已发布公开 Alpha 版本

InfluxDB 3 开源版现已可用于 Alpha 测试,根据 MIT 或 Apache 2 许可获得许可。

我们正在发布两个作为 Alpha 版本一部分的产品。

InfluxDB 3 Core 是我们新的开源产品。它是用于时间序列和事件数据的最新数据引擎。InfluxDB 3 Enterprise 是一个商业版本,它建立在 Core 的基础上,增加了历史查询能力、读取副本、高可用性、可扩展性和细粒度的安全性。

有关如何入门的更多信息,请查看