Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


_ST_DISTANCEUNCACHED

📄字数 1.1K
👁️阅读量 加载中...

功能描述

不使用缓存方式,计算两个地理值之间的最小 2D 笛卡尔(平面)距离,以投影单位(空间参考单位)表示。

语法格式

sql
DOUBLE _ST_DISTANCEUNCACHED(GEOGRAPHY g1, GEOGRAPHY g2, BOOLEAN use_spheroid = true);
DOUBLE _ST_DISTANCEUNCACHED(GEOGRAPHY g1, GEOGRAPHY g2, DOUBLE tolerance, BOOLEAN use_spheroid);

参数说明

  • g1:第一个目标 GEOGRAPHY 对象。
  • g2:第二个目标 GEOGRAPHY 对象。
  • tolerance:容差,可用于将附近的输入顶点捕捉为一个点。
  • use_spheroid:距离测量是否使用椭球体,可选。
    • TRUE:使用椭球体。
    • FALSE:在球面上进行测量,计算更快。

函数返回类型

DOUBLE 类型

使用说明

  1. 此方法仅适用于内部测试;
  2. 此方法支持圆形字符串和曲线。

示例

sql
SQL> create table tb_geog_distuc(c varchar, ply geography,pt geography);

Execute successful.
Use time:22 ms.     

SQL> insert into tb_geog_distuc values
    ('geog_distance_cached_1a', 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))', 'POINT(5 5)'),
    ('geog_distance_cached_1b', 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))', 'POINT(5 5)'),
    ('geog_distance_cached_1c', 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))', 'POINT(5 5)'),
    ('geog_distance_cached_1e', 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))', 'POINT(5 5)'),
    ('geog_distance_cached_1f', 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))', 'POINT(5 5)'),
    ('geog_distance_cached_1g', 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))', 'POINT(5 5)'),
    ('geog_distance_cached_1h', 'POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))', 'POINT(5 5)');

Total 7 records effected.

SQL> SELECT c, abs(ST_Distance(ply::geography, pt::geography) - _ST_DistanceUnCached(ply::geography, pt::geography)) < 0.01 from tb_geog_distuc;

+-------------------------+-------+
|            C            | EXPR1 |
+-------------------------+-------+
| geog_distance_cached_1a | T     |
| geog_distance_cached_1b | T     |
| geog_distance_cached_1c | T     |
| geog_distance_cached_1e | T     |
| geog_distance_cached_1f | T     |
| geog_distance_cached_1g | T     |
| geog_distance_cached_1h | T     |
+-------------------------+-------+

(7 rows)