Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Geoserver的RESTful接口使用

Geoserver的RESTful接口使用

作者头像
牛老师讲GIS
发布于 2024-05-24 05:21:27
发布于 2024-05-24 05:21:27
31104
代码可运行
举报
运行总次数:4
代码可运行

概述

GeoServer提供了一个RESTful接口,客户端可以通过该接口获取有关实例的信息并进行配置更改。REST接口使用简单的HTTP调用,通过客户端就可以配置GeoServer,而无需使用Web管理接口。

Geoserver中的关系

工作区、数据源、图层、图层组以及样式之间的关系如下图所示。

可得知:

  • 工作区用于组织、管理和发布地图数据和地图服务。通过合理地使用工作区,可以更好地管理不同类型的地图数据和业务逻辑,提高地图服务的可用性和可维护性。
  • 数据源是地图数据在地理信息系统中的来源,可以是文件、数据库、网络等。数据源可以包含多个图层,每个图层可以代表一个地理要素或空间数据集。数据源必须属于某个工作区。
  • 图层是将数据源发布成地图服务,因此图层也必须属于某个工作区。
  • 图层组是将多个图层或图层组组合在一起,形成一个逻辑上的图层。由于图层或图层组属于不同的工作区,所以图层组可不属于工作区。
  • 样式是图层的样式定义,用于控制图层的显示效果,如颜色、透明度、线型、填充样式等,同一个样式可以被不同的图层引用,所以样式也可不属于工作区。

RESTful接口使用

1. 工作区

  • 获取工作区列表 GET: http://localhost:8085/geoserver/rest/workspaces.json
  • 获取工作区信息 GET: http://localhost:8085/geoserver/rest/workspaces/lzugis.json
  • 添加工作区 POST: http://localhost:8085/geoserver/rest/workspaces?default=true
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "workspace": {
    "name": "lzugis-workspace"
  }
}
  • 删除工作区 DELETE: http://localhost:8085/geoserver/rest/workspaces/lzugis-workspace?recurse=true

2. 数据存储

  • 获取工作区下所有数据存储 GET: http://localhost:8085/geoserver/rest/workspaces/lzugis/datastores.json
  • 获取存储信息 GET: http://localhost:8085/geoserver/rest/workspaces/lzugis/datastores/lzugis.json
  • 添加数据存储 - shp文件 POST: http://localhost:8085/geoserver/rest/workspaces/lzugis/datastores
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "dataStore": {
    "name": "nyc",
    "connectionParameters": {
      "entry": [
        {"@key":"url","$":"file:/D:/data/china/capital.shp"}
      ]
    }
  }
}
  • 添加数据存储 - shp文件夹 POST: http://localhost:8085/geoserver/rest/workspaces/lzugis/datastores
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "dataStore": {
    "name": "china",
    "connectionParameters": {
      "entry": [
        {"@key":"url","$":"file:/D:/data/china"}
      ]
    }
  }
}
  • 添加数据存储 - PG数据库 POST: http://localhost:8085/geoserver/rest/workspaces/lzugis/datastores
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "dataStore": {
    "name": "postgres",
    "connectionParameters": {
      "entry": [
        {"@key":"host","$":"localhost"},
        {"@key":"port","$":"5432"},
        {"@key":"database","$":"lzugis"},
        {"@key":"user","$":"postgres"},
        {"@key":"passwd","$":"passwd"},
        {"@key":"dbtype","$":"postgis"}
      ]
    }
  }
}
  • 删除数据存储 DELETE: http://localhost:8085/geoserver/rest/workspaces/lzugis/datastores/nyc?recurse=true

