📜  使用Python MongoDB 进行地理空间查询

📅  最后修改于: 2022-05-13 01:54:36.954000             🧑  作者: Mango

使用Python MongoDB 进行地理空间查询

先决条件: MongoDB 和Python

GeoJSON是一种包含简单地理特征的开源格式,基于 JavaScript Object Notation。它用于在坐标空间中格式化形状,MongoDB 支持多种类型以允许存储地理空间数据。本文将介绍在 MongoDB 中使用地理空间的各种方式,并解释 GeoJSON 多边形和点类型。


GeoJSON 格式

  • 一个名为 type 的字段,指定 GeoJSON 对象类型和
  • 一个名为坐标的字段,用于指定对象的坐标。

注意:如果指定经纬度坐标,请先列出经度,再列出纬度。

需要的模块:

  • Pymomgo:该模块用于与 MongoDB 交互。要安装它,请在终端中键入以下命令。
    pip install pymongo
    OR
    condo install pymongo
  • Matplotlib:该库用于绘制图形
  • 底图:此模块用于使用Python绘制地图。要安装此模块,请在终端中键入以下命令。
    conda install basemap

使用 MongoDB Atlas 的步骤:

  • 从这里打开 MongoDB Atlas Cloud。
  • 通过选择适合您的软件包创建帐户(您也可以选择免费版本,足以满足本文和学习目的)。
  • 单击位于左侧菜单栏的集群视图。
  • 单击Ellipses 按钮(...)并选择Load Sample Dataset
  • 添加示例数据集后,单击连接按钮。
    python-mongodb-cluster-1
  • 然后将 IP 地址列入白名单(选择您当前的 IP 地址或键入 0.0.0.0/0 IP 以允许它从任何地方访问。单击下图所示的按钮。
    python-mongodb-cluster-connect-2
  • 然后单击连接到应用程序按钮。
  • 复制 cluster_uri 并将其粘贴到“course_cluster_uri”。

下面是实现。

import pymongo
import pprint
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
   
      
course_cluster_uri = 'your_connection_string'
   
course_client = pymongo.MongoClient(course_cluster_uri)
  
# sample Database
db = course_client['sample_geospatial']
  
# sample Collection
shipwrecks = db['shipwrecks']
   
l = list(shipwrecks.find({}))
   
lngs = [x['londec'] for x in l]
lats = [x['latdec'] for x in l]
   
# Clear the figure (this is nice if you
# execute the cell multiple times)
plt.clf()
   
# Set the size of our figure
plt.figure(figsize =(14, 8))
   
# Set the center of our map with our 
# first pair of coordinates and set
# the projection
m = Basemap(lat_0 = lats[0],
            lon_0 = lngs[0],
            projection ='cyl')
   
# Draw the coastlines and the states
m.drawcoastlines()
m.drawstates()
   
# Convert our coordinates to the system
# that the projection uses
x, y = m(lngs, lats)
   
# Plot our converted coordinates
plt.scatter(x, y)
   
# Display our beautiful map
plt.show()

输出:

沉船情节