# F.13.地球距离

F.13.1.基于立方体的地球距离F.13.2.基于点的地球距离

这个地球距离该模块提供了两种不同的方法来计算地球表面的大圆距离。第一个描述取决于立方体单元第二个是基于内置的指向数据类型,使用经度和纬度作为坐标。

在这个模块中,地球被假定为完美的球形。(如果这对你来说太不准确,你可能想看看波斯吉斯 (opens new window)项目。)

这个立方体必须在安装前安装模块地球距离可以安装(尽管您可以使用大量选择创建扩展在一个命令中安装这两个组件)。

# 小心

强烈建议地球距离立方体安装在同一架构中,并且该架构的创建权限尚未授予且将不会授予任何不受信任的用户。否则,安装时存在安全隐患,如果地球距离的架构包含恶意用户定义的对象。此外,当使用地球距离安装后,整个搜索路径应仅包含受信任的架构。

# F.13.1.基于立方体的地球距离

数据存储在立方体中,立方体是点(两个角相同),使用3个坐标表示距地球中心的x、y和z距离。域名世界结束立方体它包括约束检查,以确保该值符合这些限制,并合理地接近地球的实际表面。

地球的半径是从地球()作用它以米为单位。但是通过改变这一个函数,你可以改变模块,使用其他单位,或者使用你认为更合适的半径的不同值。

这个软件包也适用于天文数据库。天文学家可能想要改变地球()返回半径为180/pi()所以距离以度为单位。

提供了支持输入纬度和经度(以度为单位)、支持输出纬度和经度、计算两点之间的大圆距离以及轻松指定可用于索引搜索的边界框的功能。

提供的功能如所示表F.5.

表F.5.基于立方体的地距函数

作用

描述
世界 () → 浮动8

返回假定的地球半径。
第_至_gc节 ( 浮动8 ) → 浮动8

将地球表面两点之间的法向直线(割线)距离转换为两点之间的大圆距离。
总司令至副总司令 ( 浮动8 ) → 浮动8

将地球表面两点之间的大圆距离转换为两点之间的法线直线(割线)距离。
我要去地球 ( 浮动8, 浮动8 ) → 世界

返回一个点在地球表面的位置,给定其纬度(参数1)和经度(参数2),单位为度。
纬度 ( 世界 ) → 浮动8

返回地球表面某一点的纬度(以度为单位)。
经度 ( 世界 ) → 浮动8

返回地球表面某点的经度(以度为单位)。
地球距离 ( 世界, 世界 ) → 浮动8

返回地球表面两点之间的大圆距离。
接地盒 ( 世界, 浮动8 ) → 立方体

使用立方体 @>一个位置给定大圆距离内的点的运算符。此框中的某些点距离指定的大圆距离更远,因此使用地球距离应该包含在查询中。

# F.13.2.基于点的地球距离

模块的第二部分依赖于将地球位置表示为类型值指向,其中第一个分量以度表示经度,第二个分量以度表示纬度。点被视为(经度、纬度),反之亦然,因为经度更接近于x轴的直观概念,而纬度更接近于y轴。

提供了一个操作员,如所示表F.6.

表F.6.基于点的地球距离操作符

操作人员

描述
指向 <@> 指向浮动8

计算地球表面两点之间的距离(以法定英里为单位)。

请注意,与立方体-基于模块的一部分,单元在此处硬连线:更改地球()函数不会影响此运算符的结果。

经度/纬度表示法的一个缺点是,需要注意极点附近和经度+/-180度附近的边缘条件。这个立方体-基于对象的表示避免了这些不连续性。