函数 distance() 可以计算两个地理坐标之间的直线距离(米)。
Arguments:
- 地理坐标1 <point>
- 地理坐标2 <point>
Returns:
- 距离 <number>
示例图集:(以下示例将在本图基础上运行)
在空图集中依次运行以下各行代码以创建该图数据:create().node_property(@default, "name").node_property(@default, "lat_long", point)
insert().into(@default).nodes([{_id:"L001", _uuid:1, name:"New York", lat_long:point({latitude:40.7, longitude:-74.0})}, {_id:"L002", _uuid:2, name:"Paris", lat_long:point({latitude:48.5, longitude:2.2})}, {_id:"L003", _uuid:3, name:"Sydney", lat_long:point({latitude:-33.9, longitude:150.9})}, {_id:"L004", _uuid:4, name:"Beijing", lat_long:point({latitude:39.9, longitude:116.3})}])
一般用法
示例:异源别名直接计算,换算为公里
find().nodes({name in ["New York", "Paris"]}) as a
find().nodes({name in ["Sydney", "Beijing"]}) as b
return table(a.name, b.name, distance(a.lat_long, b.lat_long)/1000)
| a.name | b.name | distance(a.point, b.point)/1000 |
|----------|---------|---------------------------------|
| New York | Sydney | 16017.5939640978 |
| Paris | Beijing | 8247.41966611293 |
示例:异源别名笛卡尔积后计算,换算为公里
find().nodes({name in ["New York", "Paris"]}) as a
find().nodes({name in ["Sydney", "Beijing"]}) as b
with distance(a.lat_long, b.lat_long)/1000 as c
return table(a.name, b.name, c)
| a.name | b.name | c |
|----------|---------|------------------|
| New York | Sydney | 16017.5939640978 |
| New York | Beijing | 10992.9752060986 |
| Paris | Sydney | 16967.299225946 |
| Paris | Beijing | 8247.41966611293 |