Zuerst erstellen Sie eine js-Datei distance.js (oder was auch immer Sie wollen, um es zu nennen) und legen Sie den folgenden Code wie folgt.
/* 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;
jetzt offen Arango Konsole mit arangosh
. Dies wird standardmäßig mit _system
Datenbank geöffnet. Also, wenn Sie andere als diese Datenbank wie mich haben, dann verwenden Sie db._useDatabase("myDatabase")
Befehl, um die Datenbank zu ändern.
Schreiben Sie nun die folgenden Befehle, um benutzerdefinierte Daten zu Ihrer gewünschten Datenbank hinzuzufügen. abfragt, wie unten
Version 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)
Version 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);
Jetzt in Ihrem AQL verwenden.
LET distance = geo::gdistance(attrbute_name.latitude, attrbute_name.longitude, @your_latitude, @your_longitude)
Für weitere Referenzen mit here.