3. 图层

  • 获取所有图层 GET: http://localhost:8085/geoserver/rest/layers
  • 获取工作区下的所有图层 GET: http://localhost:8085/geoserver/rest/workspaces/lzugis/layers
  • 获取图层信息 GET: http://localhost:8085/geoserver/rest/workspaces/lzugis/layers/layer_capital
  • 获取图层要素信息 GET: http://localhost:8085/geoserver/rest/workspaces/lzugis/datastores/postgres/featuretypes/layer_capital.json
  • 图层 POST: http://localhost:8085/geoserver/rest/workspaces/lzugis/datastores/postgres/featuretypes
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
	"name": "layer_capital",
	"nativeName": "layer_capital",
	"namespace": {
		"name": "lzugis",
		"href": "http://localhost:8085/geoserver/rest/namespaces/lzugis.json"
	},
	"title": "layer_capital",
	"keywords": {
		"string": [
			"features",
			"layer_capital"
		]
	},
	"nativeCRS": "GEOGCS[\"WGS 84\", \r\n  DATUM[\"World Geodetic System 1984\", \r\n    SPHEROID[\"WGS 84\", 6378137.0, 298.257223563, AUTHORITY[\"EPSG\",\"7030\"]], \r\n    AUTHORITY[\"EPSG\",\"6326\"]], \r\n  PRIMEM[\"Greenwich\", 0.0, AUTHORITY[\"EPSG\",\"8901\"]], \r\n  UNIT[\"degree\", 0.017453292519943295], \r\n  AXIS[\"Geodetic longitude\", EAST], \r\n  AXIS[\"Geodetic latitude\", NORTH], \r\n  AUTHORITY[\"EPSG\",\"4326\"]]",
	"srs": "EPSG:4326",
	"nativeBoundingBox": {
		"minx": 87.5760726928711,
		"maxx": 126.56706237792969,
		"miny": 19.970149993896484,
		"maxy": 45.6938591003418,
		"crs": "EPSG:4326"
	},
	"latLonBoundingBox": {
		"minx": 87.5760726928711,
		"maxx": 126.56706237792969,
		"miny": 19.970149993896484,
		"maxy": 45.6938591003418,
		"crs": "EPSG:4326"
	},
	"projectionPolicy": "FORCE_DECLARED",
	"enabled": true,
	"store": {
		"@class": "dataStore",
		"name": "postgres",
		"href": "http://localhost:8085/geoserver/rest/workspaces/lzugis/datastores/postgres.json"
	},
	"serviceConfiguration": false,
	"simpleConversionEnabled": false,
	"internationalTitle": "",
	"internationalAbstract": "",
	"maxFeatures": 0,
	"numDecimals": 0,
	"padWithZeros": false,
	"forcedDecimal": false,
	"overridingServiceSRS": false,
	"skipNumberMatched": false,
	"circularArcPresent": false,
	"attributes": {
		"attribute": [{
				"name": "name",
				"minOccurs": 0,
				"maxOccurs": 1,
				"nillable": true,
				"binding": "java.lang.String"
			},
			{
				"name": "geom",
				"minOccurs": 0,
				"maxOccurs": 1,
				"nillable": true,
				"binding": "org.locationtech.jts.geom.Point"
			},
			{
				"name": "lon",
				"minOccurs": 0,
				"maxOccurs": 1,
				"nillable": true,
				"binding": "java.lang.Double"
			},
			{
				"name": "lat",
				"minOccurs": 0,
				"maxOccurs": 1,
				"nillable": true,
				"binding": "java.lang.Float"
			}
		]
	}
}
  • 删除图层 DELETE: http://localhost:8085/geoserver/rest/workspaces/lzugis/datastores/postgres/featuretypes/capital?recurse=true

4. 样式

  • 获取所有样式 GET: http://localhost:8085/geoserver/rest/styles
  • 获取工作区下的所有图层 GET: http://localhost:8085/geoserver/rest/workspaces/lzugis/styles
  • 添加样式 POST: (不指定工作区)http://localhost:8085/geoserver/rest/styles?name=test POST: (指定工作区)http://localhost:8085/geoserver/rest/workspaces/lzugis/styles?name=test 设置头信息content-typeapplication/vnd.ogc.sld+xml
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="UTF-8"?>
<StyledLayerDescriptor version="1.0.0" 
 xsi:schemaLocation="http://www.opengis.net/sld StyledLayerDescriptor.xsd" 
 xmlns="http://www.opengis.net/sld" 
 xmlns:ogc="http://www.opengis.net/ogc" 
 xmlns:xlink="http://www.w3.org/1999/xlink" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <!-- a Named Layer is the basic building block of an SLD document -->
  <NamedLayer>
    <Name>default_line</Name>
    <UserStyle>
    <!-- Styles can have names, titles and abstracts -->
      <Title>Default Line</Title>
      <Abstract>A sample style that draws a line</Abstract>
      <!-- FeatureTypeStyles describe how to render different features -->
      <!-- A FeatureTypeStyle for rendering lines -->
      <FeatureTypeStyle>
        <Rule>
          <Name>rule1</Name>
          <Title>Blue Line</Title>
          <Abstract>A solid blue line with a 1 pixel width</Abstract>
          <LineSymbolizer>
            <Stroke>
              <CssParameter name="stroke">#0000FF</CssParameter>
            </Stroke>
          </LineSymbolizer>
        </Rule>
      </FeatureTypeStyle>
    </UserStyle>
  </NamedLayer>
