GeoServer 多层级地图发布流程

  • 事情起因
  • 准备工作
  • 地图发布
  • 本地加载
  • 结束语
事情起因

最近参与了一个是以地图为主的项目(见下图)。

其中有个功能是框选截图功能,功能是比较简单。结合html2canvas和地图自身的画矩形工具很快就实现了截图功能。但是发现加载在线第三方的地图底图资源(智图)存在不允许跨域的问题。载图完成后图片没有底图。所以就打算本地发布瓦片底图,解决跨域的问题同时为后期发布自定义底图做准备。

准备工作
  1. 服务选择: 因为之前接触过ArcServer的地图发布服务和ArcGis前端组件。本项目中对地图服务的要求并不高,只是单纯的用来发布瓦片底图。同时项目中的地图前端组件库选用的是Leaflet开源组件。所以决定用同样开源的GoeServer服务来发布地图。
  2. 下载安装:GeoServer下载地址。选择 “Production”版本下对应平台的安装包。安装流程本文就不讲了,请自行搜索(GeoServer运行需要java环境)。
  3. 登录GeoServer: 在地址中输入 http://localhost:你的端口号/geoserver/web/,输入帐号:admin,密码:geoserver。登录成功后跳转到(如下图所示页面)后,GeoServer的准备工作就完成了。接下来我们去准备发布地图所用的资源文件。
  4. 地图文件下载器:网上有很比如:水经注万能下载器、太乐地图下载器、LVS地图下载器(免费)、BIGEMAP下载器等等,基本功能和能下载的底图资源都差不太多。本文使用的是太乐地图下载器,选择了Arcgis暖色图[0-7]级来作为本次地图发布的底图。

由于用的是标准版下载器(不花钱),所以只能先下载成库文件,再通过下载器转成tif文件。下图中的LXX.tif就是GeoServer发布地图要使用的资源文件。到此我们的地图发布的准备工作就完成了。接下来进入到本文的重点:地图发布

地图发布

以上地图发布的准备工作就做完了。接下来我们开始发布地图,发布地图的几个流程大致如下:创建工作区——>数据存储——>创建图层——>发布地图——>地图切片——>切片合并,一共六个步骤。

  1. 创建工作区:
    选择数据中的:工作区–>新建工作区–>命名–>URI–>开启需要的服务

  2. 数据存储:
    选择数据中的:数据存储–>添加新的数据存储–>栅格数据源:GeoTIFF–>工作区:blue–>数据源名称:最好和tif文件相同,方便后期管理 -->连接参数:下载到本地的LXX.tif文件这里先选择L00.tif。


  3. 创建图层:
    选择数据中的:图层–>添加新的资源–>添加图层:blue:blue_00–>发布

  4. 发布地图:
    发布图层中:坐标参考系统–>定义SRS:选择和要发布的地图一致的坐标系,本文选择的是EPSG:3857。–>边框:Compute from SRS bounds。一定要重新计下边界–>保存:图层发布完成

  5. 地图切片:
    Tile Caching中:Tile Layers–>Seed/Truncate–>Grid set: 选择的图层一致的坐标系–>Format: image/png–>Zoom start: 当前图层一致:00–>Zoom stop: 当前图层一致:00–>Submit


当 List 中的切片进程完成后。在GeoServer\2.13.1\data_dir\gwc\blue_L00\EPSG_3857_00\0_0目录下,可以看到已经切片好的底图。

  1. 切片合并:
    现在把2、3、4、5步骤重复几次,把余下的1-7级地图tif文件都发布并切片。把切好的瓦片图都复制到gwc\blue_L00目录下(如下图)。这样我们在访问blue:blue00时就可以加载出0-7级的所有层级的地图。
