GeoServer发布MongoDB中的shp数据全流程梳理
创始人
2024-11-19 19:34:23
0

目录

  • 前言
  • 1.shp转geojson
  • 2.shp导入MongoDB
  • 3.创建空间索引
  • 4.GeoServer安装MongoDB插件
  • 5.发布
  • 6.注意事项
    • 6.1 geojson要去掉头尾
    • 6.2 MongoDB4.4以上的mongoimport工具需要额外安装
    • 6.3 空间索引是必须项
  • 7.总结

前言

  网上搜到的GeoServer发布MongoDB中的矢量数据或shp数据的文章比较少,有一些文章还设置了付费可见,十分不方便。鉴于此,我们发一期shp数据到MongoDB再到GeoServer的过程梳理。

1.shp转geojson

  由于MongoDB是文档型数据库,因此需要先将shpgeojson,然后才能存入MongoDB,我们使用ogr2ogr工具将shpgeojsonogr2ogr工具被集成到了QGISPostgreSQLGDAL中,因此只要你安装了三者中的任意一个软件,都可以使用这个工具。本文以QGIS为例,ogr2ogr工具一般都位于bin目录下,如QGIS中位置如下图:
在这里插入图片描述
在这个目录下直接输入cmd后回车,cmd就进入了这个目录,然后输入ogr2og --help即可看到相应的帮助说明。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
shpgeojson的命令为:

//ogr2ogr -f geojson  <源shp路径> ogr2ogr -f geojson D:\test\test.geojson D:\test\shp\testline.shp 

在这里插入图片描述
执行完毕之后会看到已经出现了geojson文件
在这里插入图片描述
打开这个文件看看,OK,非常完美,标准的geojson
在这里插入图片描述

2.shp导入MongoDB

  接下来我们就需要将shp导入MongoDB了,先来看看MongoDB的安装路径如下:
在这里插入图片描述

注意:从MongoDB4.4开始,mongodump.exe 、mongoexport.exe 、mongoimport.exe等数据库工具需要单独安装,所以当你看到你的MongoDBbin目录下并没有这几个工具的时候,不要惊讶,不要着急。下载地址为:https://www.MongoDB.com/try/download/database-tools

  shp导入MongoDB,首先我们需要将上面转成功的geojson处理一下,把原始的geojson的头尾去掉,也就是只留features
在这里插入图片描述
变为这样:
在这里插入图片描述
cmd进入MongoDBbin路径下,执行如下命令:

//mongoimport -h localhost:27017 -d dbname -c collectionname --file  --jsonArray mongoimport -h localhost:27017 -d MLM -c cjg_roads --file "D:\test\test.geojson" --jsonArray 

看到MongoDB中已经导入了数据
在这里插入图片描述

3.创建空间索引

  这一步在MongoDB中是必选项,使用其他数据库时,比如PostGIS、MySQL等并不需要。为什么要创建空间索引?因为不创建空间索引就会导致发布时找不到图层
在这里插入图片描述
创建空间索引的命令为:

//cjg_roads是集合名称 db.cjg_roads.createIndex({     "geometry": "2dsphere" })  

确保geometry字段显示了索引
在这里插入图片描述

4.GeoServer安装MongoDB插件

  到GeoServer官网下载自己的GeoServer版本对应的MongoDB插件即可。

https://GeoServer.org/download/#archive

在这里插入图片描述
在这里插入图片描述
下载完成后解压到GeoServerwebapps\geoserver\WEB-INF\lib目录下即可,然后重启GeoServer
在这里插入图片描述

5.发布

  经过了前面的步骤,发布就顺理成章了,点击新建数据存储,选择MongoDB即可。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.注意事项

6.1 geojson要去掉头尾

为什么要把头尾去掉?如果不去掉头尾,那么导入命令是这样的:

 //mongoimport -h localhost:27017 -d test -c json --type json --file  mongoimport -h localhost:27017 -d MLM -c trees --type json --file "D:\test\test.geojson" 

最后在GeoServer中发布时就会遇到坐标范围计算失败的问题
在这里插入图片描述

6.2 MongoDB4.4以上的mongoimport工具需要额外安装

  前文已经说过,从MongoDB4.4开始,mongodump.exe 、mongoexport.exe 、mongoimport.exe等数据库工具需要单独安装,所以当你看到你的MongoDB的bin目录下并没有这几个工具的时候,不要惊讶,不要着急。下载地址为:https://www.mongodb.com/try/download/database-tools

6.3 空间索引是必须项

  前文也说过了,没有空间索引,或空间索引未生效,会导致添加图层时读取不到图层,这里也就不再赘述了。

7.总结

  本文详细的梳理shp文件导入到MongoDB的过程,以及在GeoServer中发布的全过程,并提出了几个注意点,希望能引起读者的注意,回见~

相关内容

热门资讯

钉钉云课堂课程怎么下载 在钉钉云课堂中,目前不支持直接下载课程。但您可以观看课程时,截屏或录制屏幕来保存课程内容。请确保遵守...
windows10清除不要的垃... 在Windows 10中,可以使用“磁盘清理”工具删除垃圾文件。按下Win键+R,输入cleanmg...
RabbitMQ的Window... 文章目录前言一、Windows安装RabbitMQ总结前言曾经写过一篇关于RabbitMQ的Ubun...
华为手机一直重启循环开不了机(... 可能是系统崩溃或硬件故障。尝试长按电源键强制重启,若无效,进入recovery模式清除缓存数据。如问...
Welcome to ngin... 要解决 "welcome to nginx!" 错误,需要检查虚拟主机配置࿰...
Python 百题(实战快速掌... 目录实现链表类挑战介绍挑战内容挑战要求示例代码版权说明参考答案代码分析:Node 类L...
酷狗音乐标签怎么写 酷狗音乐标签应简洁明了,突出歌曲特点,如“动感节奏”、“深情对唱”、“经典老歌”等,吸引用户点击。酷...
微信读书如何关闭微信朋友 在微信读书中,要关闭或删除微信好友,你需要先进入“发现”页面,然后点击“朋友”,在列表中找到你想要删...
深入剖析编程语言的结构化编程范... 结构化编程是一种编程范式,它强调使用清晰、模块化的代码结构来解决问题。这种范式通过限制...
为什么请求频率高,就应该使用轮... 在某些情况下,如果请求频率很高,使用轮询(Polling&...