# GeoServer 学习记录
# 基础
GeoServer 是一个基于Java的服务器,建立在GeoTools之上,用于查看和编辑GIS数据,内部集成了Openlayers。官方文档 (opens new window)
# 下载安装
官网下载 (opens new window)下载生产版本,解压至目标文件夹
- Platform Independent Binary 独立于平台的二进制文件
- Windows Installer windows 环境的jar包,必须有java环境 开发环境
- Web Archive war包,可以丢在tomcat里启动 生产环境
windows环境安装 需要配置java环境
# 启动
进入bin目录,执行命令:
startup.sh
浏览器中输入:
http://localhost:8080/geoserver
账户名密码:
用户名:admin,密码:geoserver
# 版本特性
- 版本2.22.x 需要Java8或者Java11环境,建议使用Java8版本
- 版本2.23.x以后 需要Java11或者Java17环境,建议使用Java11版本,Java17会报错
- 版本2.6以前使用Jetty作为内置服务器,之后使用tomcat
# geoserver跨域问题
修改geoserver\webapps\geoserver\WEB-INF\web.xml文件
将下面这两段取消注释
<!-- Uncomment following filter to enable CORS in Jetty. Do not forget the second config block further down.
<filter>
<filter-name>cross-origin</filter-name>
<filter-class>org.eclipse.jetty.servlets.CrossOriginFilter</filter-class>
<init-param>
<param-name>chainPreflight</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>allowedOrigins</param-name>
<param-value>*</param-value>
</init-param>
<init-param>
<param-name>allowedMethods</param-name>
<param-value>GET,POST,PUT,DELETE,HEAD,OPTIONS</param-value>
</init-param>
<init-param>
<param-name>allowedHeaders</param-name>
<param-value>*</param-value>
</init-param>
</filter>
-->
<!-- Uncomment following filter to enable CORS
<filter-mapping>
<filter-name>cross-origin</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
-->
# 更改缓存目录
打开webapps/geoserver/WEB-INF下的web.xml文件,在display-name节点后面添加一下内容:
路径为自定义的缓存数据路径
<context-param>
<param-name>GEOWEBCACHE_CACHE_DIR</param-name>
<param-value>E:\ProgramData\Geoserver_Tiles</param-value>
</context-param>
# 发布WMS服务
# 发布图像
数据准备,放置在数据目录目录E:\ProgramData\geoserver\data下
创建工作区,指定名称和url
创建一个数据Store:数据源选择WorldImage,选择本地影像
创建一个图层:新建图层、选择数据、点击发布,进入配置页面
- 基本参考信息:命名、标题、摘要
- 坐标参考系统:强制声明会使用内部EPSG定义的WGS84,而非提供的 投影文件
- 边框:由SRS计算,由native计算
配置完成后,点击发布
- 预览图层:
注:SRS是指空间参考系统
# 发布GeoPackage
和发布图像类似,store和数据源有所不同
# 发布图层组
- 首先发布若干单个图层
- 创建图层组,可以将同一工作空间的不同图层组合在一起,并调整顺序
- 确定坐标系,生成边界
# 发布样式
- 创建样式
- 输入名称、选择工作空间、格式和图例
- 选择样式内容,并生成配置文件xml,自定义样式文件
- 在发布页面,找到对应的图层
- 在图层预览中浏览
# 发布shapefile
- 创建数据store,选择数据源shp文件,指定DBF 字符集
- 在发布界面,由数据生成边界框,投影的和经纬度的
# 发布PostGIS table
- 首先安装postgresql和对应版本的postgis扩展
- 创建数据库并导入官方案例数据
- 在geoserver页面创建新的数据仓库,添加postgis数据,配置连接参数
- 添加新的图层,选择刚刚创建的数据仓库,计算边界框
- 发布界面设置数据类型为polygon,保存
# 发布WMTS服务
Geoserver内置了GeoWebCache服务,可以将图层提前切片保存
# 图层切片
- 在Tile Layers中找到对应的图层 点击seed/Truncate
- 编辑图层切片参数
- 点击submit创建切片任务
- 切出的地图瓦片在geoserver\gwc\huyadish_basemap目录
- 可在预览中查看服务URL
# Cesium中使用
// 原始URL
http://localhost:8080/geoserver/gwc/service/wmts/rest/huyadish:basemap/{style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}?format=image/png
// cesium中修改
http://localhost:8080/geoserver/gwc/service/wmts/rest/huyadish:basemap/{style}/{TileMatrixSet}/{TileMatrixSet}:{TileMatrix}/{TileRow}/{TileCol}?format=image/png
使用案例
// 本地发布的WMS服务,layers可选countries、SR_50M、basemap
const geoserverWMSProvider = new Cesium.WebMapServiceImageryProvider({
url: 'http://localhost:8080/geoserver/huyadish/wms',
layers: 'huyadish:countries',
parameters: {
service: 'WMS',
// 这里要看geoserver发布服务支持的格式,png、gif、jpeg
format: 'image/png',
// 这里1.1.1和1.1.0均可
version: '1.1.1',
transparent: true
}
})
// 本地发布的WMTS服务
const geoserverWMTSProvider = new Cesium.WebMapTileServiceImageryProvider({
url: 'http://localhost:8080/geoserver/gwc/service/wmts/rest/huyadish:basemap/{style}/{TileMatrixSet}/{TileMatrixSet}:{TileMatrix}/{TileRow}/{TileCol}?format=image/png',
layer: 'huyadish:basemap',
style: '',
format: 'image/png',
tileMatrixSetID: 'EPSG:900913', //EPSG需要修改
maximumLevel: 10,
})
# 发布WCF服务
# 发布WFS服务
# 系统信息查看
← Cesium 源码学习 SLD和SE的区别 →