使用LeafLet叠加Geoserver wms图层到已有底图的方法

这篇具有很好参考价值的文章主要介绍了使用LeafLet叠加Geoserver wms图层到已有底图的方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景

        随着现代城市交通建设的飞速发展,各个城市的地铁路线和地铁站点也是越来越多。地铁极大的方便了广大人民的交通出行。作为Giser,经常会遇到需要将一份shp数据在地图上展示,甚至需要在网页端进行浏览的需要。把shp这种空间矢量数据进行web展示的方法有很多种。第一种可以采用Arcgis的技术栈,通过ArcgisServer把数据发布成服务,然后进行服务的展示。第二种可以采用SuperMap的技术栈,也是同样的技术思想,把数据发布出来。第三种是面向Java开发人员的,我们可以采用开源的Geoserver路线,把数据使用GeoServer发布成wms服务,再采用Leaflet等webgis可视化组件来进行展示。

        本文重点介绍基于LeafLet进行GeoServer发布的Wms服务加载过程中遇到的叠加展示问题,以及怎么解决这个叠加问题,让gis服务于专业分析及可视化。如果您在使用的过程当中也遇到了这个问题,可以参考本文来进行解决。

一、数据说明

        这里使用的数据来源与互联网数据分享,是全国的地铁站点数据,采用EPSG:4326 - WGS 84,字符编码:UTF-8,包含了全国主要地铁城市的站点信息。

使用LeafLet叠加Geoserver wms图层到已有底图的方法

1、数据解读

        使用ArcgisMap软件可以打开编辑shp数据,这里使用Qgis免费软件进行数据的查看和编辑。在采用GeoServer发布之前,先来简单预览一下数据。为了比较直观的看到地铁的所在省份,额外叠加了全国的省份数据(也是shp格式的)。

使用LeafLet叠加Geoserver wms图层到已有底图的方法

         使用Qgis的属性表查看功能,可以看到如下的地铁站点信息,包含的主要字段有:

序号 名称 别名 类型 长度 精度
0 OBJECTID 主键ID Long 10 0
1 PointName 地铁站名称 String 16 0
2 PointUid 地铁站标识码 String 80 0
3 Lng 经度 String 20 0
4 Lat 纬度 String 20 0
5 IsPractica 中转站 String 50 0
6 LineName 路线名称 String 50 0
7 LineUid 路线标识码 String 50 0

使用LeafLet叠加Geoserver wms图层到已有底图的方法

 2、GeoServer服务发布

        关于GeoServer的相关知识,这里不赘述,以后可以专门花一些时间来讲解GeoServer的知识以及如何进行二次开发。这里仅简单讲解GeoServer中服务的发布已经如何进行服务的调试预览。把本地的GeoServer服务启动后,在其管理页面中可以看到。

使用LeafLet叠加Geoserver wms图层到已有底图的方法

         这里我们选择将shp发布成WMS服务,相关服务的发布有很多网友介绍得很详细,在此不在说明。我们来看看发成成功后的服务,可以打开服务预览页面,找到之前发布好的地铁站点数据图层,点击OpenLayers进行服务的预览。

使用LeafLet叠加Geoserver wms图层到已有底图的方法

使用LeafLet叠加Geoserver wms图层到已有底图的方法

 使用鼠标左键点击地图上的任意一点,可以查看对应的地铁站信息,详情如下图所示:

使用LeafLet叠加Geoserver wms图层到已有底图的方法

 使用GML可以简单查询服务的数据信息,在浏览器中可以看到一下响应。

使用LeafLet叠加Geoserver wms图层到已有底图的方法

 二、Leaflet中叠加wms服务

1、仅叠加wms服务

<!DOCTYPE html>
<html>
<head>
	<title>加载geoserver图层测试</title>
	<meta charset="utf-8" />
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<link rel="shortcut icon" type="image/x-icon" href="docs/images/favicon.ico" />
	<link rel="stylesheet" href="/2d/leaflet/leaflet.css" />
    <script src="/2d/leaflet/leaflet.js?v=1.0.0"></script>
</head>
<body>
<div id="mapid" style="width: 100%; height: 600px;"></div>
<script>
	var map = L.map('mapid').setView([34.669359, 113.642578], 4);
	//加载wms服务的图层
	var wmsLayer = L.tileLayer.wms(
		'http://localhost:8083/geoserver/testwzh/wms', {
			layers: 'testwzh:2022年全国地铁站点数据',
		}
	);
	//添加图层到地图
	wmsLayer.addTo(map);
</script>
</body>
</html>

使用LeafLet叠加Geoserver wms图层到已有底图的方法

 2、Wms服务叠加影像底图

        通常在gis服务中,还会叠加相应的底图服务,在底图的基础上一起配合wms服务共同进行展示,这样才是真正的应用,采用下面的代码进行图层叠加,来看看会出现什么效果。

