当前位置: 首页 > article >正文

【国庆要来了】基于Leaflet的旅游路线WebGIS可视化实践

前言

        转眼2024年的国庆节马上就要来临了,估计很多小伙伴都计划好了旅游路线。金秋十月,不管是选择出门去看看风景,还是选择在家里看人。从自己生活惯了的城市去别人生活惯了的城市,去感受城市烟火、去感受人文风景,为2024年剩下的时间准备画一个完美的符号吧。在这里首先祝福我们伟大的祖国繁荣昌盛、人民安居乐业,出门旅游的朋友们注意安全,收获一路的好风景和好心情,在家休息的朋友们也自得其乐,自有收获。

        国庆旅游黄金周,全国各地的文旅部门现在都是使出了浑身解数,期待在今年的黄金周中吸引到我们更多的游客。长沙市作为热门的旅游城市,当地的文旅部门也是开始在各个平台进行广泛的宣传和呐喊。包括长沙本地宝在内的一些互联网平台也是推出了2024年的精品旅游路线推荐,根据不同的旅游需求,按照家国情怀、都市休闲、登高品秋、亲子欢乐、寄情山水主题,给大家组织推荐了5条精品的线路。不过官方是给出了旅游景点地名,那么作为一个GIS开发技术人员,我们是否可以结合本专业来进行一种旅游地图的时空碰撞呢?将地名地点利用WebGIS技术在地图上进行展示,进而为不同的路线分析距离、选择适合的交通工具出行等等,从而更精准的为我们的旅游服务和做好旅游参考。

        本文即在此背景之下产生,文章首先结合之前搜集的风景旅游区数据库、还有POI数据库,通过在风景旅游区数据库和POI数据库中根据名称来进行地理编码,找到其对应的经纬度信息,最后基于Leaflet进行时空位置绘制。为各位旅游提供完整的旅游路线预览。

一、应用实例技术实现路径

        这里首先对应用实例涉及的技术进行一个介绍,同时给出实现路径。即如何通过地名地址和风景区数据找出对应的经纬度位置,以及查找出对应的经纬度位置后,如何在Leaflet中进行空间数据的展示。

1、关键实现路径

        根据 上图可以看出,首先我们需要输入景点的名称信息,根据优先级的策略,我们优先查询风景旅游区的图层数据,如果图层中可以查到当前景点,则直接返回景点的位置经纬度。当然,不可避免的是,有一些数据比如餐饮或者网红打卡点,不一定是风景旅游区,因此无法在对应的图层中找到,针对这部分数据,则需要进一步的关联到POI图层中去继续查询。如果能查询到位置信息,则使用POI的经纬度信息,反之则返回为空,如果有第三方接口如天地图的地理编码查询接口服务,则可以调用这个服务来查询出对应的位置的经纬度信息。最后根据返回的经纬度信息在Leaflet中进行可视化。

2、空间数据库查询

        考虑到地名地址的信息不一定是完全准确的,一些名称信息等可能是不全的,如果有能力的话,最好使用分词的模式来进行关键词匹配,合理为了简单起见,暂时使用在数据库中的模糊匹配来实现。如果在生产环境中,则不推荐大家这么用,第一是性能不好,第二个是查询的效果也不是非常准确的。查询的SQL非常简单,这里直接给出查询语句,关于原表的表结构,受限于篇幅原因,这里不进行展开,感兴趣可以私聊或者翻阅之前的博客内容,有详细的介绍。


-- 1、 查询风景区表
select * from biz_scenic_spot t where t.name like '%湘丰%';

-- 2、查询POI信息表
select * from biz_poi_info t where t.name like '%湘丰%';

        在数据库客户端软件执行以上的SQL之后,可以在执行结果页看到以下的信息,

        大家可以在表中找到对应的经纬度字段,将经纬度信息拷贝出来。当然,这里的shp中是包含了经纬度字段,如果大家得到的数据中,没有经纬度信息。怎么进行经纬度信息的提取呢?这里以PostGIS为例,介绍如何使用函数来进行经纬度提取。

-- 2、查询POI信息表
select *,st_x(geom) lon ,st_y(geom) lat from biz_poi_info t where t.name like '%湘丰%';

         使用st_y(geometry)和st_x(geometry)来进行经纬度信息的提取。

二、精品路线的WebGIS可视化实现

        对精品路线的WebGIS展示,我们采用熟悉的Leaflet库来进行实现。如果您对此不熟悉,可以先进行相关知识的学习,同时本文采用的ES5的原生html和Javascript实现,学有余力,大家可以将代码使用新的前端框架,比如Vue或者React来进行实现。

1、界面基本布局简介

        界面的布局其实比较简单,采用的地图加侧边栏的实现方式,居中是地图的主体显示区域,右边配置一个侧边栏组件,在侧边栏中配置一个旅游路线的展示列表,列表下方计划做路线的具体景点展示,推荐旅游路线右边有一个操作按钮,点击按钮会自动切换景点对应的地名以及绘制最新的路线,将所有的景点连接而成。

