GeoServer WMTS 服务
准备工作
使用GeoServer发布WMTS服务,需要以下软件或环境
软件环境 | 版本 |
---|---|
Java | 1.8 |
GeoServer | ≥2.19.2 |
Git | / |
下载安装java1.8
Win 64位环境下,下载java1.8安装包
https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
下载后启动exe并分别安装jdk与jre至自定义目录
Jdk安装路径:D:\Program Files\Java\jdk1.8.0_301
Jre安装路径:D:\Program Files\Java\jre1.8.0_301
注:后续配置说明以上述安装路径为例
配置java1.8环境变量
依次点击“开始”-》“此电脑”-》“属性”-》“高级系统设置”-》“环境变量(N)…”
新建两个“系统变量”:
变量名:JAVA_HOME,值:D:\Program Files\Java\jdk1.8.0_301
变量名:CLASSPATH,值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
编辑“系统变量”Path,增加“%JAVA_HOME%\bin”和“%JAVA_HOME%\jre\bin”
重启计算机
确认Java1.8安装和配置正确
在cmd中依次输入java -version与javac -version
以上界面表示Java1.8已安装和配置正确
下载GeoServer
打开http://geoserver.org/,下载GeoServer程序文件
下载完成后直接解压即可
例如: 解压后路径E:\geoserver-2.20.0-bin
发布服务
启动GeoServer
进入GeoServer解压根目录E:\geoserver-2.20.0-bin,右键选择“Git Bash Here”,输入启动命令“./bin/startup.sh”并回车
进入GeoServer服务发布页面
在Chrome浏览器访问http://localhost:8080/geoserver
点击右上角“登录”,默认账号:admin,默认密码:geoserver
新建工作区
点击左侧菜单栏中的“工作区”,进入工作区界面,点击“添加新的工作区”
输入“Name”:自定义名称,freedo-workspace
输入“命名空间URI”:可以参考其它GeoServer工作区命名空间,修改链接最后的值即可,例如:http://www.opengeospatial.net/freedo-workspace
点击“保存”,返回工作区界面
添加新的数据存储
点击左侧菜单栏中的“数据存储”,进入数据存储界面,点击“添加新的数据存储”,点击矢量数据源中的“Directory of spatial files (shapefiles)”
在“新建矢量数据源”界面,选择之前创建的工作区“freedo-workspace”
在“数据源名称”输入:shp-sampledata-freedo
在连接参数中点击右侧“浏览…”,打开数据文件目录,找到待发布的shp数据后,点击“确定”
修改“DBF文件的字符集”为UTF-8,保持其他设置项为默认值,点击“保存”后跳转新建图层页面
注:“DBF文件的字符集”设置值根据数据实际的编码方式决定
在“新建图层”页面自动读取了待发布shp数据,点击相应数据右侧的“发布”
注:如果在点击“保存”后没有跳转新建图层页面,在左侧菜单栏中点击“图层”,点击“添加新的资源”,在“添加图层”中找到刚刚创建的数据存储:freedo-workspace: shp-sampledata-freedo,再点击“发布”
点击“发布”后,进入“编辑图层”页面,在数据分栏中,默认“命名”为:sampledata(自动读取待发布shp的数据名)
在“坐标参考系统”中,自动定义了本机的空间参考系统(来自待发布的shp)与目标空间参考系统。如果想要对目标参考系统进行修改,可以点击“查找”后,输入对应的EPSG编码并点击相应参考系即可
在边框中,点击“从数据中计算”自动填写Native Bounding Box
注:在此处需要计算边框矩形的长宽值,计算方法如下:
边框长=最大X-最小X=833,766.608156445-(-596,350.2311648708)=1,430,116.8393213158
边框宽=最大Y-最小Y=4,769,597.654818009-3,607,969.5492127184=1,161,628.1056052906
完成后,将计算得到的较大边长值(1,430,116.8393213158)记录下来,在后续创建切片方案中需要使用。
点击“Compute from native bounds”填写纬度/经度边框
数据分栏中其他设置项保持默认值,点击“保存”,进入图层界面,可以在图层界面中看到刚刚创建的图层sampledata
创建切片方案
如果切片方案不变,创建1次之后可跳过此步骤
点击左侧菜单栏中的“网格集”,进入网格集界面,点击“添加新网格集”
在“创建新的网格集”界面,“名称”输入:sampledata-gridset-freedo
在“坐标系”栏,点击右侧“查找”,输入与待发布shp坐标系一致的EPSG编码(例如:4544),查找到坐标系后点击坐标系编码
在“网格集边界”中,手动输入从数据中计算得到的Native Bounding Box
注:Native Bounding Box边界值计算方法如下:
根据之前得到的较大边长值(1,430,116.8393213158),计算网格集边界的最大X、最大Y。
最小X与边框最小X保持一致:-596,350.2311648708
最小Y与边框最小Y保持一致:3,607,969.5492127184
最大X=最小X+较大边长值=-596,350.2311648708+1,430,116.8393213158=833,766.608156445
最大Y=最小Y+较大边长值=3,607,969.5492127184+1,430,116.8393213158=5,038,086.3885340342
填写网格集边界后,在“Tile Matrix Set”下,多次点击“Add zoom level”,可以添加多个缩放级别,在发布时根据实际的尺度需求选择一定的缩放区间即可
注:添加缩放级别时,不要手动编辑修改系统自动添加的“像素大小(Pixel Size)”与“比例尺(Scale)”中的参数值;此外,如果对网格集进行了修改编辑,需要删除所有缩放级别并重新添加。
- 点击“保存”,返回网格集界面
编辑图层Tile Caching
左侧菜单栏中点击“图层”,在图层界面找到刚刚创建的图层,并点击sampledata
在“编辑图层”页面,点击“Tile Caching”分栏,在页面底部“Add grid subset”处下拉找到之前创建好的网格集“sampledata-gridset-freedo”,并点击“+”将网格集加入到图层可用的网格集中
注:系统默认添加的“EPSG:4326”与“EPSG:900913”切片方案不要删除。
- 点击“保存”,返回图层界面
进行切片
- 左侧菜单栏中点击“切片图层”,进入切片图层界面,找到刚刚设置好的切片freedo-workspace:sampledata
- 点击freedo-workspace:sampledata右侧的“Seed/Truncate”
- 在GWC Seed Form页面中进行切片设置
“Number of tasks to use”:08 “Type of operation”:Reseed – regenerate all tiles “Grid Set”:sampledata-gridset-freedo “Format”:image/png “Zoom start”:00 “Zoom stop”:06 其他项保持默认设置,完成参数设置后点击“Submit”
注:“Number of tasks to use”取决于计算机内核数;“Zoom start”与“Zoom stop”的值要在创建的切片方案分级区间内,根据实际需求设置
开始切片
多次点击“Refresh list”刷新切片状态,当显示“none”时,切片完成
预览服务
关闭GWC Seed Form页面,回到GeoServer页面,左侧菜单栏中点击“切片图层”,进入切片图层界面,找到刚刚设置好的切片“freedo-workspace:sampledata”,在预览栏下拉选择对应网格集的png预览方式
在预览界面可以显示完整的shp数据,通过滚轮缩放可以检查确认切片在不同缩放级别下的加载情况,如果有加载不完整或偏移的情况出现,需要在GeoServer中调整图层或网格集信息后重新发布
使用服务
获取服务地址
在浏览器预览页面按“F12”,并在浏览器中使用鼠标滚轮放大缩小服务预览图,在“Network”页面中查看发出的请求,选择任一有响应结果的请求,右键在新标签页中打开,并将服务地址拷贝至文本编辑器
对服务地址进行编辑,将服务地址最后的切片层级与切片行列号分别替换为{z}、{x}、{y}
至此,我们就得到了GeoServer发布的WMTS服务地址
在Explorer中加载地图服务
打开Explorer,新建工程,坐标系选择与WMTS服务数据一致的坐标系
在“设置”-“地图”-“大地图”下,选择坐标系为“本地”,服务类型为“WMTS”,输入编辑后的服务地址,勾选坐标顺序为“YX”
拖动场景即可找到已经加载的地图服务,也可以导入对应区域的3dt文件在图层树中双击定位找到地图服务