<!DOCTYPE html>
<html>
<head>
	<title>加载geoserver图层测试</title>
	<meta charset="utf-8" />
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<link rel="shortcut icon" type="image/x-icon" href="docs/images/favicon.ico" />
	<link rel="stylesheet" href="/2d/leaflet/leaflet.css" />
    <script src="/2d/leaflet/leaflet.js?v=1.0.0"></script>
</head>
<body>
<div id="mapid" style="width: 100%; height: 600px;"></div>
<script>

	L.CRS.CustomEPSG4326 = L.extend({}, L.CRS.Earth, {
		code: 'EPSG:4326',
		projection: L.Projection.LonLat,
		transformation: new L.Transformation(1 / 180, 1, -1 / 180, 0.5),
		scale: function (zoom) {
			return 256 * Math.pow(2, zoom - 1);
		}
	});

var map = L.map('mapid',{crs:L.CRS.CustomEPSG4326}).setView([34.669359, 113.642578], 4);

	L.tileLayer('http://localhost:8086/data/basemap_nowater/1_10_tms/{z}/{x}/{y}.jpg', {
		maxZoom: 16,
		attribution: '夜郎kingMap data &copy; <a href="https://www.openstreetmap.org/">OpenStreetMap</a> contributors, ' +
			'<a href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, ' +
			'Imagery © <a href="https://www.mapbox.com/">Mapbox</a>',
		id: 'mapbox/streets-v11',
		tileSize: 256,
		zoomOffset: -1
	}).addTo(map);

	//加载wms服务的图层
	var wmsLayer = L.tileLayer.wms(
		'http://localhost:8083/geoserver/testwzh/wms', {
			layers: 'testwzh:2022年全国地铁站点数据',
		}
	);
	//添加图层到地图
	wmsLayer.addTo(map);
</script>
</body>
</html>

        我们会发现,wms服务发布瓦片把底图挡住了,看不到底图,但底图数据也是正常加载。您觉得问题出在了哪里呢? 

使用LeafLet叠加Geoserver wms图层到已有底图的方法

 3、问题排查

        遇到问题先不急,到官网看看Leaflet官网对于wms服务加载的API说明,leaflet wms说明。

选型 类型 默值 说明
layers String '' (必需)要显示的 WMS 图层的逗号分隔列表。
styles String '' 逗号分隔的 WMS 样式列表
format String 'image/jpeg' WMS 图像格式 (对具有透明度的图层使用 'image/png' for layers with transparency)。
transparent Boolean false 如果为 true,WMS 服务将返回具有透明度的图像。
version String 1.1.1 要使用的 WMS 服务的版本
crs CRS 用于 WMS 请求的坐标参考系统,默认为映射 CRS。 如果您不确定它的含义,请不要更改它。
upperCase Boolean false 如果为 true,WMS 请求参数键将为大写。

        请注意上面标了红色的参数,transparent,这个参数是用于控制服务返回的图像的透明度的。而且它的默认为false,也就是说,默认情况下,返回的瓦片是会挡住下层底图的瓦片。因此,可以知道大概得解决办法,修改瓦片的透明度设置,将其设置为true。

//加载wms服务的图层
var wmsLayer = L.tileLayer.wms(
	'http://localhost:8083/geoserver/testwzh/wms', {
		layers: 'testwzh:2022年全国地铁站点数据',
		format: 'image/png',
		transparent: true
	}
);

使用LeafLet叠加Geoserver wms图层到已有底图的方法

         为了方便大家更清楚直观的查看城市信息,把底图标签图层也加上去。完整的效果如下图所示:

//标签
L.tileLayer('http://localhost:8086/data/basemap_nowater/1-10label/{z}/{x}/{y}.png', {maxZoom: 10,minZoom:3,
		id: 'mapbox/label',tileSize: 256,zoomOffset: -1
}).addTo(mymap);

使用LeafLet叠加Geoserver wms图层到已有底图的方法

使用LeafLet叠加Geoserver wms图层到已有底图的方法

 总结

        以上就是本文的所有内容,本文重点介绍基于LeafLet进行GeoServer发布的Wms服务加载过程中遇到的叠加展示问题,以及怎么解决这个叠加问题,让gis服务于专业分析及可视化。如果您在使用的过程当中也遇到了这个问题,可以参考本文来进行解决。行文仓促,如有不足,欢迎来信留言批评指正。文章来源地址https://www.toymoban.com/news/detail-414229.html

