geoWithin查询 多边形查询

Posted wzndkj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了geoWithin查询 多边形查询相关的知识,希望对你有一定的参考价值。

 

$geoWithin查询
形状的表示
1、$box:矩形,使用
  {$box:[[<x1>,<y1>],[<x2>,<y2>]]}表示
  都是坐标,第一个坐标表示矩形的左边界,第二个坐标表示矩形的右边界
2、$center:圆形,使用
  {$center:[[<x1>,<y1>],r]}
  第一个表示圆心位置,第二个代表半径
3、$polygon:多边形,使用
  {$polygon:[<x1>,<y1>],[<x2>,<y2>],[<x3>,<y3>]}表示
  每个数组代表一个坐标点,这些点代表一个多边形

 

 

矩形
> db.location.find({w:{$geoWithin:{$box:[[0,0],[3,3]]}}})
{ "_id" : ObjectId("5b6b6fa572ff7510af7fc783"), "w" : [ 1, 1 ] }
{ "_id" : ObjectId("5b6b6fa872ff7510af7fc784"), "w" : [ 1, 2 ] }
{ "_id" : ObjectId("5b6b6fab72ff7510af7fc785"), "w" : [ 3, 2 ] }
矩形<0,0>到<3,3>之间可以看到查出3个点
> db.location.find({w:{$geoWithin:{$box:[[1,1],[2,3]]}}})
{ "_id" : ObjectId("5b6b6fa572ff7510af7fc783"), "w" : [ 1, 1 ] }
{ "_id" : ObjectId("5b6b6fa872ff7510af7fc784"), "w" : [ 1, 2 ] }
矩形<1,1>到<2,3>之间可以看到查出2个点,可以看到矩形可以查询某个矩形内中的点

 

圆形
> db.location.find({w:{$geoWithin:{$center:[[0,0],5]}}})
{ "_id" : ObjectId("5b6b6fa572ff7510af7fc783"), "w" : [ 1, 1 ] }
{ "_id" : ObjectId("5b6b6fa872ff7510af7fc784"), "w" : [ 1, 2 ] }
{ "_id" : ObjectId("5b6b6fab72ff7510af7fc785"), "w" : [ 3, 2 ] }
可以看到,从<0,0>原点开始到周边半径为5的圆形内的点

 

多边形
> db.location.find({w:{$geoWithin:{$polygon:[[0,0],[0,1],[2,5],[6,1]]}}})
{ "_id" : ObjectId("5b6b6fa572ff7510af7fc783"), "w" : [ 1, 1 ] }
{ "_id" : ObjectId("5b6b6fa872ff7510af7fc784"), "w" : [ 1, 2 ] }
{ "_id" : ObjectId("5b6b6fab72ff7510af7fc785"), "w" : [ 3, 2 ] }
可以看到这个多边形内的点

以上是关于geoWithin查询 多边形查询的主要内容,如果未能解决你的问题,请参考以下文章

我应该使用哪个索引进行 $geoWithin 搜索?

在没有 [long,lat] 数组的情况下运行 mongodb $geoWithin

计算光栅化片段的数量

你如何在 python 中处理 graphql 查询和片段?

parse-php-sdk geoPoint withinPolygon异常

C#MongoDb api - Geojson几何存储成一个类