邻近查询与两端之间的 LineString 点不匹配
Posted
技术标签:
【中文标题】邻近查询与两端之间的 LineString 点不匹配【英文标题】:Proximity query doesn't match LineString points between the ends 【发布时间】:2015-11-26 21:48:26 【问题描述】:我在集合c
中为字段loc
定义了一个“2dsphere”索引:
db.c.createIndex( loc : "2dsphere" )
我在c
集合中有以下文档。它是从 [0, 0] 到 [10, 10] 的 LineString:
db.c.insert("name": "myLine", "loc": type: "LineString", coordinates: [ [ 0, 0 ], [ 10, 10 ] ] )
请注意,[5, 5] 将是线上的一个点。但是,以 [5, 5] 为中心的邻近查询(使用 $near
运算符)与文档不匹配:
db.c.find(
loc:
$near:
$geometry:
type: "Point" ,
coordinates: [ 5, 5 ]
,
$maxDistance: 0.1,
)
也许 LineString 不能那样工作,从地理空间查询的角度来看,只有端点(在这种情况下为 [0, 0] 和 [10, 10])是相关的?在这种情况下,是 MongoDB geo spacial queries implementation 中的限制还是 GJSON standard 中的限制?
(在我做这个小实验之前,我一直认为 LineString 和 MultiPoint 的区别在于前者考虑了连接点的线,而后者只考虑了线末端的点。经过这个实验,我看不出有什么不同...)。
【问题讨论】:
【参考方案1】:我必须在 mongodb 和 postgis 之间进行选择。但是 mongodb 有这个缺点。查看案例:Find points near LineString in mongodb sorted by distance
【讨论】:
那很不幸,除了链接的帖子之外,您对这个主题有任何参考吗?它已经 3 岁了,也许他们同时实现了这个功能,但我找不到明确的答案。 不,我没有。我认为它会继续下去。以上是关于邻近查询与两端之间的 LineString 点不匹配的主要内容,如果未能解决你的问题,请参考以下文章
在 GeoJson MultiLineString 中查询哪个 LineString
确定一个 POINT 是不是位于 LINESTRING 上的两个其他 POINT 之间(SQL Server 2008 Geography)