zoukankan      html  css  js  c++  java
  • 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 ] }
    可以看到这个多边形内的点
  • 相关阅读:
    zoj3814
    cf249D
    codeforces 461C
    uva 11584
    Codeforces Round #247 (Div. 2) C D
    AOAPC I: Beginning Algorithm Contests (Rujia Liu) Volume 6. Mathematical Concepts and Methods
    AOAPC I: Beginning Algorithm Contests -- Training Guide (Rujia Liu) Chapter 3. Data Structures Fundamental Data Structures
    Codeforces Round #257 (Div. 2)
    DAY 16 PYTHON入门
    DAY 15 PYTHON入门
  • 原文地址:https://www.cnblogs.com/wzndkj/p/9452774.html
Copyright © 2011-2022 走看看