mongodb中地理位置信息的存储和查询
1、存储数据
在百度地图拾取器(拾取坐标系统)中获取一些经纬度的值,提前写入代码集合中。然后利用逆地理位置api接口获取数据写入mongodb中。
注意:需要提前开发者认证,得到在应用管理中获取ak。
示例代码:
import requests
from pymongo import MongoClientmy_client = MongoClient('mongodb://root:88888888@192.168.124.49:27017')
my_db = my_client['test-mongo']
# print(my_db)my_col = my_db['gps']
# print(my_col)
ak = 'duKnQ2pQCRIDADFDSTsS944SLfMvYrvw'# gps '纬度,经度' 注意:直接从百度左边拾取器中获取的顺序为:'经度,纬度'
# 百度有自己的坐标加密方式:bd09ll
gps_set = {'40.060326,116.732761', '40.046187,116.767831', '40.008618,116.799451', '39.904198,116.675844', '40.023648,116.718388'}def reverse_geocoding(gps, ak):""":param gps: str(lat)+','+str(lng):param ak: ak:return:"""url = 'http://api.map.baidu.com/reverse_geocoding/v3/?'params = {"location": gps,"output": 'json',"ak": ak,"coordtype": "bd09ll", # 默认值}response = requests.get(url, params=params)return response.json()def format_data(data):data_dict = {}# 简单数据结构的存储data_dict['location'] = {"type": "Point","coordinates": [data['location']['lng'], data['location']['lat']]}data_dict['formatted_address'] = data['formatted_address']data_dict['others'] = datareturn data_dictcol_list = []
for i in gps_set:response = reverse_geocoding(i, ak)print(response)res = format_data(response['result'])print(res)col_list.append(res)if len(col_list) == 2:my_col.insert_many(col_list)col_list = []
if len(col_list) > 0:my_col.insert_many(col_list)
数据库中存储的数据如下:
注意:数据存储结构中必须包含如下类型,便于建立索引。其中type类型可以选择别的属性值。
2、创建索引
注意:要想通过地理位置进行查询,首先要建立索引,否则报错。
创建索引时,官方文档如下格式:
使用Studio 3T工具创建索引:
3、查询地理位置数据
注意:查询前必须创建索引,否则查询报错。
官方文档如下所示:
示例代码:
from pymongo import MongoClientmy_client = MongoClient('mongodb://root:88888888@192.168.124.49:27017')
my_db = my_client['test-mongo']
# print(my_db)my_col = my_db['gps']
# print(my_col)query = {'location': {'$near': {'$geometry': {'type': "Point", 'coordinates': [116.762761, 40.060326]},'$minDistance': 0,'$maxDistance': 5000
}}}datas = my_col.find(query)
# print(datas)
for data in datas:print(data)
运行结果:
详见官方文档:Geospatial Queries — MongoDB Manual
mongodb中地理位置信息的存储和查询相关推荐
- mongodb中的in和notin的查询
项目中的枚举值,有在一个范围内查询,有不在一个范围中查询. 如果在一个范围中查询可以使用 {$in:["VM","STORAGE_EFS","STOR ...
- asp 不能读取mysql 长文本文件,从文本文件中读取信息并存储入数据库_asp技巧
dim fso,f1 Const ForReading = 1 set fso=createobject("Scripting.FileSystemObject") 使用fso对象 ...
- 详解基于MongoDB的地理位置查询,结合Symfony2演示
简介 随着近几年各类移动终端的迅速普及,基于地理位置的服务(LBS)和相关应用也越来越多,而支撑这些应用的最基础技术之一,就是基于地理位置信息的处理.我所在的项目也正从事相关系统的开发,我们使用的是S ...
- MongoDB ServerStatus返回信息
ServerStatus返回信息 ServerStatus返回mongodb中很多信息 http://docs.mongodb.org/manual/reference/command/serverS ...
- 赛博空间中的信息获取
摘要 赛博空间自提出以来受到各界的密切关注.当前的赛博空间依托于 Internet,已经有了 迅猛的发展.本文主要介绍了赛博空间中信息获取的主要流程,即粗数据获取.数据结构化. 知识发现.并介 ...
- python爬取音乐并保存_python3 实现爬取TOP500的音乐信息并存储到mongoDB数据库中
爬取TOP500的音乐信息,包括排名情况.歌曲名.歌曲时间. 网页版酷狗不能手动翻页进行下一步的浏览,仔细观察第一页的URL: 这里尝试将1改为2,再进行浏览,恰好是第二页的信息,再改为3,恰好是第三 ...
- MongoDB中的聚合管道($lookup多表关联查询、$unwind、$match、$project)
MongoDB中的聚合管道($lookup多表关联查询.$unwind.$match.$project) 管道的概念 聚合框架 $lookup的功能及语法 主要功能 基本语法 例子 说明 $unwin ...
- Scrapy 爬虫实例 抓取豆瓣小组信息并保存到mongodb中
这个框架关注了很久,但是直到最近空了才仔细的看了下 这里我用的是scrapy0.24版本 先来个成品好感受这个框架带来的便捷性,等这段时间慢慢整理下思绪再把最近学到的关于此框架的知识一一更新到博客来. ...
- MongoDB中关于64位整型存储解决方案
为什么80%的码农都做不了架构师?>>> 社区内一哥们@smcboy 提出关于php中操作MongoDB存储整数问题,找到点资料花点时间翻译过来,是个很好的学习方式.@红薯 那 ...
最新文章
- 关于两个jar包中存在包名和类名都完全相同的jar包冲突问题
- element 方法返回的boolean被当成字符串了_13个需要知道的方法:使用 JavaScript 来操作 DOM...
- 牛客14355 翻硬币
- UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xbd in position 198: illegal multibyte sequence
- UVA1585 UVALive3354 Score【水题】
- 神奇的python系列11:函数之生成器,列表推导式
- 高等代数期末考试题库及答案_【最新试题库含答案】高等代数习题及答案(1)
- oracle 查询入职年限,计算入职年限员工人数占总人数的百分比
- 2003年28家上海最受欢迎的餐馆
- 凸优化基础(Convex Optimization basics)
- 小福利,python内置map函数和lambda函数运用
- 用户获取pppd拨号状态_iPhone手机隐藏的拨号键代码,原来还能这么用,幸好钱没白花...
- kubernetes 网络
- http://blog.csdn.net/congcong68/article/details/39256307
- Maximum Absurdity(dp思想+前缀和)
- 通讯录怎么恢复?在 手机上检索找回已删除的电话号码的3种方式
- 【飞行器】基于matlab四旋翼无人机几何跟踪控制【含Matlab源码 2270期】
- 呃,是该坚持些事情了
- 直击2016百分点数据与价值国际论坛:这些大咖都讲什么呢?
- 区块链世界里不能信什么?