文章目录

  • 前言
  • Geoserver 安装
    • 前期工作
      • JDK的安装
      • 安装 GeoServer
  • GeoServer 的使用
    • 进入 GeoServer 界面
    • 使用 GeoServer 发布矢量切片离线地图
  • 使用 Mapbox-GL 调用离线矢量切片地图
    • 【踩坑总结】
      • 【踩到的第一个坑】跨域问题—报错:有CORS的错误提示
      • 【踩到的第二个坑】无法预览Pbf

前言

我们实验室最近需要做一个地图可视化的系统,因此涉及到使用 GeoServer + maobox-gl 搭建离线地图服务,但是我以前未接触过这部分,在搭建服务的过程中遇到了太多的坑。网络上教程千篇一律,很多步骤都是一笔带过,所以从零开始的我一路上磕磕碰碰,很多问题遇到了但是在网上根本找不到解决方案,只能自己慢慢摸索,在试错上花费了大量的时间,因此想通过此博客给以后有需要的同学一些帮助,避开我遇到的坑,并且成功搭建好离线地图服务!


Geoserver 安装

前期工作

JDK的安装

GeoServer 是基于 Java 的软件,所以运行时需要 JDK 的支持,(PS:我使用的 GeoServer 是2.13版本的,所以得下载 JDK8(Java SE 8u201),如果你要用其他版本的 GeoServer,你需要下载该版本对应的 JDK 版本。

Oracle 官网上下载 JDK8 即可 JDK8下载链接

安装 GeoServer

访问 GeoServer 官方网站:点击进入官方下载页面
点进去之后直接下载的是最新的版本,要下以前的旧版本点击 Archived 就能看到。


选择好你要下载的版本,我是用的是 Windows Installer进行安装,记得顺便把下面对应的矢量切片插件Vector Tiles下载好,后面要用(没有矢量切片插件是不能发布矢量切片地图的)!

下载好安装文件之后双击安装文件,这里是选择 GeoServer 的安装路径,然后一路 next 到下一页面

到这个页面,选择你已安装的 JDK 或 JRE 的路径

下一步是设置用户名和密码,默认使用用户名“admin”和密码“geoserver” 选择默认目录和端口8080。注意,如果本机默认安装了Tomcat服务器,GeoServer的端口号不要设置成默认的8080,避免与Tomcat的端口号冲突,造成不必要的麻烦。(PS: 可以设置为8001)

完成设置,最后点击Install进行安装。


GeoServer 的使用

进入 GeoServer 界面

在进入 GeoServer 前需要开启 GeoServer服务,点击Start GeoServer 然后会出现一个命令行界面,注意使用GeoServer 作为 WMS 服务器期间,不要关闭此窗口

开启 GeoServer 服务后,回到上面的开始菜单栏点击 GeoServer Web Admin Page 就能进入 GeoServer, 之后输入前面安装时设置的账号和密码就能成功进入GeoServer 界面。

使用 GeoServer 发布矢量切片离线地图

要使用 GeoServer 发布矢量切片离线地图,首先你需要将刚才下载好的矢量瓦片插件压缩包里的内容放进 GeoServer 安装路径下的 ./WEB-INF/lib 里面。

然后准备好你的图层数据,可以是单独的shp文件,也可以是多个,或者是连接 PostSQL 的数据,这里仅演示单个shp的发布。

1. 首先添加新的工作区,Name 和 命名空间URL 最好一致,勾选默认工作区

2. 完成第一步后向工作区中添加新的数据存储

数据存储如果是多个图层就选择第一个红框,单个shp就选择第二个框框


然后数据源名称我一般和工作区一致,连接参数是指你的数据所在位置,字符集如果有中文的话选择GBK 或者 UTF-8

然后就可以开始图层的发布了

3. 图层的发布,根据你的 shp 的坐标参考系进行设置,按顺序设置完之后,点击该页面上方的 Tile Caching,进行下一步设置


这里需要勾选 application/vnd.mapbox-vector-tile 才能发布矢量切片地图,勾选后点击提交即可

4. 成功发布之后下一步点击左边栏Tile Caching 选择 Tile Layers 找到刚才自己发布的图层,点击Seed/Truncate

点击之后跳转到该页面进行切图到本地的设置,任务数量自选,Format 要选择红框内容,点击两次 submit,便完成切图。
之后返回到 Tile Layers 的那个页面点击 Select Onepbf格式对图层进行预览

离线矢量切片地图的发布到这里就结束了,下一步是使用 Mapbox-GL 调用地图并进行渲染。


使用 Mapbox-GL 调用离线矢量切片地图

Mapbox GL JS 是一个 JavaScript 库,它使用 WebGL,以 vector tilesMapbox styles 为来源,将它们渲染成互动式地图。它是 Mapbox GL 生态系统的一部分,其中还包括 Mapbox Mobile,它是一个用 C++ 编写的兼容桌面和移动平台的渲染引擎。

PS: 你或许会需要在 MapBox 注册并申请一个 Access Token
申请Acess Taken

详情可参考MapBox调用GeoServer发布的矢量瓦片服务WMTS、TMS
这里主要讲一下 MapBox 调用 TMS 服务的代码:
MapBox API 是在线引用的 可参考官方文档

<head><meta charset='utf-8'/><title>mapbox添加geoserver发布的矢量瓦片</title><meta name='viewport' content='initial-scale=1,maximum-scale=1,user-scalable=no'/><script src='https://api.tiles.mapbox.com/mapbox-gl-js/v1.1.1/mapbox-gl.js'></script><link href='https://api.tiles.mapbox.com/mapbox-gl-js/v1.1.1/mapbox-gl.css' rel='stylesheet'/><style>body { margin:0; padding:0; }#map { position:absolute; top:0; bottom:0; width:100%; }</style>
</head>

后面这部分是地图的调用,需要注意的是

mapboxgl.accessToken = 'pk.eyJ1Ijoibmlja3p4dyIsImEiOiJja3hlYXI3NDQxYjhmMnVtZnRveTlxZGwwIn0.0Ude29mpR0-A0Z2Xf3PD2A';var map = new mapboxgl.Map({container: 'map',style: 'mapbox://styles/mapbox/light-v10',zoom: 12,// 图层的中心点center: [113.1553,23.0632]
});map.on('load', function() {map.addLayer({"id": "building_a","type": "fill","source": {"type": "vector",// TMS 调用需要加上这行"scheme":"tms",// URL 是 GeoServer 中 TMS 的服务链接,选择墨卡托投影的那个我这里是900913// "tiles": ["URL/{z}/{x}/{y}.pbf"],"tiles": ["http://localhost:8080/geoserver/gwc/service/tms/1.0.0/OSM%3Abuilding_a@EPSG%3A900913@pbf/{z}/{x}/{y}.pbf"],},// source-layer 是你 Geoserver 图层的名称即 上面 URL 的 title"source-layer": "building_a","paint": {"fill-color":"#088","fill-opacity":0.8}});
});

调用成功之后预览是这个样子滴!


到这里Geoserver + mapbox-gl 搭建离线矢量切片地图服务就告一段落了,后面就是使用 JS 对地图各个图层进行渲染,具体可参考官方文档。有问题欢迎大家评论区交流!


【踩坑总结】

【踩到的第一个坑】跨域问题—报错:有CORS的错误提示

跨域问题的解决参考,GeoServer解决跨域问题 (CORS)亲测有用

【踩到的第二个坑】无法预览Pbf

解决方案:
GeoServer 的安装我是使用是2.13的版本,我一开始使用的是2.20版本,然后我在发布服务之后遇到了pbf格式文件无法预览的问题(我暂时还没找到问题出在哪里,有知道的伙伴可以在评论说一声),所以我卸载了2.20版本装了个2.13版本。

【GeoServer + MapBox-GL 搭建离线矢量切片地图服务】多图详细流程 + 踩过的坑总结相关推荐

  1. 开源方案搭建可离线的精美矢量切片地图服务-3.Mapbox个性化地图定制入门

    系列文章目录 开源方案搭建可离线的精美矢量切片地图服务-1.开篇(附成果演示地址) 开源方案搭建可离线的精美矢量切片地图服务-2.PostGIS+GeoServer矢量切片 开源方案搭建可离线的精美矢 ...

  2. 开源方案搭建可离线的精美矢量切片地图服务-5.Mapbox离线项目实现

    系列文章目录 开源方案搭建可离线的精美矢量切片地图服务-1.开篇(附成果演示地址) 开源方案搭建可离线的精美矢量切片地图服务-2.PostGIS+GeoServer矢量切片 开源方案搭建可离线的精美矢 ...

  3. 开源方案搭建可离线的精美矢量切片地图服务-6.Mapbox之.pbf字体库

    系列文章目录 开源方案搭建可离线的精美矢量切片地图服务-1.开篇(附成果演示地址) 开源方案搭建可离线的精美矢量切片地图服务-2.PostGIS+GeoServer矢量切片 开源方案搭建可离线的精美矢 ...

  4. 开源方案搭建可离线的精美矢量切片地图服务-1.开篇(附成果演示地址)

    系列文章目录 开源方案搭建可离线的精美矢量切片地图服务-1.开篇(附成果演示地址) 开源方案搭建可离线的精美矢量切片地图服务-2.PostGIS+GeoServer矢量切片 开源方案搭建可离线的精美矢 ...

  5. 开源方案搭建可离线的精美矢量切片地图服务-7.Arcgis Pro企业级应用

    系列文章目录 开源方案搭建可离线的精美矢量切片地图服务-1.开篇(附成果演示地址) 开源方案搭建可离线的精美矢量切片地图服务-2.PostGIS+GeoServer矢量切片 开源方案搭建可离线的精美矢 ...

  6. 基于mapbox搭建可离线的矢量切片地图服务-3.Mapbox个性化地图定制入门

    作者:ATtuing 出处:http://www.cnblogs.com/ATtuing 最近在做关于mapbox的项目,看到这篇文章感觉特别好,特此转载记录一下. 先不说废话直接上地址:(所有东西都 ...

  7. 基于mapbox搭建可离线的矢量切片地图服务-1.开篇(附成果演示地址)

    作者:ATtuing 出处:http://www.cnblogs.com/ATtuing 最近在做关于mapbox的项目,看到这篇文章感觉特别好,特此转载记录一下. 先不说废话直接上地址:(所有东西都 ...

  8. Mapbox加载天地图CGCS2000矢量瓦片地图服务

    1.背景 最近在做天地图的项目,要基于MapBox添加CGCS2000矢量切片数据,但是 Mapbox 只支持web 墨卡托(3857)坐标系的数据.Github有专业用户修改了mapbox-gl的相 ...

  9. geoserver 3_使用GeoServer 和 mapbox-gl 搭建离线地图服务

    视频体验 知乎视频​www.zhihu.com 软件与数据 mapbox-gl 安装: https://www.npmjs.com/package/mapbox-gl​www.npmjs.com ma ...

最新文章

  1. 公钥与私钥,HTTPS详解
  2. 「翻译」SAP零售预测和补货–简要概述
  3. 一切都是问题,一切都着落在自身
  4. Harmony OS — Text文本框
  5. mysql必要的监控项目--转自土豆大神的博客
  6. linux ac 命令
  7. 上海科技大学计算机研究生调剂,2021年上海科技大学考研招生调剂信息
  8. BERT4Rec:知道用户的播放(购买、点击、...)序列 item1, item2, item3,预测下一个播放的item问题。
  9. 针式PKM与众不同的地方
  10. 新手linux安装vasp_史上最简单的VASP安装教程-非虚拟机
  11. 华为认证的考试费用和重认证
  12. Vue_理解组件化开发
  13. 中国协同工作空间管理软件行业市场供需与战略研究报告
  14. 修复Windows 7升级Windows 10后Japanese输入法无法使用的Bug
  15. SMAA算法详解 - SMAASearchYUp(Down)
  16. 超有爱的并查集 6666
  17. 为什么手机收不到验证码,怎么处理?
  18. 基于上下文的业务流建模法(三)
  19. word目录编号自动更新排版技巧
  20. ubuntu保存退出

热门文章

  1. 一战成硕之双非二本科班考上中科大软院
  2. HTTP protocal
  3. 一个比印象笔记还好用的软件,引发的薅羊毛教程
  4. typedef __packed struct (结构体字节对齐)(转)
  5. VPS主机的优势和劣势体现在哪里
  6. Qt入门------数据库操作
  7. 新出炉的 100 篇技术热文,在微信热传,别错过
  8. 计算机控制技术王超,王超 研究生副院长
  9. 二叉树序列化/反序列化
  10. Linux中网络连接不上,CentOS7.6网络连接激活失败