GeoServer扩展功能之发布矢量瓦片

news2024/11/25 19:20:21

目录

前言

一、矢量瓦片 VS 栅格瓦片

1、基本对比

2、适量瓦片处理步骤

二、GeoServer矢量瓦片插件配置

1、确定GeoServer版本

2、查找瓦片切片插件

3、下载 并安装插件

三、GeoServer发布矢量瓦片

1、矢量瓦片处理

2、如何进行数据预览

 总结


前言

        今天是10月1日国庆节,在这里祝愿我们伟大的祖国繁荣昌盛,经济繁荣。熟悉GIS的朋友一定知道,在gis的世界中,瓦片是日常接触非常多的一种数据。不管是栅格瓦片还是矢量瓦片。对于影像底图而言,一张一张的瓦片经过金字塔构建之后形成了以下层级逻辑明显的图片。

         电子地图瓦片主要使用两种方式,一种是传统的栅格瓦片,另外一种是新出的矢量瓦片(Vector Tiles),前者是采用四叉树金字塔模型的分级方式,将地图切割成无数大小相等的矩形栅格图片,由这些矩形栅格图片按照一定规则拼接成不同层级的地图显示。

        矢量瓦片类似栅格瓦片,是将矢量数据用多层次模型分割成矢量要素描述文件存储在服务器端,再到客户端根据指定样式进行渲染绘制地图,在单个矢量瓦片上存储着投影于一个矩形区域内的几何信息和属性信息。当客户端通过分布式网络获取矢量瓦片、地图标注字体、图标、样式文件等数据后,最终在客户端进行渲染输出地图。

