文档文档

geo 包

geo 包是实验性的,并且随时可能更改

geo 包提供了用于处理地理时空数据的工具,例如按地理位置进行过滤和分组。 导入 experimental/geo

import "experimental/geo"

Geo 模式要求

Geo 包使用 S2 Geometry Library 的 Go 实现。 geo 包中的函数需要以下内容

  • 包含 S2 单元 ID 作为令牌s2_cell_id 标签
  • 包含以十进制度表示的纬度(WGS 84)的 lat 字段
  • 包含以十进制度表示的经度(WGS 84)的 lon 字段

模式建议

  • 标识数据源的标签
  • 一个标识点类型的标签 (例如: start, stop, via)
  • 一个标识轨迹或路线的字段 (例如: id, tid)
地理时序线路协议示例
taxi,pt=start,s2_cell_id=89c2594 tip=3.75,dist=14.3,lat=40.744614,lon=-73.979424,tid=1572566401123234345i 1572566401947779410
bike,id=biker-007,pt=via,s2_cell_id=89c25dc lat=40.753944,lon=-73.992035,tid=1572588100i 1572567115

S2 单元格 ID

使用 latitude(纬度)和 longitude(经度)与 S2 Geometry Library 的 s2.CellID.ToToken 端点一起生成 s2_cell_id 标签。 指定你的 S2 单元格 ID 级别

注意: 要更快地进行过滤,请使用更高的 S2 单元格 ID 级别,但要知道更高的级别会增加 序列基数

S2 Geometry Library 的特定于语言的实现提供了生成 S2 单元格 ID 令牌的方法。 例如:

将 S2 单元格 ID 添加到现有的地理时序数据

使用 geo.shapeData()s2_cell_id 标签添加到包含纬度和经度值的字段的数据。

//...
  |> shapeData(
    latField: "latitude",
    lonField: "longitude",
    level: 10
  )

纬度和经度值

Flux 支持以 十进制度 (WGS 84) 表示的纬度和经度值。

坐标最小值最大值
纬度-90.090.0
经度-180.0180.0

区域定义

Geo 包中的许多函数根据地理区域过滤数据。 使用以下形状定义地理区域

box (矩形)

通过指定一个包含以下属性的记录来定义一个矩形区域

  • minLat: 以十进制度 (WGS 84) 表示的最小纬度 (Float)
  • maxLat: 以十进制度 (WGS 84) 表示的最大纬度 (Float)
  • minLon: 以十进制度 (WGS 84) 表示的最小经度 (Float)
  • maxLon: 以十进制度 (WGS 84) 表示的最大经度 (Float)
矩形区域示例
{
  minLat: 40.51757813,
  maxLat: 40.86914063,
  minLon: -73.65234375,
  maxLon: -72.94921875
}

circle (圆形)

通过指定一个包含以下属性的记录来定义一个圆形区域

  • lat: 圆心的纬度,以十进制度 (WGS 84) 表示 (Float)
  • lon: 圆心的经度,以十进制度 (WGS 84) 表示 (Float)
  • radius: 圆的半径,以千米 (km) 为单位 (Float)
圆形区域示例
{
  lat: 40.69335938,
  lon: -73.30078125,
  radius: 20.0
}

point (点)

通过指定一个包含以下属性的记录来定义一个点区域

  • lat: 纬度,以十进制度 (WGS 84) 表示 (Float)
  • lon: 经度,以十进制度 (WGS 84) 表示 (Float)
点区域示例
{
  lat: 40.671659,
  lon: -73.936631
}

polygon (多边形)

使用包含以下属性的记录定义一个自定义多边形区域

  • points: 定义自定义多边形的点 (记录数组)

    使用包含以下属性的记录定义每个点

    - **lat**: latitude in decimal degrees (WGS 84) _(Float)_
    - **lon**: longitude in decimal degrees (WGS 84) _(Float)_
    
多边形区域示例
{
  points: [
    {lat: 40.671659, lon: -73.936631},
    {lat: 40.706543, lon: -73.749177},
    {lat: 40.791333, lon: -73.880327}
  ]
}

GIS 几何定义

Geo 包中的许多函数基于地理信息系统 (GIS) 数据来操作数据。 使用以下内容定义 GIS 几何

linestring (线串)

使用包含以下属性的记录定义地理线串路径

  • linestring: 包含以逗号分隔的经度和纬度坐标对的字符串 (lon lat,)
{
  linestring: "39.7515 14.01433, 38.3527 13.9228, 36.9978 15.08433"
}

距离单位

geo 包支持以下距离测量单位

  • m - 米
  • km - 千米 (默认)
  • mile - 英里

定义距离单位

使用 units 选项来定义自定义测量单位

import "experimental/geo"

option geo.units = {distance: "mile"}

选项

option geo.units = {distance: "km"}

units

units 定义在地理时序操作中使用的测量单位。

函数


此页面是否对您有帮助?

感谢您的反馈!


Flux 的未来

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

阅读更多

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

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

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

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

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