Gis开发入门,OpenLayers、Leaflet、Maplibre-gl、Cesiumjs地图引擎介绍以及几种地图服务vms、vmts介绍
1、四大前端地图库介绍
OpenLayers、Leaflet、Maplibre-gl和Cesiumjs(3d)
OpenLayers、Leaflet、Maplibre-gl和Cesium简单介绍
- OpenLayers 对各种地图服务支持较好,比如各种vms,vmts等。OpenLayers性能好,可以支持超大数据量点位叠加,超过百万数据量点位只能用OpenLayers,动态效果较差,动态效果实现完全看个人技术沉淀。
- Leaflet 对vue支持较好,与前端交互方便,对地图服务支持不好,性能较差,点位超过两三千就会变卡
- Maplibre-gl:继承自Mapbox-2d的开源分支,Mapbox商业化后Maplibre-gl项目从Mapbox-2d的开源分支开始继续维护更新,号称地图服务中动态效果最好的库,插件较多,个人感觉像是地图引擎里的游戏引擎,各种动态效果极好。(注:国内supermap等地图引擎也都基于Mapbox-2d开源分支开发而来。)
- Cesiumjs 开源的三维地图引擎,主要是面向BIM(注:国内supermap-3d等地图引擎也都基于开源Cesiumjs修改而来。)
上面会有一些gis专有名词,下面介绍一下gis中常见的一些概念。
在开始地图服务介绍前先了解一下OGC。
2、OGC
OGC 全称是开放地理空间信息联盟(Open Geospatial Consortium),是一个非盈利的国际标准组织,它制定了数据和服务的一系列标准,GIS厂商按照这个标准进行开发可保证空间数据的互操作,致力于提供地理信息行业软件和数据及服务的标准化工作。
3、几种地图服务介绍
WMS(Web Map Service)
网络地图服务,它是利用具有地理空间位置信息的数据制作地图,其中将地图定义为地理数据的可视化表现,能够根据用户的请求,返回相应的地图,包括PNG、GIF、JPEG等栅格形式,或者SVG或者WEB CGM等矢量形式。WMS支持HTTP协议,所支持的操作是由URL决定的。
个人理解WMS动态地图服务,在ArcGIS中我们经常利用理由的mxd文件发布的服务,就是这种地图服务,如果你的数据会变化,建议发这种服务。这种服务优点是动态,缺点是慢。
WMS服务提供的功能:
GetCapabitities:返回服务级元数据,它是对服务信息内容和要求参数的一种描述。
GetMap:返回一个地图影像,其地理空间参考和大小参数是明确定义了的。
GetFeatureInfo:返回显示在地图上的某些特殊要素的信息。
GetLegendGraphic:返回地图的图例信息。
WMS-C(Web Mapping Service – Cached)
对它完整的定义来源于OSGeo Wiki,2006年在FOSS4G会议上提出讨论,目的在于提供一种预先缓存数据的方法,以提升地图请求的速度,自始至终该标准都没有写入OGC之中。
可以理解为WMS的升级版,预先缓存瓦片,按需请求,提高了访问的速度。
TMS(tile map Servcie)
TMS图层(Tile Map Service Layer)是一种用于显示地图数据的图层类型。它基于瓦片(Tile)的概念,将地图数据切割成小块瓦片,并以金字塔形式组织在服务器上。在使用TMS图层时,地图客户端通过请求服务器获取需要显示的瓦片,然后将这些瓦片拼接在一起形成完整的地图。
TMS图层提供了一种灵活、快速的方式来加载和显示地图数据。瓦片的切割和缓存使得只需加载和显示当前视窗范围内的瓦片,从而提高了地图显示的性能。此外,使用TMS图层可以方便地支持多个不同的投影和坐标系。
TMS图层常用于地图应用程序和地理信息系统(GIS)中,用于显示各种类型的地图数据,如街道地图、卫星影像、地形图等。许多地图供应商和开源地图库都支持TMS图层,使得开发人员能够轻松地集成和显示各种地图数据。
XYZ
XYZ图层是一种常见的地图瓦片切割方案,也被称为Slippy Map的标准。它是由Google Maps引入,并广泛应用于许多地图应用程序和地理信息系统中。
在XYZ图层中,地图数据被切割成小块的瓦片,每个瓦片都具有唯一的行列编号以及对应的缩放级别。XYZ图层的瓦片编号方式通常为(列,行,缩放级别),其中列和行从左上角开始逐渐增加,缩放级别通常从0级开始逐渐增加。
具体地,XYZ图层的特点包括:
瓦片编号方式:XYZ图层使用(列,行,缩放级别)的瓦片编号方式。列和行的编号都从左上角开始,列从左到右逐渐增加,行从上到下逐渐增加。缩放级别从最小级别(通常为0级)开始逐渐增加,表示地图数据的精细程度增加。
坐标系:XYZ图层通常使用Web墨卡托投影(Web Mercator Projection)作为默认的坐标系。这是一种二维平面坐标系,适用于在Web上显示地图数据。
数据加载:地图客户端通常通过发出URL请求来获取所需的瓦片数据。URL中的占位符会被具体的行、列和缩放级别值替换,以便获取相应的瓦片数据。
XYZ图层已经成为开发地图应用的常用标准,许多地图库和地图供应商都支持XYZ图层,使得开发人员可以轻松地集成和显示各种类型的地图数据,例如街道地图、卫星影像、地形图等。
XYZ和TMS区别
TMS图层(Tile Map Service Layer)和XYZ图层是两种常见的地图瓦片切割方案,它们均用于在地图应用中加载和显示地图数据,但存在一些区别。
TMS图层:
瓦片编号方式:TMS图层使用(列,行,缩放级别)的瓦片编号方式,其中列和行从左上角开始递增,缩放级别从最大级别开始递减。
行列编号方向:行和列的编号都从左上角开始,行从上到下递增,列从左到右递增。
缩放级别:缩放级别从最大级别(通常为0级)开始递增,表示地图数据的精细程度降低。
XYZ图层:
瓦片编号方式:XYZ图层使用(列,行,缩放级别)的瓦片编号方式,其中列和行从左上角开始递增,缩放级别从最小级别(通常为0级)开始递增。
行列编号方向:行和列的编号都从左上角开始,行从上到下递增,列从左到右递增。
缩放级别:缩放级别从最小级别(通常为0级)开始递增,表示地图数据的精细程度增加。
两者的主要区别在于瓦片编号中缩放级别的起始点和变化方向。在TMS图层中,较小的缩放级别具有较大的值,而在XYZ图层中,较小的缩放级别具有较小的值。因此,相同的(列,行,缩放级别)瓦片编号在TMS图层和XYZ图层中代表不同的瓦片。
WMTS (OpenGIS Web Map Title Service)
VMTS服务之前在GeoServer中介绍过了(
两种方式获取GeoServer发布的Web地图平铺服务(wmts)标准WMTSCapabilities.xml文件
),这里简单提一下。
相比WMS,WMTS牺牲了提供定制地图的灵活性,代之以通过提供静态数据(基础地图)来增强伸缩性,这些静态数据的范围框和比例尺被限定在各个图块内。常见GeoServer等用WMTS发布静态图层,GeoServer发布的VMTS地图如何使用请参见:
OpenLayer加载GeoServer发布的WMTS服务
WFS
网络要素服务(WFS)支持用户在分布式的环境下通过HTTP对地理要素进行插入,更新,删除,检索和发现服务。该服务根据HTTP客户请求返回要素级的GML(Geography Markup Language、地理标识语言)数据,并提供对要素的增加、修改、删除等事务操作,是对Web地图服务的进一步深入。WFS通过OGC Filter构造查询条件,支持基于空间几何关系的查询,基于属性域的查询,当然还包括基于空间关系和属性域的共同查询。
支持要素的增删改等事务操作,支持空间和属性查询。
WCS
网络覆盖服务是面向空间影像数据,它将包含地理位置的地理空间数据作为”覆盖(Coverage)”在网上相互交换,如卫星影像、数字高程数据等栅格数据。
WCS提供如下操作:
GetCapabitities:返回服务级元数据,它是对服务信息内容和要求参数的一种描述。
DescribeCoverage:支持用户从特定WCS服务器获取一个或多个覆盖的详细的描述文档。
GetCoverage:可根据查询要求返回一个包含或者引用被请求的覆盖数据的响应文档。
个人理解WCS主要是面向空间影像数据。
WPS(Web Processing Server)
Processing即ArcView中的GeoProcessing,诸如Union,Intersect等方法。WPS要做的就是暴露基于URL接口来实现客户端通过WebService对此类方法的调用、并返回数据。
这块我理解的主要是用来发起web端的空间运算处理工作,入裁切、合并等空间运算。
GeoJSON介绍
GeoJSON是一种使用JSON格式描述地理数据结构的编码格式
可以参照博主另一篇文章介绍:
GIS开发入门,GeoJSON是什么?GeoJSON格式标准介绍
— end
如果觉得博主写得还不错,欢迎”关注、点赞、收藏“一键三连!