title: 地理位置geo處理之mongodb geo 索引
date: 2017-12-01 10:34
category: 方案
目前越來越多的業務都會基於lbs,附近的人,外賣位置,附近商家等等,現就討論離我最近這一業務場景的解決方案。目前已知解決方案有:
本文測試下mongodb geo索引 函式運算的效能
db.driver.createindex()
# coding=utf-8
from pymongo import mongoclient
import logging
import random
import threading
""" 中國的經緯度範圍 緯度3.86~53.55,經度73.66~135.05。大概0.00001度差距1公尺 """
# 建立 日誌 物件
logger = logging.getlogger()
handler = logging.streamhandler()
formatter = logging.formatter(
'%(asctime)s %(name)-12s %(levelname)-8s %(message)s')
handler.setformatter(formatter)
logger.addhandler(handler)
logger.setlevel(logging.debug)
# connect to the mongodb database
mongoconn = mongoclient('127.0.0.1', 27017)
mdb = mongoconn.geo_analysis
driver_collection = mdb.driver
def ins_driver(thread_name, nums):
logger.info('開啟執行緒%s' % thread_name)
for i in range(nums):
lng = '%.5f' % random.uniform(73.66, 135.05)
lat = '%.5f' % random.uniform(3.86, 53.55)
logging.debug('插入記錄:%s' % i)
以上指令碼建立10個執行緒,10個執行緒插入4萬條資料。耗費52.43s執行完,總共插入40萬條資料
系統:mac os
記憶體:16g
cpu: intel core i5
硬碟: 500g 固態硬碟
測試下查詢距離(134.38753,18.56734)附近20公里的司機
db.runcommand();
redis特殊資料型別Geo(地理位置)
常用命令 命令說明 geoadd 新增地理位置的座標 geopos 獲取地理位置的座標 geodist 計算兩個位置之間的距離 georadius 根據使用者給定的經緯度座標來獲取指定範圍內的地理位置集合 georadiusbymember 根據儲存在位置集合裡面的某個地點獲取指定範圍內的地理位置集...
洋山港 地理位置
洋山港區位於浙江省嵊泗縣境內。由大洋山港口區和小洋山港口區組成。可供開發的深水岸線4900公尺,是上海國際航運中心的深水港區。位於嵊泗海域西部大洋山島的北岸。東北距縣城21.41海浬,西北距上海市蘆潮港18.9海浬。大洋山島海岸線總長16697公尺 其中基岩10214公尺 可利用岸線3200公尺,聖...
geospatial地理位置
redis的geo在redis3.2版本就退出來了推算地理位置資訊,兩地之間的距離 可以查詢一些測試資料 引數 key 緯度,經度 名稱 127.0.0.1 6379 geoadd china city 116.397128 39.916527 beijin integer 1127.0.0.1 6...