python pymongo 经纬度坐标距离计算

来源:互联网 发布:tp5框架架构源码下载 编辑:程序博客网 时间:2024/06/07 05:51

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米的点

0 0
原创粉丝点击