1、存储数据
在百度地图拾取器(拾取坐标系统)中获取一些经纬度的值,提前写入代码集合中。然后利用逆地理位置api接口获取数据写入mongodb中。
注意:需要提前开发者认证,得到在应用管理中获取ak。
示例代码:
import requests
from pymongo import MongoClient
my_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'] = data
return data_dict
col_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 MongoClient
my_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)
运行结果:
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/142775.html