2、WebGIS可视化实现

         为了将所有的旅游路线在地图上进行展示,我们需要将中文的地名地址转化为经纬度信息。按照上一节的转换步骤,基于我们的时空数据库信息,我们首先来进行查询,当然,后期我们可以采用接口服务的方式进行批量操作。以第一条路线为例:

        其中文路线景点为:

锦绶堂(湖南省苏维埃旧址)——耀邦故居——秋收起义文家市纪念园——田汉文化园——杨开慧故居——雷锋纪念馆——湖南第一师范旧址——湖南自修大学旧址(船山学社)——《湘江评论》旧址(白果园)
		——中共湘区委员会旧址——岳麓山——橘子洲景区(爱晚亭、岳麓书院)——新民学会成立旧址——宁乡石仑关——刘少奇纪念馆——何叔衡谢觉哉故居 

        根据这些地名,经过查询得出的经纬度信息如下:

var lineInfo1 = [{"lon":114.02698979600,"lat":28.46127479202,"name":"锦绶堂(湖南省苏维埃旧址)"},
		{"lon":113.88106756500,"lat":28.08157900607,"name":"耀邦故居"},
		{"lon":113.92577651100,"lat":28.40224145438,"name":"秋收起义文家市纪念园"},
		{"lon":113.20281080000,"lat":28.32460648000,"name":"田汉文化园"},
		{"lon":113.20442230000,"lat":28.59065549000,"name":"杨开慧故居"},
		{"lon":112.83963490000,"lat":28.20735347000,"name":"雷锋纪念馆"},
		{"lon":112.96615573900,"lat":28.17907124211,"name":"湖南第一师范旧址"},
		{"lon":112.97642394000,"lat":28.20314818853,"name":"湖南自修大学旧址(船山学社)"},
		{"lon":112.97237720200,"lat":28.19240549916,"name":"《湘江评论》旧址(白果园)"},
		{"lon":112.95634770000,"lat":28.17855288000,"name":"橘子洲景区"},
		{"lon":112.94699840800,"lat":28.19675004980,"name":"新民学会成立旧址"},
		{"lon":112.66766111600,"lat":28.21943663820,"name":"宁乡石仑关"},
		{"lon":112.64129723900,"lat":28.03827033474,"name":"刘少奇纪念馆"},
		{"lon":112.03729370000,"lat":28.05402452759,"name":"何叔衡谢觉哉故居"}
		];

        最后,将得到的位置和景点信息在leaflet地图上渲染出来,关键代码如下:

 

function openLine1(index){
	showLayerGroup.clearLayers();
	var line1 = new Array();
	$("#lineDetails").html("");
	var detailsInfo = "";
	var data;
	switch(index){
		case 1 :
			data = lineInfo1;
			break;
		case 2:
			data = lineInfo2;
			break;
		case 3:
			data = lineInfo3;
			break;
		case 4:
			data = lineInfo4;
			break;
		case 5:
			data = lineInfo5;
			break;
		default :
			data = lineInfo1;
	}
	for(var i = 0;i < data.length;i++){
		var latlng = new L.latLng(data[i].lat, data[i].lon);
		let marker = L.circleMarker(latlng, {
				radius: 10,
				color: "red",//这里设置的是circleMarker的颜色属性
		}).addTo(showLayerGroup);
		var name = data[i].name;
		marker.bindPopup(name);
		mymap.addLayer(showLayerGroup);
		line1.push([data[i].lat, data[i].lon]);
				
		detailsInfo += "<span style='font-size:15px;color:#178f26;'>"+ (i + 1) + ":"+ name + "<br/></span>";
		$("#lineDetails").html(detailsInfo);
				
		L.polyline([[line1]], {color : "red"}).addTo(showLayerGroup);
		}
		mymap.setView(showLayerGroup.getBounds().getCenter());// 设置地图的中心位置
}

        在上面的代码中,我们不仅展示了所有的旅游路线景点,同时将所有的景点连接起来,形成一条路线。 

三、推荐5条旅游路线展示 

        上面一节讲解如何进行路线的展示,下面我们根据小编的笔触,来深度的解析这5条旅游线路,大美长沙欢迎您,期待你的到来。

1、路线一:家国情怀游

                路线包含地点如下:这是一条包含红色因素的路线,一起去看看前辈们奋战的足迹。

        通过地图可以看到,这条路线距离比较长,覆盖的地区比较多,而且景点之间距离远,比较适合自驾,公共交通不是很方便,但景点非常值得推荐一看。

 2、路线二:都市休闲游

        如果不想太远的长途跋涉,只想就近来一场放松和休闲,那么下面这条都市休闲一定可以满足你的期待。首先来看看包含哪些具体的景点:

        想看湖南的文脉和风骨,去岳麓山走走,大学城的郎朗读书声中,还回荡着当年薛岳将军和将士们与日寇浴血奋战的厮杀声,听千年学府岳麓书院,连接了古今的文化传奇。到了夜晚再沿着湘江,乘坐橘洲之星,溯江而上,在橘子洲头,浪遏飞舟,感受伟大领袖毛主席的慷慨激昂。在黄兴路步行街,感受长沙city,在太平老街,品饕餮美食。在都市中,放下疲惫的身躯。 

        这条路线,基本是在长沙城区的核心区域,不必担心路程太远,出门不远就是地铁站,可以让您无缝换乘,一站直达。适合在室内转转,看看这座城市的风味。

 3、路线三:等高品秋游

        秋天是个油画大师,对色彩尤其的偏爱。不信你看远山,五彩斑斓的色彩铺满了大地,把大自然渲染得令人如此如醉。喜欢自驾的朋友,不妨趁着7天的长假,带着家人或者伙伴,大家结伴而行。走出钢筋森林城市,去登高,去赏秋,看大自然这位大家是如何描绘今年的美丽景象。

