地理位置geo處理之mongodb geo 索引

2021-09-11 16:47:23 字數 1713 閱讀 9454

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...