使用Python 将shapefile导入mongodb
使用Python 将shapefile导入mongodb
随着big data时代的到来,各个行业都在考虑能不能把big data的思路、方法引入进来,GIS行业也不能免俗。
下面就介绍一下如何将shapefile导入mongodb中
1首先安装pyshp 和pymongo 库
2 安装mongodb,并正确运行
3 执行下面的python脚本
import pymongo
from pymongo.connection import Connection
def readSHPPoint(append):
fileP = u'E:\\data\\supermarket_webMercator\\supermarket.shp'
sf = shapefile.Reader(fileP)
shapeRecs = sf.shapeRecords()
mongodb_server='192.168.120.100'
mongodb_port = 27017
mongodb_collection ='supermarket'
mongodb_db = 'gisdb'
connection = Connection(mongodb_server, mongodb_port)
print 'Getting database %s' % mongodb_db
db = connection[mongodb_db]
print 'Getting the collection %s' % mongodb_collection
collection = db[mongodb_collection]
if append == False:
print 'Removing features from the collection...'
collection.remove({})
print 'Starting loading features...'
for shaperec in shapeRecs:
mongofeat = {}
#'{x='',y=''}'
strX = "%.3f" % shaperec.shape.points[0][0]
strY = "%.3f" % shaperec.shape.points[0][1]
mongogeom = '{x="'+strX+'",y="'+strY+'"}'
print mongogeom
mongofeat['geom'] = mongogeom
mongofeat['name'] = shaperec.record[1].decode('GB2312').encode('utf-8')
collection.insert(mongofeat)
#create 2d index
collection.create_index([("geom", pymongo.GEO2D)])
if __name__ == "__main__":
readSHPPoint(False)
目前mongodb只支持点类型的数据,并提供空间索引。
使用mongodb可以很方便的满足高并发的并且简单的需求,例如POI的周边查询API查询
本文转载自:http://www.giser.net/?p=1076
使用Python 将shapefile导入mongodb的更多相关文章
- MySQL导入MongoDB
一.MongoDB的导入导出 mongoDB的导入导出,分为mongoDB官方提供的工具类,和第三方的工具类.下面依次介绍下: 1.1.mongoDB提供的工具 1.1.1.mongoimport工具 ...
- Solr导入MongoDB数据
数据导入方式: 全量导入和增量导入: query 是全量导入时,把你的数据中查到的数据全部导入,deltaImportQuery 和 deltaQuery 是增量导入数据所需要的两个查询语句.delt ...
- 6.python模块(导入,内置,自定义,开源)
一.模块 1.模块简介 模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py.模块可以被别的程序引入,以使用该模块中的函数等功能.这也是使用python标准库的方法. 类似于函数式编程和面向过 ...
- python importlib动态导入模块
一般而言,当我们需要某些功能的模块时(无论是内置模块或自定义功能的模块),可以通过import module 或者 from * import module的方式导入,这属于静态导入,很容易理解. 而 ...
- Python importlib(动态导入模块)
使用 Python importlib(动态导入模块) 可以将字符串型的模块名导入 示例: import importlib module = 'module name' # 字符串型模块名 test ...
- python操作三大主流数据库(8)python操作mongodb数据库②python使用pymongo操作mongodb的增删改查
python操作mongodb数据库②python使用pymongo操作mongodb的增删改查 文档http://api.mongodb.com/python/current/api/index.h ...
- Python import语句导入模块语法[转]
Python import语句导入模块语法 社区推荐:掘金是国内最活跃的技术社区,我们每日有优质Python开发实例分享,海量python开源库推送.来掘金,和更多懂技术的小伙伴交流. pytho ...
- [python]关于在python中模块导入问题追加总结
[背景] 最近在写程序时,我使用的eclipse编辑器运行都没有问题,然后部署到自动化环境上却偏偏报找不到相应模块问题,现在对该问题在之前的贴子上追加总结 原帖子:[python]关于python中模 ...
- Python 使用pymongo操作mongodb库
Python 使用pymongo操作mongodb库 2016-12-31 21:55 1115人阅读 评论(0) 收藏 举报 分类: - - - Python(10) 版权声明:本文为博主原创文 ...
随机推荐
- CentOS系统在不重启的情况下为虚拟机添加新硬盘
一.概述 用过虚拟机的都知道,如果在系统运行的时候去给虚拟机添加一块新设备,比如说硬盘,系统是读取不到这个新硬盘的,因为系统在启动的时候会去检测硬件设备.但是我们也可能会遇到这样的情况,比如正在运行比 ...
- emacs 新手笔记(一) —— 阅读【emacs tutorial】
ilocker:关注 Android 安全(新入行,0基础) QQ: 2597294287 [emacs tutorial]是熟悉 emacs 的入门资料.一共几十个命令,不需硬记,勤练即可. 翻页命 ...
- 入门级的按键驱动——按键驱动笔记之poll机制-异步通知-同步互斥阻塞-定时器防抖
文章对应视频的第12课,第5.6.7.8节. 在这之前还有查询方式的驱动编写,中断方式的驱动编写,这篇文章中暂时没有这些类容.但这篇文章是以这些为基础写的,前面的内容有空补上. 按键驱动——按下按键, ...
- 网页中显示pdf
1.<embed width="800" height="600" src="test_pdf.pdf"> </embed ...
- 不就是抽个血吗,至于么-jQuery,Linux完结篇
hi 趁着周一去抽血化验,真开心...下午报告才出来,不过早上来了就开始各种晕菜,叫错名字,说错话.....至于么.. 还有在教研室的30天就可以肥家了,凯森凯森.今天不想干活(哪天想干过我就问问), ...
- 给深度学习入门者的Python快速教程 - 基础篇
实在搞不定博客园的排版,排版更佳的版本在: https://zhuanlan.zhihu.com/p/24162430 Life is short, you need Python 人生苦短,我用Py ...
- AC日记——找第一个只出现一次的字符 openjudge 1.7 02
02:找第一个只出现一次的字符 总时间限制: 1000ms 内存限制: 65536kB 描述 给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符.如果没有,输出no. 输入 一个字符串 ...
- 利用T-Sql语句中的二重循环打印乘法口诀表
--定义三个初始化变量 declare @a int,@b int,@c varchar(200) --对@a进行赋值 set @a=1 --循环输出9次,@a为被乘数 while(@a<=9) ...
- luogu1151 亲戚
题目背景 若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系. 题目描述 规定:x和y是亲戚,y和z是亲戚,那么x和z也是亲戚.如 ...
- koala编译scss文件时不支持中文字体的解决方案
第一种方案:在scss文件第一行加上这行代码@charset "utf-8"; 第二种方案: scss文件编译时候使用ruby环境,出现 Syntax error: Invalid ...