本地加载
  1. 加载WMS服务:现在我们来测试下地图是否发布成功,本文使用的是Leaflet地图组件库V1.6.0版本。代码如下:
 const map = L.map('map',{center: [36.00, 120.00],zoom:5,minZoom:1,maxZoom:7,crs:L.CRS.EPSG3857                                    // 这里要和发布的地图CRS保持一致 })const wms = L.titleLayer.WMS('http://localhost:9000/geoserver/gwc/service/wms?',   // 本地发布地图的WMS服务地址{ layer:'blue:L00',                                  // 图层名称必须和发布的图层名一致format: 'image/png',                                // 地图切片的格式transparent: true,                            }).addTo(map)


嗯。本地加载成功,并可以在0-7级之间进行缩放。

  1. 跨域:地图发布完成了。现在只是前端可以正常加载,但进行截图时还是会存在不允许跨域的问题,所以还要对GeoServer的web.xml文件做如下的修改:

    把上图中两处位置代码的注释放开。即允许跨域的访问地图。

  2. 截图:接下来我们截图测试下看看效果

OK。在前端跨域访问的情况下。截图后是有地图底图的,到此为止我们的目标就完成了。至于底图的加载速度嘛,比第三方是要快那么一点点。

结束语

通过GeoServer来发布多层级地图的流程就基本完成了。一些进阶的应用比如:瓦片图的缓存GeoWebCache等内容等有空再写。

感谢您的阅读,希望本文对您有所帮助。 —— chysxslt

GeoServer 多级地图发布流程相关推荐

  1. 统一gis平台地图服务发布流程及使用

    统一gis平台地图服务发布流程及使用 背景:项目里需要使用第三方提供的地图网格数据进行展示,我们需要将这些网格数据通过统一gis平台发布以供前端使用.第三方提供的数据为shx.shp.dbf文件 服务 ...

  2. geoserver发布瓦片数据_geoserver地图发布服务教程(3)——快速配置矢量样式

    又是忙碌的一个星期,总算有时间来继续填这个坑了.今天就把样式发布搞定了! 通常地图发布之后,要配置样式,来让矢量更好更美的展现出来.geoserver就是通过过style样式的来控制地理空间数据的外观 ...

  3. geoserver地图发布服务教程---4.使用udig获取sld样式

    上一篇也说了,样式主要还是考sld代码来实现的,但是学习代码是需要时间成本滴,那么不想学或者来不及去学习sld语法的同学们,这里就有现成的软件推荐给大家,来实现现成的代码咯.其实qigs和arcgis ...

  4. 开源地图服务器 网站,开源WebGIS:地图发布与地图服务

    开源WebGIS:地图发布与地图服务 语音 编辑 锁定 讨论 上传视频 上传视频 本词条缺少信息栏.概述图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! <开源WebGIS:地图发布与 ...

  5. cesium 3dtiles 加载本地数据_cesium结合geoserver实现地图空间查询(附源码下载)

    前言 cesium 官网的api文档介绍地址cesium官网api,里面详细的介绍 cesium 各个类的介绍,还有就是在线例子:cesium 官网在线例子,这个也是学习 cesium 的好素材. 内 ...

  6. 高德地图 街道范围_高德地图发布交通“评诊治”系统:针对各类交通拥堵场景“因地制宜”...

    中新网11月10日电 11月9日,由中国公路学会和高德地图联合举办的2020世界交通运输大会 "新基建新动能"主题论坛上,高德地图发布交通"评诊治"分析系统,可 ...

  7. aspx 修改了样式但是在点击按钮后被刷新_geoserver地图发布服务教程---4.使用udig获取sld样式...

    上一篇也说了,样式主要还是考sld代码来实现的,但是学习代码是需要时间成本滴,那么不想学或者来不及去学习sld语法的同学们,这里就有现成的软件推荐给大家,来实现现成的代码咯.其实qigs和arcgis ...

  8. 提高微信小程序的应用速度的常见方式有哪些? 小程序怎么实现下拉刷新? 简述微信小程序原理? 小程序的发布流程(开发流程)分析下微信小程序的优劣势?小程序授权登录流程? 小程序支付如何实现

    小程序部分常见面试题 提高微信小程序的应用速度的常见方式有哪些? 提高页面加载速度 用户行为预测 减少默认data的大小 组件化方案 分包预下载 小程序与原生App相比优缺点? 优点: 基于微信平台开 ...

  9. 超图平台倾斜摄影发布流程

    超图平台倾斜摄影发布流程 1.前言 下文介绍了倾斜摄影数据在超图平台生成配置文件,利用配置文件将倾斜摄影从OSGB格式转成S3M格式,最终将S3M格式发布成iserver服务的详细流程.倾斜摄影OSG ...

最新文章

  1. 使用Innobackupex快速搭建(修复)MySQL主从架构
  2. DL之DNN:基于神经网络(从1层~50层)DNN算法实现对非线性数据集点进行绘制决策边界
  3. Serverless 实战 —— Funcraft OSS ROS 进行 CI/CD
  4. ie对java的设置字体_关于IE6幽灵字体 - JavaSwing的个人空间 - OSCHINA - 中文开源技术交流社区...
  5. C语言文件操作 fopen, fclose, mkdir(打开关闭文件,建文件夹,判断文件是否存在可读或可写)
  6. 日跑几十万作业,唯品会HDFS是如何优化的
  7. .NET Core 在中国的现状调研
  8. #if defined 和 #if ! defined 的用法
  9. 剑指 Offer 68 - II. (二叉树)二叉树的最近公共祖先
  10. 用户需求源源不断,阿里云网络创新不止
  11. AAA验证和ciscorescue v4.2 验证服务器的搭建(telnet方式和级别的设置)
  12. java 线程缓存_Java 实现缓存,一个线程存,一个线程取
  13. 数据库原理—常用的DBS产品简介(六)
  14. eclipse关联KEmulator模拟器开发J2ME游戏
  15. BS7799信息安全管理体系介绍(转载)
  16. NRF24L01入门总结
  17. 第四周作业-多线程编程
  18. Maya: 菜单 曲面 双轨成形双轨成形2工具
  19. PTA三天打渔、两天晒网 - 简单的循环程序
  20. 【数据结构基础_有[*pHead]和[*pEnd]的单向链表_(C语言实现)】

热门文章

  1. MAC 反编译安卓问题汇总
  2. js扫描二维码并跳转
  3. desktop引用了一个不可用的位置
  4. 三菱PLC曝出严重漏洞,面临黑客远程攻击
  5. lcd12864使用c语言pic单片机,PIC单片机+LCD12864显示汉字程序
  6. java视频点播系统_jsp教学视频点播系统
  7. 韦东山嵌入式第一期学习笔记DAY_2——6_2_使用eop烧写裸板程序
  8. 完整!贪吃蛇游戏c语言代码分享(包括界面,计数,提示)
  9. 阿哈c语言第66页五个错误,啊哈C语言!逻辑的挑战(修订版)
  10. 浅谈oracle树状结构层级查询测试数据