如何在mongodb中使用geowithin?

5

当我使用$geoWithin时,得到了一个意外的结果。

这是我的代码:

perim = 10
center = [35.964734, 5.03952]

如果我运行:
list(db.users.find({"adr.cor":{"$geoWithin":{"$center":[center, perim]}}}))

我得到了一个包含更多坐标的结果,例如:[36.743954, 4.365041],距离更远!(至少400公里)我做错了什么?
1个回答

5

在使用$center:[longitude,latitude], radius时,半径是以弧度为单位测量的,因此您需要将10弧度转换为公里。


抱歉,但弧度用于角度,用户会输入距离吗? - Abdelouahab Pp
2
嗨,Abdelouahab - 你可以使用以下公式进行转换:弧长 = 弧度 * 半径。http://www.regentsprep.org/Regents/math/algtrig/ATM1/arclengthlesson.htm - Kay
1
很遗憾,要将距离转换为弧度,您需要将距离除以球体(例如地球)的半径,单位与距离测量相同。地球的半径约为3,959英里或6,371公里。 因此,您将拥有perim = 10/6371list(db.users.find({"adr.cor":{"$geoWithin":{"$center":[center, perim]}}})) - Kay
1
好的,我花了一段时间才弄清楚,但是所提到的圆弧不是以中心点为圆心的圆弧,而是从地球中心到在地球表面上投影出的圆的弧。 - rbp
这个没起作用,我不知道为什么!也许我不是必须使用地球周长。 - Abdelouahab Pp
显示剩余3条评论

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