网站301跳转代码,做网站推广怎么说广告词,wap网站建设兴田德润实惠,做电影网站用什么程序CnosDB 在最近新发布的 2.4.0 版本中增加对时空函数的支持。 概述
时空函数是一种用于描述时空结构和演化的函数。它在物理学、数学和计算机科学等领域中都有广泛的应用。时空函数可以描述物体在时空中的位置、速度、加速度以及其他相关属性。
用法
CnosDB 将使用一种全新的… CnosDB 在最近新发布的 2.4.0 版本中增加对时空函数的支持。 概述
时空函数是一种用于描述时空结构和演化的函数。它在物理学、数学和计算机科学等领域中都有广泛的应用。时空函数可以描述物体在时空中的位置、速度、加速度以及其他相关属性。
用法
CnosDB 将使用一种全新的数据类型 Geometry来支持地理信息系统。
创建表的时候可以指定列的类型为Geometry
create table geo_table (geo geometry(object_type, )
);目前 CnosDB 中使用 WKT 格式来存储Geometry类型Geometry类型下有 7 种几何对象
WKT 是是一种开放的国际标准全拼为 Well-Known Text 。 几何对象 语法描述 点 POINT(x1y1) 线 LINESTRING(x1y1,x2y2,...) 多边形 POLYGON((x1y1,y1y2)) 多点 MULTIPOINT (x1 y1, x2 y2, ...) 多线 MULTILINESTRING ((x1 y1, x2 y2, ...), (x1 y1, x2 y2, ...)) 多面多多边形 MULTIPOLYGON (((x1 y1, x2 y2, ...)), ((x1 y1, x2 y2, ...))) 几何对象集合 GEOMETRYCOLLECTION (geometry tag1 wkt data1, geometry tag2 wkt data2, ...)
示例 几何对象 示例 点 POINT(30 10) 线 LINESTRING (30 10, 10 30, 40 40) 多边形 POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10)) POLYGON ((35 10, 45 45, 15 40, 10 20, 35 10), (20 30, 35 35, 30 20, 20 30)) 多点 MULTIPOINT ((10 40), (40 30), (20 20), (30 10)) MULTIPOINT (10 40, 40 30, 20 20, 30 10) 多线 MULTILINESTRING ((10 10, 20 20, 10 40), (40 40, 30 30, 40 20, 30 10)) 几何对象集合 GEOMETRYCOLLECTION (POINT (40 10), LINESTRING (10 10, 20 20, 10 40), POLYGON ((40 40, 20 45, 45 30, 40 40)))
支持函数
为了更好地操纵 Geometry 类型CnosDB 提供了 ST_Geometry SQL 系列的函数来计算几何体的性质和几何体之间的关系
ST_AsBinary(geometry)
将几何对象转换为 WKB 格式WKB 格式是由 OpenGIS 规范定义的用于以二进制流的形式交换几何数据二进制流由含几何 WKB 信息的 BLOB 值表示。
参数类型Geometry
返回类型Binary
示例
select ST_AsBinary(POINT (1 1))
返回结果为16进制
--------------------------------------------
| st_AsBinary(Utf8(POINT (1 1))) |
--------------------------------------------
| 0101000000000000000000f03f000000000000f03f |
--------------------------------------------
第一个字节表示数据的字节序01
后面4个字节表示对象的几何类型 01000000
POINT的值X和Y用8字节double类型的数据表示000000000000F03F000000000000F03F
ST_GeomFromWKB
功能把WKB格式二进制转为Geometry类型
参数类型 Binary
返回类型 Geometry
示例
SELECT ST_GeomFromWKB(ST_AsBinary(POINT(0 3)))
返回的结果
-------------------------------------------------
| st_GeomFromWKB(st_AsBinary(Utf8(POINT(0 3)))) |
-------------------------------------------------
| POINT(0 3) |
-------------------------------------------------
ST_Distance(geometry1, geometry2)
功能 ST_Distance 返回两个几何体的 2D 投影之间的最小欧氏距离。
参数类型Binary
返回类型 Double
示例
两点间距离
SELECT ST_Distance(POINT(1 0), POINT(0 0),);----------------------------------------------------
| st_distance(Utf8(POINT(1 0)),Utf8(POINT(0 0))) |
----------------------------------------------------
| 1.0 |
----------------------------------------------------
返回结果
----------------------------------------------------
| st_distance(Utf8(POINT(1 0)),Utf8(POINT(0 0))) |
----------------------------------------------------
| 1.0 |
----------------------------------------------------
点到直线距离
SELECT ST_Distance(POINT(0 0), LINESTRING (30 10, 10 30, 40 40));
返回结果
--------------------------------------------------------------------------
| st_distance(Utf8(POINT(0 0)),Utf8(LINESTRING (30 10, 10 30, 40 40))) |
--------------------------------------------------------------------------
| 28.284271247461902 |
--------------------------------------------------------------------------
平面和平面之间的距离
SELECT ST_Distance(POLYGON((0 2,1 1,0 -1,0 2)), POLYGON((-1 -3,-2 -1,0 -3,-1 -3))) as distance;
返回结果
--------------------
| distance |
--------------------
| 1.4142135623730951 |
--------------------
ST_Area(geometry) 功能返回几何对象 2D 投影的笛卡尔面积。面积单位与用于表示输入几何体坐标的单位相同。 对于点、线串、多点和多线串此函数返回 0。 对于几何体集合它返回集合中几何体的面积之和。
参数类型: Geometry
返回类型: Double
示例
SELECT ST_Area(POLYGON ((40 40, 20 45, 45 30, 40 40))) as area;------
| area |
------
| 87.5 |
------
返回结果
------
| area |
------
| 87.5 |
------注意部分几何图形不支持计算面积对这些几何体计算面积会返回 0如Point、MultiPoint、LineString、MultiLineString、Line。 如果参数内容格式非法返回值为 NULL。
案例物联网场景监控车辆驶入电子围栏
下面有一张表 car。
表car记录车辆的实时位置, id 唯一指示一辆车, location 是车的实时坐标。
create table car (location: geometry(point, 0),tags(id)
);
这里有一种圆形的电子围栏坐标为117.20, 39.12, 半径为0.0008。
1.计算此时电子围栏中的车辆数量
select count(*)
from(select max(time), id, location from car group by id, location
)
where st_distance(location, POINT (117.20, 39.12)) 0.0008;
首先通过max 聚合时间列找到每辆车最新的位置记录
然后使用 空间函数 st_distance 找到离电子围栏距离小于电子围栏半径的车辆 最后使用 count计算数量。
2.计算车 A5678 的最先进入电子围栏的时间以及最后在电子围栏内的时间。
select min(time), max(time)
from car
where id A5678 and st_distance(location, POINT (117.20, 39.12) 0.0008;通过 id 筛选出指定车的记录再使用 空间函数st_distance过滤出该车坐标在电子围栏中的记录最后使用 min max 聚合函数找出时间。
以上就是 CnosDB2.4 关于时空函数的功能你可以利用这些功能来处理和分析时空数据使用时空函数可以帮助你解决许多与地理位置相关的问题无论是在物流规划、位置分析、地理信息系统还是其他领域都可以从时空数据中提取有价值的信息帮助您做出更明智的决策优化业务流程并提供更好的服务。
无论您是专业的地理信息系统专家还是对地理位置数据感兴趣的普通用户时空函数都将为您提供强大而有用的查询和分析工具。让我们一起利用时空函数挖掘地理数据的无限潜力欢迎加入这个精彩的时空分析的世界 CnosDB简介
CnosDB是一款高性能、高易用性的开源分布式时序数据库现已正式发布及全部开源。
欢迎关注我们的社区网站https://cn.cnosdb.com