前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Geoserver添加mongoDB数据源

Geoserver添加mongoDB数据源

作者头像
lzugis
发布2022-06-17 11:18:21
1K0
发布2022-06-17 11:18:21
举报

文章目录

概述

本文讲述如何在geoserver中添加mongoDB作为数据源,并发布图层。

操作

1. 添加mongodb 插件

在浏览器输入地址下载页面,下载mongodb插件。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3U2tivfz-1655387878217)(https://upload-images.jianshu.io/upload_images/6826673-339f2f41b6a0b42a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)] 将下载的插件解压到geoserver部署目录geoserver\WEB-INF\lib,启动geoserver即可。

2. 添加数据源

进入geoserver页面,数据存储->新建数据源,如下图所示有MongoDD矢量数据源则说明安装成功。

image.png
image.png

mongoDB的数据源参数有两个:data_storescheme_storedata_store为数据库连接地址,格式如下:

代码语言:javascript
复制
# 单数据源
mongodb://root:root@localhost:27017/sfmap?authMechanism=SCRAM-SHA-1&authSource=admin

# 多集群
mongodb://root:root@localhost:27017,localhost:27018/sfmap?authMechanism=SCRAM-SHA-1&authSource=admin

scheme_store为geoserver发布图层的时候生成的,可以是文件:

image.png
image.png

生成的数据如下:

image.png
image.png

也可以是数据库,是数据库的时候会创建一个名为schemas的集合,如下图:

image.png
image.png

数据库中存储的记录如下:

image.png
image.png

不论是那种方式,都会生成一个如下文件:

代码语言:javascript
复制
{ 
    "_id" : ObjectId("62aae424ba21bf9ac56d9016"), 
    "typeName" : "mongo_capital", 
    "userData" : {
        "collection" : "mongo_capital"
    }, 
    "geometryDescriptor" : {
        "localName" : "geometry", 
        "crs" : {
            "type" : "name", 
            "properties" : {
                "name" : "urn:ogc:def:crs:EPSG:4326"
            }
        }
    }, 
    "attributeDescriptors" : [
        {
            "localName" : "geometry", 
            "type" : {
                "binding" : "com.vividsolutions.jts.geom.Geometry"
            }, 
            "userData" : {
                "encoding" : "GeoJSON", 
                "mapping" : "geometry"
            }
        }, 
        {
            "localName" : "name", 
            "minOccurs" : NumberInt(0), 
            "maxOccurs" : NumberInt(1), 
            "type" : {
                "binding" : "java.lang.String"
            }, 
            "userData" : {
                "mapping" : "properties.name"
            }
        }
    ]
}

该文件是类似于一个图层的元数据,通过该文件,我们可以控制:1、属性是否展示;2、属性的字段可以以做修改。

image.png
image.png

3. 添加数据

数据的添加有两种方式:1. 直接对库操作,插入数据;2.在geoserver创建图层的时候创建好图层,后面再插入数据。geoserver的方式如下:

image.png
image.png

说明:

  1. 在geoserver中创建图层的时,必须添加一个geometry类型的字段,字段类型可以是下图中的类型。
image.png
image.png

插入数据的语句如下:

代码语言:javascript
复制
db.mongo_rect.insert({ "type": "Feature", "properties": { "name": "tect1", "code": "rect1" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 102.2201, 36.0388 ], [ 102.2201, 38.8592 ], [ 106.6959, 38.8592 ], [ 106.6959, 36.0388 ], [ 102.2201, 36.0388 ] ] ] ] } });
db.mongo_rect.insert({ "type": "Feature", "properties": { "name": "rect2", "code": "rect2" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 109.7921, 34.2301 ], [ 109.7921, 37.9395 ], [ 115.5554, 37.9395 ], [ 115.5554, 34.2301 ], [ 109.7921, 34.2301 ] ] ] ] } });
db.mongo_rect.insert({ "type": "Feature", "properties": { "name": "rect3", "code": "rect3" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 101.1165, 30.4594 ], [ 101.1165, 33.8009 ], [ 107.7382, 33.8009 ], [ 107.7382, 30.4594 ], [ 101.1165, 30.4594 ] ] ] ] } });

2、直接对库操作的语句如下:

代码语言:javascript
复制
// 创建集合
db.createCollection("mongo_rect");
// 插入数据
db.mongo_rect.insert({ "type": "Feature", "properties": { "name": "tect1", "code": "rect1" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 102.2201, 36.0388 ], [ 102.2201, 38.8592 ], [ 106.6959, 38.8592 ], [ 106.6959, 36.0388 ], [ 102.2201, 36.0388 ] ] ] ] } });
// 创建索引
db.mongo_rect.createIndex({
    "geometry": "2dsphere"
});

说明

  1. 直接库操作的一定要创建索引,不然geoserver中找不到图层;

3. 发布服务

服务发布就比较简单了,在此就不再赘述。

参考资料

  1. http://docs.geotools.org/latest/userguide/library/data/mongodb.html
  2. MongoDB地理空间数据存储及检索 - 乌合之众 - 博客园 (cnblogs.com)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-06-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 概述
  • 操作
    • 1. 添加mongodb 插件
      • 2. 添加数据源
        • 3. 添加数据
          • 3. 发布服务
          相关产品与服务
          云数据库 MongoDB
          腾讯云数据库 MongoDB(TencentDB for MongoDB)是腾讯云基于全球广受欢迎的 MongoDB 打造的高性能 NoSQL 数据库,100%完全兼容 MongoDB 协议,支持跨文档事务,提供稳定丰富的监控管理,弹性可扩展、自动容灾,适用于文档型数据库场景,您无需自建灾备体系及控制管理系统。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档