​         矢量瓦片格式有GML/CesiumVectorTiles/GeoJson(.json)/TopoJSON(.topjson)/Google Protocol Buffers(PBF),其中GeoJSON是一种基于Javascript对象表示法的地理空间信息数据交换格式,通用性强,易读取,几乎所有的GIS引擎都支持该格式的动态渲染电子地图数据,但该格式还是容易有信息冗余的情况。TopoJSON是在GeoJSON上共享几何要素拓扑编码,减少冗余信息的数据格式,但它的读取性较差,支持该格式的软件不多,所有每次读取需要使用专门的工具进行转换才可以,支持该格式的软件有著名的Web三维软件Cesium JS(该产品是有AGI公司开发的一款开源三维地图的JS库,主要是可以用于时空数据领域的一些三维开发,它在github上已经有6.2K个star了,github地址如下:https://github.com/CesiumGS/cesium),PBF是一种更高效轻便的结构化数据存储格式,将矢量瓦片数据打包成矢量瓦片包可以便于网络传输和数据库存储等。

        本文将首先简单介绍矢量瓦片的基本知识,同时将矢量瓦片和栅格瓦片进行简单对比,最后以GeoServer为例,重点讲述在GeoServer中如何发布矢量瓦片,并在GeoServer中进行数据浏览展示。

一、矢量瓦片 VS 栅格瓦片

1、基本对比

        使用矢量瓦片地图来提供地图比栅格瓦片地图由更好的显示效果,互动性也强,实现二三维一体化,具有更新速度快,地图样式快速切换,占用空间少,无极缩放显示等特点。传统的栅格瓦片每一张瓦片大小在十几KB左右,但是若放到全国或世界范围内来看的,需要的瓦片数据量极大,按照四叉树金字塔切割的栅格瓦片的上一级的某张瓦片可以切割成下一级的四张瓦片,因此,瓦片的总量也是极快的增加,甚至最终所需存储空间可达TB级别。而矢量瓦片就相对小很多,以全国数据的切图来看,最终所需的切图所需存储空间也仅需要GB级别的就可以了。

2、适量瓦片处理步骤

         矢量瓦片处理基本步骤:

        ①获取矢量数据;

​         1.1、获取矢量文件(.shp/.tab等);

​         1.2、矢量数据入库形成矢量数据表格;

​         ②矢量瓦片制作;

​         2.1、获取切图范围、切图方式、切图等级等信息,确保切片后能满足使用;

​         2.2、获取多层矢量瓦片数据表;

​         2.3、将矢量瓦片文件(Geojson/Topojson/PBF等)放入到不同图层下;

​         ③服务发布与展示

​         3.1、以服务的形式将矢量瓦片发布出来,并提供给客户端;

​         3.2、客户端按照一定调用规则调用矢量瓦片服务,并按照样式文件进行前端渲染展示。

二、GeoServer矢量瓦片插件配置

        能发布矢量瓦片的技术很多,可以采用PostGis的方式生成,也可以采用OGC的GeoServer容器进行数据发布,ArcgisPro等产品都可以进行瓦片发布。大家可以根据实际需要进行选择。友情提示,本实例使用的是war包模式的GeoServer服务。

1、确定GeoServer版本

        启动本地的GeoServer服务后,在GeoServer的访问控制终端中输入请求地址打开管理界面:

         在管理主页上,输入默认的用户名和密码:admin/geoserver后进入管理页面。可以看到很多系统自带的图层数据。

 打开关于Geoserver这个超链接,可以看到本地安装的Geoserver的具体版本,如下图所示:

2、查找瓦片切片插件

        默认的GeoServer是不包含矢量瓦片切片的功能的,但是GeoServer的生态非常丰富,可以通过插件的方式进行功能扩展。矢量瓦片的生成也是一样的道理。在上面的第一步中,确定了GeoServer的具体版本为2.20.1。需要注意的是,GeoServer的各个插件和GeoServer的主版本最好对应,否则容易出现错误。

        打开GeoServer的官网下载连接,GeoServer官网链接。默认展示当前最新的可用版本。

         点击Archive Tab页,在这里可以看到GeoServer的各个历史版本,其中就包含我们这里采用的2.20.1这个版本。

3、下载 并安装插件

在Extensions中找到Vector Tiles超链接,具体如下图所示:

         点击后,自动跳转到插件下载页面。您只需将压缩包保存到本地即可。

         将刚刚下载的压缩包解压后得到以下的文件这些jar包就是生成矢量瓦片需要的依赖包,请务必确定这两包包的版本一致。

 将解压的jar包直接复制到GeoServer所在的tomcat工程的lib工程中,然后重启Tomcat即可。

三、GeoServer发布矢量瓦片

        在完成上述步骤的操作之后,即可完成在GeoServer中进行矢量瓦片的插件配置。在GeoServer的管理终端页面可以看到新插件已经可用。

1、矢量瓦片处理

        在GeoServer的图层管理界面中,在上述插件正确安装后,点击Tile Caching面板后可以看到如下,在界面中就多了三种不同的数据瓦片类型。

如需将数据进行矢量瓦片发布,可以勾选对应的瓦片类型,然后分别点击保存和应用按钮即可。

2、如何进行数据预览

         在进行数据发布之后,肯定有朋友急切的想进行数据浏览,以此证明矢量瓦片是否真的发出。在原来的图层预览界面,可以选择不同的格式进行预览,以GeoJson瓦片为例,浏览器直接将数据在界面中显示处理。

{"type":"FeatureCollection","totalFeatures":"unknown","features":[{"type":"Feature","id":"2019_province_4326.1","geometry":{"type":"Polygon","coordinates":[[[116.675274,41.040102],[116.707287,40.908709],[116.962801,40.706162],[117.508239,40.659284],[117.201562,40.498497],[117.255585,40.439039],[117.217596,40.370071],[117.400268,40.184688],[117.193428,40.067131],[116.773437,40.03334],[116.780037,39.88515],[116.939633,39.78489],[116.900652,39.676611],[116.778969,39.592282],[116.560165,39.618737],[116.396483,39.525532],[116.428672,39.44211],[116.252935,39.498931],[116.197998,39.587579],[115.904447,39.599718],[115.822645,39.505986],[115.661292,39.614384],[115.508198,39.590809],[115.486245,39.737242],[115.418355,39.773152],[115.56323,39.812757],[115.419701,39.94904],[115.447813,40.028129],[115.771414,40.176622],[115.845848,40.146944],[115.961815,40.262413],[115.764541,40.441309],[115.746649,40.534952],[115.901787,40.616094],[115.977312,40.577465],[116.115325,40.627568],[116.241502,40.790279],[116.455423,40.768117],[116.33415,40.928689],[116.467808,40.894305],[116.44923,40.978055],[116.592877,40.973234],[116.61147,41.050227],[116.675274,41.040102]]]},"geometry_name":"the_geom","properties":{"省":"北京市","省代码":110000,"类型":"直辖市"}},{"type":"Feature","id":"2019_province_4326.2","geometry":{"type":"Polygon","coordinates":[[[117.443825,40.251007],[117.558423,40.227695],[117.643187,40.090047],[117.745408,40.080642],[117.736765,40.016504],[117.787955,40.009846],[117.7755,39.965071],[117.531175,39.99623],[117.504395,39.939063],[117.533134,39.759982],[117.662827,39.66553],[117.614994,39.591206],[117.709821,39.528851],[117.761358,39.597794],[117.92395,39.57713],[117.859711,39.377372],[117.796584,39.359866],[118.059125,39.234206],[117.826453,39.171388],[117.818343,39.073132],[117.724328,39.089815],[117.83469,39.000053],[117.762777,39.050318],[117.786629,38.973629],[117.714134,38.988441],[117.878499,38.945635],[117.706493,38.985516],[117.856848,38.918785],[117.845281,38.873194],[117.683676,38.897769],[117.750909,38.873596],[117.690476,38.870723],[117.729475,38.827643],[117.595903,38.812011],[117.60884,38.714544],[117.719926,38.752308],[117.719316,38.664655],[117.578686,38.673923],[117.602154,38.617015],[117.247005,38.555494],[117.2235,38.64207],[117.091855,38.586009],[117.039279,38.704925],[116.871553,38.680103],[116.861938,38.745584],[116.738731,38.751773],[116.702425,38.929809],[116.750422,39.049358],[116.920269,39.118798],[116.85764,39.1534],[116.883665,39.322276],[116.812188,39.372453],[116.869938,39.433506],[116.779519,39.466073],[116.793851,39.602813],[116.914096,39.705739],[116.970783,39.635152],[117.166338,39.635161],[117.147214,39.734954],[117.199567,39.762624],[117.149946,39.816049],[117.250927,39.828825],[117.147238,39.879308],[117.175338,40.057854],[117.443825,40.251007]]]}}]}

 使用上面这种方式进行数据浏览,不方便,也不满足gis的可视化需求,需要进行地图可视化。

点击GeoServer管理界面中的左侧切片图层菜单

 然后选择需要预览的矢量瓦片数据,以GeoJson的瓦片为例:

 下面切换使用mvt格式的矢量瓦片,效果是一样的。

 总结

        以上就是本文的主要内容,在实际项目部署时还会碰到其它的问题,后面会专门写博客进行介绍。本文将首先简单介绍矢量瓦片的基本知识,同时将矢量瓦片和栅格瓦片进行简单对比,最后以GeoServer为例,重点讲述在GeoServer中如何发布矢量瓦片,并在GeoServer中进行数据浏览展示。行文仓促,有不当之处,欢迎留言批评交流。

参考资料:

1、聊一聊矢量瓦片的常识。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1053598.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

常用数学分布

正态分布(高斯分布) 若随机变数 X X X 服从一个期望 μ \mu μ,标准差 的正态分布 σ \sigma σ,则记为 X ≈ N ( μ , σ 2 ) X \approx N(\mu,\sigma^2) X≈N(μ,σ2),其密度函数为: f ( x ) 1 σ …

JAVA 获得特定格式时间

0 背景 我们有时要获取时间,年月日时分秒周几,有时要以特定的格式出现。这时就要借助 SimpleDateFormat 或者 DateTimeFormatter。有时要某个月份有多少天需要借助 Calendar。所以有必要了解一些知识。 1 SimpleDateFormat simpledateFormat 线程不安全…

侯捷 C++ STL标准库和泛型编程 —— 4 分配器 + 5 迭代器

4 分配器 4.1 测试 分配器都是与容器共同使用的&#xff0c;一般分配器参数用默认值即可 list<string, allocator<string>> c1;不建议直接用分配器分配空间&#xff0c;因为其需要在释放内存时也要指明大小 int* p; p allocator<int>().allocate(512,…

图像处理: ImageKit.NET 3.0.10704 Crack

关于 ImageKit.NET3 100% 原生 .NET 图像处理组件。 ImageKit.NET 可让您快速轻松地向 .NET 应用程序添加图像处理功能。从 TWAIN 扫描仪和数码相机检索图像&#xff1b;加载和保存多种格式的图像文件&#xff1b;对图像应用图像滤镜和变换&#xff1b;在显示屏、平移窗口或缩略…

【大家的项目】通用规则引擎——Rush(一)可以自定义的规则引擎,告别发版,快速配置...

前言 很长一段时间在搞过增长和促销的事情&#xff0c;在实现各种活动和玩法时非常心累。每个新的玩法&#xff0c;都需要填一点代码&#xff0c;每次改动都需要走流水线发一次版&#xff0c;烦躁且痛苦。 对于这种&#xff0c;输入不确定&#xff0c;过程不确定&#xff0c;结…

uni-app:官方文档中的canvas实例剖析

效果 代码 <template><view><!-- 创建了一个宽度为300像素&#xff0c;高度为200像素的canvas元素。canvas-id属性被设置为"firstCanvas"&#xff0c;可以用来在JavaScript中获取该canvas元素的上下文对象。 --><canvas style"width: 30…

【python海洋专题三】图像修饰之画布和坐标轴

【python海洋专题三】图像修饰之画布和坐标轴 海洋与大气科学 上期读取nc水深文件&#xff0c;并出图 但是存在一些不完美&#xff0c;本期修饰 本期内容目录 1&#xff1a;改变画布大小 2&#xff1a;改变画布背景色 3&#xff1a;改变画布在显示屏中的显示位置 4&#xf…

建筑能源管理(3)——建筑能源监管

为了全面落实科学发展观&#xff0c;提高建筑能源管理水平&#xff0c;进一步降低能源和水资源消耗、合理利用资源&#xff0c;以政府办公建筑和大型公共建筑的运行节能管理为突破口&#xff0c;建立了既有政府办公建筑和大型公共建筑运行节能监管体系&#xff0c;旨在提高政府…

[python 刷题] 刷题常用函数

[python 刷题] 刷题常用函数 最近直到未来一段时间之内应该都会用 python 刷题了&#xff0c;所以记一下碰到的还蛮好用的方法 按照分区实现&#xff0c;基本上刷一个类型的题&#xff0c;了解一些常用函数&#xff0c;就更新一下 这里假设你对编程语言有一定的了解&#xf…

Python海洋专题七之Cartopy画地形水深图的陆地填充

Python海洋专题七之Cartopy画地形水深图的陆地填充 第一期图 本期&#xff1a; 上期 Cartopy画地形水深图 但是陆地没有填充 如图 本期内容 陆地填充 如图&#xff1a; 详细过程如下 1&#xff1a;陆地填充 land feature.NaturalEarthFeature(‘physical’, ‘land’…

如何在Qt6中引入Network模块

2023年10月1日&#xff0c;周日凌晨 如果用的是CMake find_package(Qt6 COMPONENTS Network REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Network) 但在实际使用中&#xff0c;我发现有以下几点要注意&#xff1a; 1、要把“mytarget”换成项目名称 2、要去掉…

指针巩固习题

1.该程序输出的结果为 #include<stdio.h> int main() {int arr[]{1,2,3,4,5};short *p(short*)arr;//转化类型int i0;for(i0;i<4;i){*(pi)0;//short型指针1跳过两个字节}for(i0;i<5;i){printf("%d",arr[i]);}return 0;} 2.程序的输出结果为 #include&…

oracle-使用PLSQL工具自行修改用户密码

1、使用PLSQL工具&#xff0c;输入用户名和原密码登录&#xff0c;如下图 2、登录后&#xff0c;在会话下拉菜单中找到”Change password..” 3、在跳出的窗口中配置新密码&#xff0c;修改完成后单击”确认”&#xff0c;后退出PLSQL 4、重新打开PLSQL&#xff0c;使用新密码登…

1. windows安装elasticSearch

目录 1. 下载 2. 安装和启动 1. 下载 下载地址&#xff1a;https://elasticsearch.cn/download/ 下载7.8.0版本&#xff1a; 下载后的elasticsearch-7.8.0-windows-x86_64.zip文件放在本地合适的位置。 2. 安装和启动 解压elasticsearch-7.8.0-windows-x86_64.zip文件&…

蜂蜜配送销售商城小程序的作用是什么

蜂蜜是农产品中重要的一个类目&#xff0c;其受众之广市场需求量大&#xff0c;但由于非人人必需品&#xff0c;因此传统线下门店经营也面临着痛点&#xff0c;线上入驻平台也有很多限制难以打造自有品牌&#xff0c;无法管理销售商品及会员、营销等&#xff0c;缺少自营渠道&a…

DirectX12_Windows_GameDevelop_1:向量代数

引言 向量在计算机图形学、碰撞检测和物理模拟中扮演者关键的角色。因此在游戏开发之前我们必须先了解向量。本章研究向量的使用。 一、向量 如果你对数学中的向量不太熟悉&#xff0c;建议阅读《3D数学基础&#xff1a;图形和游戏开发 第2版》&#xff0c;如果你需要某些PD…

敏感性分析一览

敏感性分析 SobolMorrisFourier Amplitude Sensitivity Test (FAST)Random Balance Designs - Fourier Amplitude Sensitivity Test (RBD-FAST)Delta Moment-Independent MeasureDerivative-based Global Sensitivity Measure (DGSM)Fractional Factorial Sensitivity Analysis…

Flutter笔记:滚动之-无限滚动与动态加载的实现(GetX简单状态管理版)

Flutter笔记 无限滚动与动态加载的实现&#xff08;GeX简单状态管理版&#xff09; 作者&#xff1a;李俊才 &#xff08;jcLee95&#xff09;&#xff1a;https://blog.csdn.net/qq_28550263 邮箱 &#xff1a;291148484163.com 本文地址&#xff1a;https://blog.csdn.net/qq…

Spring Framework 学习笔记5:事务

Spring Framework 学习笔记5&#xff1a;事务 1.快速入门 1.1.准备工作 这里提供一个示例项目 transaction-demo&#xff0c;这个项目包含 Spring 框架、MyBatis 以及 JUnit。 对应的表结构见 bank.sql。 服务层有一个方法可以用于在不同的账户间进行转账&#xff1a; Se…

云原生Kubernetes:对外服务之 Ingress

目录 一、理论 1.Ingress 2.部署 nginx-ingress-controller(第一种方式) 3.部署 nginx-ingress-controller(第二种方式) 二、实验 1.部署 nginx-ingress-controller(第一种方式) 2.部署 nginx-ingress-controller(第二种方式) 三、问题 1.启动 nginx-ingress-controll…