全部產品
Search
文件中心

PolarDB:ST_ShadowRatio

更新時間:Jul 06, 2024

計算給定點(單個點或多個點)在某段時間內或給定時刻的陰影率。

文法

geometry  ST_ShadowRatio(scene  sc, geometry points, cstring sunlight);
geometry  ST_ShadowRatio(scene  sc, geometry points,  geometry location, cstring time);

參數

參數名稱

描述

sc

Scene對象。

points

計算陰影率的點資料,Geometry類型。

sunlight

光照資訊,JSON格式。

location

陰影率分析情境所在的經緯度資訊,Geometry類型。

time

陰影率分析的時間。

JSON格式的sunlight欄位含義:

參數名稱

描述

備忘

location

陰影率分析情境所在的經緯度資訊,如對北京市的某個小區做陰影率分析,則為該小區對應的經緯度座標。

必須為EPSG:4326 座標系。由於Scene對象中的座標都是局部座標,因此需要該參數來指定Scene對象所在經緯度,用於計算光照方向。

start_time

陰影率分析的開始時間。

必須為有效時間格式。

end_time

陰影率分析的結束時間。

必須為有效時間格式。

time_interval

陰影率分析的時間採樣間隔。

時間採樣間隔不得為0。

sunlight的樣本如下:

{
  sunlight = {
  "location": "srid=4326; POINT(120 30)",  //經緯度資訊
  "start_time": "2021-07-12 08:00:00 +0800",  //開始時間
  "end_time": "2021-07-12 18:00:00 +0800",  //結束時間
  "time_interval": "01:00:00"   //時間採樣間隔
}

描述

  • 方式一:根據輸入的光照資訊,從開始時間到結束時間,按照指定的時間間隔進行採樣,計算給定點(單個點或多個點)的陰影率,並將陰影率記錄在點的m座標中。

  • 方式二:計算給定點(單個點或多個點)在指定時刻是否被陰影所覆蓋,如果被陰影覆蓋陰影率則為1,否則為0。並將陰影率記錄在點的m座標中。

樣本

  • 方式一:

    SELECT ST_AsText(ST_ShadowRatio(the_scene, 'MULTIPOINT(0 0 -2, 1 2 8, -70 -400 1330)'::geometry, '{"location": "srid=4326; POINT(120 30)", 
        "start_time": "2021-07-12 08:00:00 +0800", "end_time":"2021-07-12 18:00:00 +0800", "time_interval": "01:00:00"}')) from t_scene;
    --------
    MULTIPOINT ZM ((0 0 -2 0.636363636363636),(1 2 8 0),(-70 -400 1330 0))
  • 方式二:

    SELECT ST_AsText(ST_ShadowRatio(the_scene, 'MULTIPOINT(-2 0 0, 0 0 0, 2 0 0, 0 0 2)'::geometry, 'srid=4326; POINT(120 30)'::geometry,
        '2021-07-12 12:00:00 +0800')) from t_scene;
    --------
     MULTIPOINT ZM ((-2 0 0 0),(0 0 0 1),(2 0 0 0),(0 0 2 0))