CnosDB 在最近新發布的 2.4.0 版本中增加對時空函式的支援。

CnosDB發表於2023-12-06

 

概述

時空函式是一種用於描述時空結構和演化的函式。它在物理學、數學和電腦科學等領域中都有廣泛的應用。時空函式可以描述物體在時空中的位置、速度、加速度以及其他相關屬性。

用法

CnosDB 將使用一種全新的資料型別 Geometry來支援地理資訊系統。

建立表的時候可以指定列的型別為Geometry:

create table geo_table (
  geo geometry(<object_type>, )
);

目前 CnosDB 中使用 WKT 格式來儲存Geometry型別,Geometry型別下有 7 種幾何物件:

WKT 是是一種開放的國際標準,全拼為 Well-Known Text 。

示例

支援函式

為了更好地操縱 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型別的資料表示:000000000000F03F,000000000000F03F

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 關於時空函式的功能,你可以利用這些功能來處理和分析時空資料,使用時空函式可以幫助你解決許多與地理位置相關的問題,無論是在物流規劃、位置分析、地理資訊系統還是其他領域,都可以從時空資料中提取有價值的資訊,幫助您做出更明智的決策,最佳化業務流程,並提供更好的服務。

無論您是專業的地理資訊系統專家,還是對地理位置資料感興趣的普通使用者,時空函式都將為您提供強大而有用的查詢和分析工具。讓我們一起利用時空函式,挖掘地理資料的無限潛力!歡迎加入這個精彩的時空分析的世界!


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70026635/viewspace-2999015/,如需轉載,請註明出處,否則將追究法律責任。

相關文章