</StyledLayerDescriptor>
  • 删除样式 DELETE: http://localhost:8085/geoserver/rest/styles/test?recurse=true
说明

由于上面的操作都需要登录Geoserver后方可,所以在进行接口调用时需要设置登录信息,如在Postman中可进行如下设置。

如在前端代码调用,需要设置头信息Authorization,设置方式如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const auth = window.btoa(`admin:geoserver`);
const url = 'http://localhost:8085/geoserver/rest/layers'
fetch(url, { 
  method: 'get', 
  headers: { 'Authorization': `Basic ${auth}` 
}).then(res => res.json()).then(res => {
  console.log(res)
})
参考资料
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-04-20,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
WMS图例展示
在OGC标准中,可以通过GetLegendGraphic接口来获取图例,本文讲述如何结合WMS的REST接口,实现唯一值渲染图层每个值对应的图例的获取。
牛老师讲GIS
2018/10/23
1.7K0
WMS图例展示
Geoserver添加mongoDB数据源
文章目录 概述 操作 1. 添加mongodb 插件 2. 添加数据源 3. 添加数据 3. 发布服务 概述 本文讲述如何在geoserver中添加mongoDB作为数据源,并发布图层。 操作 1. 添加mongodb 插件 在浏览器输入地址下载页面,下载mongodb插件。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3U2tivfz-1655387878217)(https://upload-images.jianshu.io/upload_images/682667
牛老师讲GIS
2022/06/17
1.2K0
Geoserver添加mongoDB数据源
openlayers实现wfs属性查询和空间查询
一直在寻求openlayers中wfs加载和属性查询的相关操作,功夫不负有心人,蓦然回首,那人却在灯火阑珊处,找到了这篇博文:http://blog.csdn.net/longshengguoji/article/details/39377931,试了下,在IE8中正常运行,但是在chrom中涉及到跨域的问题,待后期接解决吧。本文讲解如何通过wfs实现属性的查询与展示。
牛老师讲GIS
2018/10/23
3.8K0
openlayers实现wfs属性查询和空间查询
Geoserver2.11矢量切片与OL3中的调用展示
GIS的底图一直使用金字塔技术进行切图,使用户能够快速访问指定级别的地图或者影像。但是切图本身是一张图片,无法进行交互。于是又引入了矢量图层用来显示矢量点线面,这通常需要先获取矢量地理数据,然后通过前端将其绘制成不同元素便能通过鼠标进行响应交互了。
牛老师讲GIS
2018/10/23
2K0
Geoserver2.11矢量切片与OL3中的调用展示
使用天地图加载Geoserver的图层
在项目中往往使用地图作为底图(比如 天地图卫星图等),再其上覆盖你的通过geoserver发布自定义图层。本文记录了我的实现方法。
张云飞Vir
2022/12/30
3.5K0
使用天地图加载Geoserver的图层
点图层叠加与事件响应
用过百度地图的童鞋一定很羡慕百度地图POi的展示,地图切片+事件响应,以前一直在考虑这个问题,今天,将我的思考结果做一个汇报给大家。下面,将我的实现思路说明一下:1、当图层添加完成或者图层添加完毕并地图四至发生变化时候,从后台获取当前视野内的POI点数据;2、注册mousemove事件,根据鼠标的位置生成一个很小的矩形框,判断POI点数据是否落在了该小矩形框内,是,将其高亮。
牛老师讲GIS
2018/10/23
1.1K0
点图层叠加与事件响应
OpenLayers3基础教程——加载资源
你可以在OL官网去下载,下载地址为http://openlayers.org/download/,也可以去我的百度云盘下载,下载地址为http://pan.baidu.com/s/1o6wwHTo。官网上的最新版本为3.6.0,我的网盘的版本为3.0.0,不过官网上的链接好像是失效的。
牛老师讲GIS
2018/10/23
2.5K0
跟牛老师一起学WEBGIS——WEBGIS基础(WMS服务)
WMS是Web Map Service(网络地图服务)的缩写,是开放地理空间联盟 (OGC) 定义提供和使用动态地图时需遵守的国际规范。到目前为止,已发布了四个版本的 WMS 规范:1.0.0、1.1.0、1.1.1 和1.3.0(最新)。
牛老师讲GIS
2020/08/31
1.2K0
Geoserver的ImageMosaic数据源
ImageMosaic翻译成中文就是影像拼接,适用于多个影像文件需要在一起展示的场景,针对这种场景,我们可以对每一个影像数据发布服务,完了通过layergroup的方式统一成一个服务,很显然,如果当影像很多的时候这种操作既耗时又费力,这个时候你就需要用到geoserver的ImageMosaic,它可以实现将一个文件夹下面的所有影像文件发布成一个服务的需求。
牛老师讲GIS
2021/03/20
8720
Openlayers3加载天地图
在前文中分别讲到了在Arcgis for js、Openlayers2中去加载天地图,同时也讲到了天地图的离线加载方式。在本文,讲述在Openlayers3中实现在线/离线的天地图的加载。
牛老师讲GIS
2018/10/23
2K0
基于openlayers实现聚类统计展示
在前面的博文中讲述过基于Arcgis for js如何实现聚类统计展示,在本文中讲述如何基于openlayers实现聚类统计的效果,Arcgis for js聚类统计的博文地址为:
牛老师讲GIS
2018/10/23
1.1K0
基于openlayers实现聚类统计展示
大量POI的解决方案2
在前面的文章中,讲述了通过“抽稀+后台生成图片”的方式解决大量POI点展示的一种思路,后面看了tilestache的矢量切片方式,自己仔细思考了下,提出了本文大量POI点的展示解决方案。
牛老师讲GIS
2018/10/23
8550
大量POI的解决方案2
使用geoserver-manager库操作geoserver发布图层
geoserver 提供了地图服务,可以通过它提供的 web 管理页面,创建存储库和发布图层。在实际使用中总不能每次都人工操作,太不方便了,往往还要和你的业务系统交互,在你的业务系统管理tiff 文件并发布。这个时候 geoserver-manager库就派上用场了,它封装了 geoserver 的一些 REST 接口,可以在你的Java项目中调用这些接口来实现你的需要。
张云飞Vir
2022/12/31
3K1
高效访问海量地图数据--用OpenLayers访问GeoServer发布的地图
上一篇文章中,我们介绍了用GeoServer手动发布本地Shapefile地图,那么如何在谷歌地图中展示GeoServer发布好的地图呢? 大伙先来看看本文实现最终结果: 地图放大后: 一、解决Geo
我叫刘半仙
2018/06/11
4.6K0
openlayers自定义图层控制的实现
最近一直在考虑一件事情,那就是openlayers中自定义wms的图层控制。用过openlayers的人都知道,在openlayers中有自带的图层控制的控件,调用方法也很简单:
牛老师讲GIS
2018/10/23
5.4K0
openlayers自定义图层控制的实现
OL2中设置鼠标的样式
在OL2中,鼠标默认是箭头,地图移动时,鼠标样式是移动样式;很多时候,为了形象起见,我们总是希望鼠标在地图上的时候和移动地图的时候鼠标的样式不是默认的效果,本文讲述如何实现这样的效果。
牛老师讲GIS
2018/10/23
8030
Echart在Openlayers的应用
echart,一个由百度前端发起的canvas国产类库(官网:http://echarts.baidu.com/index.html)。echart其实是在canvas类库zrender的基础上做的主题图库,优点有数据驱动,图例丰富,功能强大,支持数据拖拽重计算,数据区域漫游等功能,不论是从使用便捷程度、美观程度等方面都是不错的选择,在本文讲述如何在Openlayers中结合echart实现地图统计图的展示。
牛老师讲GIS
2018/10/23
2.6K0
Echart在Openlayers的应用
OpenLayers3基础教程——OL3 介绍interaction
本节主要讲述OL3的交互操作interaction,重点介绍draw,select以及modify。
牛老师讲GIS
2018/10/23
9390
OpenLayers3基础教程——OL3 介绍interaction
cesium使用tif切片的几种方法
GDAL是一个用于栅格和矢量地理空间数据格式的转换库。我们主要使用其中的一个工具gdal2tiles,这是一个生成包含TMS瓦片、KML文件和简单网页查看器的目录的工具。
治电小白菜
2024/12/27
7220
cesium使用tif切片的几种方法
通过Java代码自动发布Geoserver的地图服务WMS
GeoServer 顾名思义。是一个Server,它是开源的,允许用户查看和编辑地理数据的服务器,它可以比较容易的在用户之间迅速共享空间地理信息。利用Geoserver可以把数据作为maps/images来发布(利用WMS来实现)也可以直接发布实际的数据(利用WFS来实现),它同时也提供了修改,删除和新增的功能(利用WFS-T)。
我叫刘半仙
2019/03/12
4.2K2
通过Java代码自动发布Geoserver的地图服务WMS
相关推荐
WMS图例展示
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验