python通过mongoDB判断某个经纬度的点是否在另一个经纬度点设定的某个半径范围内
import pymongo
mongodb_cli = pymongo.MongoClient("mongodb://192.168.1.205:12345")
reader_pos_list=[116.41799927,39.90894619] # [经度,纬度]
mongodb_cli["db_name"]["col_name"].find({"key_name": {"$geoWithin": {"$centerSphere": [reader_pos_list, 1000/6378100]}}})
应用说明,在mongodb中建一个db_name的数据库,表名为col_name,表中包含字段key_name,key_name的值为list形式,存放经纬度[经度,纬度]
通过上面的语句可以实现,以reader_pos_list为圆心,1000米为半径的范围内,表col_name中,key_name字段经纬度的点在这个圆以内的所有结果。
1000/6378100表示从距离转换成弧度
mongodb_cli["db_name"]["col_name"].ensure_index([("key_name","2dsphere")])
mongodb_cli["db_name"]["col_name"].find({ "key_name" : { '$nearSphere' : reader_pos_list, "$maxDistance": 1000/6378100 } })
表中到reader_pos_list点的距离小于1000米的点
mongodb_cli["db_name"]["col_name"].ensure_index([("key_name","2dsphere")])
mongodb_cli["db_name"]["col_name"].find({ "key_name" : { '$nearSphere' : reader_pos_list, "$minDistance": 1000/6378100 } })
表中到reader_pos_list点的距离大于1000米的点