查找与点相交的圆[重复]

Posted

技术标签:

【中文标题】查找与点相交的圆[重复]【英文标题】:Find circles that intersects a point [duplicate] 【发布时间】:2016-11-22 18:42:21 【问题描述】:

当我尝试在 mongodb 上运行此代码时遇到了麻烦

var partners = db.partners.find()
var kmToRadius = function(km)
    var earthRadiusInKm = 6378.1;
    return km / earthRadiusInKm;

db.runCommand(
    $centerSphere: [ [partners.loc], kmToRadius(partners.km) ] :
        $geoIntersects:
            $geometry:  type: "Point", coordinates: [ -73.93414657, 40.82302903 ] 

            
    
)

我要做的是获取所有合作伙伴的位置(采用 geojson 格式),使用 $centerSphere 制作一个圆圈并验证是否与坐标相交。

我知道我不能以 GeoJson 格式存储圆,只能存储多边形,这变得很难做我想做的事。有人知道是否有另一种方法可以使这项工作?谢谢

【问题讨论】:

【参考方案1】:

我的合作伙伴收藏是这样的:


    "_id" : ObjectId("583315cfa9d41218cc9c833f"),
    "updatedAt" : ISODate("2016-11-21T15:42:07.703Z"),
    "createdAt" : ISODate("2016-11-21T15:42:07.703Z"),
    "name" : "partnerName",
    "mainEmail" : "email",
    "password" : "$2a$10$WJC6WzZNM8NyDKQgovJa.OICLOMV6Qp6xcGLE3fRcUGuBa8Zhy8qy",
    "km" : 10,
    "loc" : 
        "type" : "Point",
        "coordinates" : [ 
            -46.62217, 
            -23.668224
        ]
    ,
    "rate" : 4,
    "nServices" : 35

但我想做的是为每个伙伴创建一个半径并检查哪些伙伴与一个点相交,而不是让伙伴在半径内。

【讨论】:

以上是关于查找与点相交的圆[重复]的主要内容,如果未能解决你的问题,请参考以下文章

POJ 2932 Coneology计算最外层圆个数

使用广度优先搜素查找路径

如何递归地查找两个表之间的相交地理

c_cpp 联盟查找不相交集

在 SQL 中查找排名最高的相交行

查找具有最大表面积的边界框轮廓,不包括相交区域