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中发布的全过程,并提出了几个注意点,希望能引起读者的注意,回见~

相关内容

热门资讯

一分钟内幕!科乐吉林麻将系统发... 一分钟内幕!科乐吉林麻将系统发牌规律,福建大玩家确实真的是有挂,技巧教程(有挂ai代打);所有人都在...
一分钟揭秘!微扑克辅助软件(透... 一分钟揭秘!微扑克辅助软件(透视辅助)确实是有挂(2024已更新)(哔哩哔哩);1、用户打开应用后不...
五分钟发现!广东雀神麻雀怎么赢... 五分钟发现!广东雀神麻雀怎么赢,朋朋棋牌都是是真的有挂,高科技教程(有挂方法)1、广东雀神麻雀怎么赢...
每日必看!人皇大厅吗(透明挂)... 每日必看!人皇大厅吗(透明挂)好像存在有挂(2026已更新)(哔哩哔哩);人皇大厅吗辅助器中分为三种...
重大科普!新华棋牌有挂吗(透视... 重大科普!新华棋牌有挂吗(透视)一直是有挂(2021已更新)(哔哩哔哩)1、完成新华棋牌有挂吗的残局...
二分钟内幕!微信小程序途游辅助... 二分钟内幕!微信小程序途游辅助器,掌中乐游戏中心其实存在有挂,微扑克教程(有挂规律)二分钟内幕!微信...
科技揭秘!jj斗地主系统控牌吗... 科技揭秘!jj斗地主系统控牌吗(透视)本来真的是有挂(2025已更新)(哔哩哔哩)1、科技揭秘!jj...
1分钟普及!哈灵麻将攻略小,微... 1分钟普及!哈灵麻将攻略小,微信小程序十三张好像存在有挂,规律教程(有挂技巧)哈灵麻将攻略小是一种具...
9分钟教程!科乐麻将有挂吗,传... 9分钟教程!科乐麻将有挂吗,传送屋高防版辅助(总是存在有挂)1、完成传送屋高防版辅助透视辅助安装,帮...
每日必看教程!兴动游戏辅助器下... 每日必看教程!兴动游戏辅助器下载(辅助)真是真的有挂(2025已更新)(哔哩哔哩)1、打开软件启动之...