我们如何计算两个坐标之间的距离。ArangoDB

拉利特·库马尔·毛里雅(Lalit Kumar Maurya)

我有一个用户表,其中包含每个用户的经度和纬度属性。因此,我需要计算AQL查询中两个用户之间的距离。

我在Orientdb中使用以下查询完成了同样的操作。

var laltitude = CURRENT_USER_laltitude;
var longitude = CURRENT_USER_longitude;
var query = "select distance(latitude, longitude,"+laltitude+","+longitude+") as distance from users";
拉利特·库马尔·毛里雅(Lalit Kumar Maurya)

首先,创建一个js文件distance.js(或任何您想命名的文件),并将其放在下面的代码中,如下所示。

/* distance.js */
'use strict';

function gdistance(latitude1, longitude1, latitude2, longitude2, radius) {
    if (!latitude1 || !longitude1 || !latitude2 || !longitude2) { 
        return null; 
    };

    var lat1 = Number(latitude1), lon1 = Number(longitude1);
    var lat2 = Number(latitude2), lon2 = Number(longitude2);

    radius = (radius === undefined) ? 6371e3 : Number(radius);

    var R = radius;
    var φ1 = (lat1 * Math.PI / 180), λ1 = (lon1 * Math.PI / 180);
    var φ2 = (lat2 * Math.PI / 180), λ2 = (lon2 * Math.PI / 180);
    var Δφ = φ2 - φ1;
    var Δλ = λ2 - λ1;

    var a = Math.sin(Δφ/2) * Math.sin(Δφ/2)
          + Math.cos(φ1) * Math.cos(φ2)
          * Math.sin(Δλ/2) * Math.sin(Δλ/2);
    var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
    var d = R * c;     // Meters
    var d2 = d / 1000; // Meters to KM
    return d2; 
}

module.exports = gdistance;

现在,使用打开Arango控制台arangosh_system默认情况下,它将在数据库中打开因此,如果您除了像我这样的数据库之外,还可以使用db._useDatabase("myDatabase")命令来更改数据库。

现在,编写以下命令以将定制添加到所需的数据库。

2.8版

db._useDatabase("myDatabase");
var aqlfunctions = require("org/arangodb/aql/functions");
var f = require("/path/to/file/distance.js");
aqlfunctions.register("geo::gdistance", f, true)

版本3.0+

db._useDatabase("myDatabase");
var aqlfunctions = require("@arangodb/aql/functions");
var f = require("/path/to/distance.js");

i.e.
var f = require("/home/ubuntu/distance.js");
var f = require("distance.js");

# If you want to remove this group's UDFs (User defined functions)
# aqlfunctions.unregisterGroup("geo");
aqlfunctions.register("geo::gdistance", f, true);

现在,如下所示在您的AQL查询中使用。

LET distance = geo::gdistance(attrbute_name.latitude, attrbute_name.longitude, @your_latitude, @your_longitude)

有关更多信息,请参见此处

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

计算两个坐标之间的距离的功能

在PHP中测量两个坐标之间的距离

计算两个经纬度地理坐标之间的距离

如何计算两个PointField之间的距离?

计算地球上两个坐标之间的距离

计算React Native中两个经纬度坐标之间的距离?

使用Python计算两个坐标之间的距离

获取两个坐标之间的距离时出错

如何计算两个ZIP之间的距离?

计算机如何分配两个变量,我们如何计算两个变量之间的距离?

计算R中ID长度不同的个人在两个坐标列组之间的距离

我想计算两个numpy直方图之间的距离

我们如何更快地比较两个不同表之间的数据

我们如何比较两个整数?

OpenLayers计算两个坐标之间的距离会给出错误的答案

高图表:我们可以减少分组柱形图中两个条形之间的距离吗?

我如何找到两个点/像素之间的距离?

您将如何实现一个在两个日期之间给我们几个月的函数?

如何在任意坐标处计算2个经度之间的距离?我们可以假设地球是一个球体吗?

如何计算两个元素之间的距离,像这样?

计算两个GPRS坐标之间的距离

我们如何获取MongoTemplate中两个限制之间的列值?

两个近似GPS坐标之间的最小距离

计算距离另外几米的另外两个坐标之间的纬度/经度

两个GPS坐标之间的距离-JavaScript

计算Java中两个地理坐标之间的距离

计算两个纬度之间的距离

计算两个质心之间的距离

MySQL查询计算两个坐标之间的距离但使用HAVING子句太慢