_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 类型
使用说明
- 此方法仅适用于内部测试;
- 此方法支持圆形字符串和曲线。
示例
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)