OrientDB地理位置定位技术

5
我正在使用OrientDB作为NoSQL数据库,但不知道如何精确地查询地理位置。 我已经阅读了具体的文档:OrientDB Functions,但是不理解其中数值的重要性。
距离函数:

distance() - 使用Haversine算法计算地球上两点之间的距离。坐标必须为度数。

示例:

where distance(x, y,52.20472, 0.14056) <= 30

两个问题:
  1. X,Y和30的值是什么?
  2. 这些值(52.20472, 0.14056)是纬度和经度吗?
谢谢!
3个回答

7

distance(x, y,52.20472, 0.14056) <= 30

这段代码涉及 IT 技术,并计算从固定坐标(52.20472,0.14056)到记录/位置的经纬度距离。其中,x 和 y 分别是要计算距离的记录/位置的经度和纬度变量。

考虑以下示例:

select distance(longitude, latitude, 52.20472, 0.14056) <= 30 as distance from Places order by distance

此查询将遍历 Places 类/群集中的记录,并针对每个记录注入该记录的经度和纬度,计算其与固定位置(52.20472,0.14056)之间的距离,并返回距离在 30 米内的地点。

其中:

Places 是一个包含地点记录的类/群集 longitude 是当前记录的经度字段 latitude 是当前记录的纬度字段 distance 是该字段名称的别名


1
嗨,@andresmafra,感谢提供的信息。我不是很确定,但我认为它是以米为单位,因为当使用角度表示时,距离的单位通常是米或千米。我搜索了Harvesine算法,看起来距离是以公里为单位的。 - thegreatgiver

1

如@Opeoluwa所回答,this组中提到的距离以公里为单位!


1
иҝҷеҸҜд»ҘйҖҡиҝҮдҪҝз”ЁOrientDBжқҘиҜ„дј°select distance(0,0,0,90)иҪ»жқҫйӘҢиҜҒгҖӮз»“жһңзәҰдёә10007....пјҢжҲ‘们зҹҘйҒ“иөӨйҒ“еҲ°еҢ—жһҒзҡ„и·қзҰ»зәҰдёә10,000е…¬йҮҢгҖӮ - peak

0

基本上这只是一个用法示例。它仅展示了如何选择距离坐标为(52.20472,0.14056)的位置30或更近的项目。

如果我理解正确,那么X和Y应该是与项目相关的位置值的名称。


但是30可以被认为是30英里还是30公里?我不明白度数... - andresmafra
在维基百科中解释了位置事物:http://en.wikipedia.org/wiki/Geographic_coordinate_system 对于所使用的单位,我认为服务提供商应该明确使用了什么。 - Dr.Jukka

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接