湘赣边(浏阳)文化艺术交流中心——浏阳天空剧院——秋收起义纪念园——苍坊旅游区——画里小河生态旅游区——道官冲非遗生态村——大围山国家森林公园——围山云起民宿——周洛大峡谷景区——浏阳石牛寨景区 。

4、路线四:亲子欢乐游 

        家有孩童,不知道如何选择路线。本地宝已经帮忙安排了一条路线,适合带着家里的宝贝们出行,温馨提醒,路线较远,需要提前规划交通。景区的表演还是非常值得期待。

季高兔窝窝——大王山旅游度假区——黑麋峰国家森林公园——铜官窑文化旅游度假区——五号山谷隐世民宿——2.0版靖港古镇——稻花香里农耕文化园——炭河里国家考古遗址公园——沩山密印景区——灰汤温泉国家旅游度假区——足迹岛星空民宿

5、路线五:寄情山水游 

        如果假期没来得及去看看辛追娭毑,那么国庆还是可以安排的哦。这里推荐一条线路,包含了湖南博物馆,看看大湖南的灿烂文化。也可以寄情于山水,和松雅湖国家湿地公园、大山冲森林公园、影珠山来个约会。

长沙滨江文化园——湖南博物院——潮宗街——空空客厅民宿——长沙园林生态园——松雅湖国家湿地公园——大山冲森林公园——影珠山——桐乐·影山居民宿——杨开慧纪念馆——湘丰茶业庄园 

        相对而言,这条路线是一条一路向北的路线,从长沙主城出发,一路向北。

        好了,以上就是分享的5条适合2024年国庆出游的旅游路线,趁着假期,一起出去转转吧。不管外来的朋友还是本地的朋友,都希望大家在这个假期中有个愉快的旅程,在每一次的旅程中,收获开心与快乐。        

四、总结

        以上就是本文的主要内容,文章首先结合之前搜集的风景旅游区数据库、还有POI数据库,通过在风景旅游区数据库和POI数据库中根据名称来进行地理编码,找到其对应的经纬度信息,最后基于Leaflet进行时空位置绘制。为各位旅游提供完整的旅游路线预览。行文仓促,难免有不足之处,如有不足,还恳请各位专家博主在评论区留下真知灼见,不甚感激。

        文章部分图源和旅游路线推荐来源于长沙本地宝制作的2024年国庆长沙旅游路线,原文:

国庆来长沙,5条游玩路线推荐!不同类型,值得一逛,祝大家接入愉快。


http://www.kler.cn/news/325249.html

相关文章:

  • 240924-通过服务器代理ip地址及port端口wget等下载文件
  • 如何判断IP有没有被污染过
  • 产品管理 - 互联网产品(3) : 迭代管理
  • 小米笔记本电脑笔记
  • es7.13.2请求体过大
  • java8:处理数据stream并传值
  • 瑞芯微RK3566鸿蒙开发板Android11修改第三方输入法为默认输入法
  • pysim-1
  • [Redis][集群][上]详细讲解
  • ComfyUI 速度更快,显存占用更低的图像反推模型Florence2PromptGen,效果媲美JoyCaption,还支持Flux训练打标
  • Linux驱动开发(速记版)--驱动基础
  • 2024重生之回溯数据结构与算法系列学习(9)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
  • 单ISP与双ISP的区别是什么
  • 踩坑集之demosaic对接VDMA
  • 第三十八条:使用接口模拟可扩展的枚举
  • Vue 学习
  • unity安装报错问题记录
  • Web端云剪辑解决方案,提供多轨视频、音频、特效、字幕轨道可视化编辑
  • DC00016基于java swing+MySQL房屋租赁管理系统GUI租赁管理系统javaswing项目
  • 20240926 关于Goland处理wsl-GOROOT原理猜测
  • Spring Cloud 工程搭建服务注册_服务发现
  • OCR Fusion: EasyOCR/Tesseract/PaddleOCR/TrOCR/GOT
  • 我在 Thoughtworks 被裁前后的经历
  • spark 大表与大表join时的Shuffle机制和过程
  • Python通过Sqlalchemy框架实现增删改查
  • Qt网络编程——QTcpServer和QTcpSocket
  • centos7 semanage 离线安装 SELinux
  • Vue3 + TS 实现同一项目同一链接,pc端打开是web应用,手机打开是H5应用
  • Solidity语言:重点学习Solidity编程语言,这是EVM上最常用的智能合约语言。
  • 关于大模型的10个思考