到了这里,关于使用LeafLet叠加Geoserver wms图层到已有底图的方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • leaflet基本使用

    目录 创建地图(map) 添加图层(tileLayer) 创建标记(marker) 图标(icon/divIcon) 弹框(bindPopup) options选项 方法 工具提示(bindTooltip) options选项 窗格(pane) 常用方法 options选项   maxZoom:地图最大的缩放等级   minZoom:地图最小的缩放等级   zoom:地图默认的缩放等级   center:地图默认的中心

    2024年02月04日
    浏览(59)
  • Linux系统使用docker部署Geoserver(简单粗暴,复制即用)

    **注意:**此处有坑,网上很多教程并没有指定管理用户,此版本部署时就遇到了默认账户admin登陆不上去的问题,指定后可解决 账户名:admin 账户密码:geoserver 数据存储 - 添加新的数据存储 - shp数据 - 选择挂载的目录中的数据项 图层 - 添加新的资源 - 添加图层 - 发布

    2024年01月18日
    浏览(37)
  • Arcgis进阶篇(4)——arcgis js api使用geoserver服务

    geoserver-2.19.x(此版本支持jdk8.x)的下载地址: 链接:https://pan.baidu.com/s/1PkmmjHWWzbUA9fYfa110Ew?pwd=8tvf  提取码:8tvf  经测试,最新版本的geoserver需要jdk11,可自行测试。 开源软件geoserver使用指南_geoserver使用手册_纪永辉的博客-CSDN博客 注意geoserver和geowebcache都要设置,都要从lib文

    2024年02月03日
    浏览(44)
  • leaflet使用L.geoJSON加载文件,参数pointToLayer的使用方法(130)

    第130个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中加载geojson文件,这里介绍pointToLayer的使用方法。 点的处理方式不同于折线和多边形。默认情况下,简单标记使用为GeoJSON点绘制。在创建GeoJSON涂层时,我们可以通过pointToLayer在GeoJSON选项对象中传递函数来改

    2023年04月09日
    浏览(33)
  • mars3d显示地图,并且完成切换地图图层的功能,使用隐藏显示去控制图层

    如何安装mars3d请看这个链接哈! 我用的是vue3 先引入mars3d 创建地图的变量 在template中定义div,并且id名为cesiumBox(可以自定义) 在 onMounted 中使用 切换地图图层的实例 在上面的实例继续添加下面代码 show为false的话是图层隐藏掉 天地图的api链接在底部 接着在 template 添加此代码

    2024年02月12日
    浏览(48)
  • PhotoShop如何使用图层之实例演示?

      因科研等多场景需要进行绘图处理,笔者对PS进行了学习,本文通过《Photoshop2021入门教程》及其配套素材结合网上相关资料进行学习笔记总结,本文对图层使用进行阐述。    最终结果图       (1)准备素材    ①背景       ②阴影       ③书籍   

    2024年02月01日
    浏览(33)
  • 将一个独立的磁盘添加到已有的 `/` 分区

    将一个独立的磁盘添加到已有的 / 分区是比较复杂的,因为 / 分区已经是一个逻辑卷(LVM)。在这种情况下,可以扩展现有的 LVM 体积组(Volume Group),然后扩展 / 逻辑卷(Logical Volume)。以下是操作步骤: 步骤概述 创建物理卷 :将新的磁盘(或分区)设置为 LVM 物理卷(

    2024年01月22日
    浏览(51)
  • UE4-地形材质图层创建及使用

    1.选择模式中的地形,进入创建地形界面,支持自己设置地形大小以及导入高度图。导入高度图生成的地形有默认的大小,可以通过左侧面板中的分段大小等属性重新设置地形大小,高度图整体走势是不会更改。设置完抽点击创建,系统自动创建地形。 2.创建材质,使用Land

    2024年02月16日
    浏览(54)
  • ArcGIS Desktop使用入门(三)图层右键工具——可见比例范围

    ArcGIS Desktop使用入门(一)软件初认识 ArcGIS Desktop使用入门(二)常用工具条——标准工具 ArcGIS Desktop使用入门(二)常用工具条——编辑器 ArcGIS Desktop使用入门(二)常用工具条——数据驱动页面 ArcGIS Desktop使用入门(二)常用工具条——基础工具 ArcGIS Desktop使用入门(二

    2024年04月15日
    浏览(44)
  • ArcGIS Desktop使用入门(三)图层右键工具——组织要素模板

    ArcGIS Desktop使用入门(一)软件初认识 ArcGIS Desktop使用入门(二)常用工具条——标准工具 ArcGIS Desktop使用入门(二)常用工具条——编辑器 ArcGIS Desktop使用入门(二)常用工具条——数据驱动页面 ArcGIS Desktop使用入门(二)常用工具条——基础工具 ArcGIS Desktop使用入门(二

    2024年04月13日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包