首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDB $geoIntersects不匹配LineString类型

MongoDB $geoIntersects不匹配LineString类型
EN

Stack Overflow用户
提问于 2014-05-28 16:31:17
回答 1查看 850关注 0票数 2

我有一个Mongo集合,我正在尝试执行一个$geoIntersects查询。

以芒果为单位的数据形式如下:

代码语言:javascript
复制
{
    "_id" : ObjectId,
    "created_at" : ISODate,
    "sentiment" : 0.631925,
    "yyyy-mm" : "2012-9",
    "lat_lon" : [
        -2.0566385,
        52.84265
    ]
}

以以下形式运行$geoIntersects查询:

代码语言:javascript
复制
db.gbSmall.findOne({
    lat_lon: {
        $geoIntersects: {
            $geometry: {
                type: "Point",
                coordinates: [-2.0566385,52.84265]
            }
        }
    }
})

代码语言:javascript
复制
db.gbSmall.findOne({
    lat_lon: {
        $geoIntersects: {
            $geometry: {
                type: "LineString",
                coordinates: [[-2.0566385,52.84265],[-3.0566385,52.84265]]
            }
        }
    }
})

两种方法都正确地返回记录;但是,如果我更改了查询,使该行通过点运行,如:

代码语言:javascript
复制
db.gbSmall.findOne({
    lat_lon: {
        $geoIntersects: {
            $geometry: {
                type: "LineString",
                coordinates: [[-1.0566385,52.84265],[-3.0566385,52.84265]]
            }
        }
    }
})

记录不被返回。

记录是否必须落在geoJSON lineString的某个点上才能被匹配,或者我正在执行的查询还有什么问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-28 21:10:20

如果在Postgis中运行相同的查询,则得到的答案为true。

代码语言:javascript
复制
Select ST_Intersects(ST_GeomFromText('POINT(-2.0566385 52.84265)', 4326),
 ST_GeomFromText('LINESTRING(-1.0566385 52.84265,-3.0566385 52.84265)', 4326));

对于类似的理智检查查询,您也会得到相同的答案:

代码语言:javascript
复制
Select ST_Intersects(ST_GeomFromText('POINT(-2 50)',4326),
 ST_GeomFromText('LINESTRING(-3 50, -1 50)',4326));

而这两个MongoDB版本对于您所提供的等价查询都不返回任何内容。

在我看来,这就像一只虫子。我检查了MongoDB源代码和它们的测试,除了端点之外,没有一个是在线的。MongoDB与https://github.com/mongodb/mongo/blob/master/src/mongo/db/geo/geoquery.cpp中的函数交叉,实际上使用第三方s2模块进行实际的数学交叉,参见party/s2/s2latlngrect.cc。这就是我所能得到的。

我不是把这当作回答,因为我没有答案,但格式比评论好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23917190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档