基于Leaflet和天地图的免费运动场所WebGIS可视化-以长沙市为例

目录

前言

一、免费运动场所数据整理

1、本地宝数据简介

2、Java后台数据解析

二、Leaflet前端地图展示

1、基础数据准备

2、具体位置及属性标记

三、成果展示

1、空间位置分布

2、东风路立交桥运动公园

3、芙蓉区花侯路浏阳河大桥下方

4、梅岭国际小区

5、湖南大学附属中学对面

6、湘府路大桥西

7、静园山庄

四、总结


前言

        在当今快节奏的现代生活中,人们对于健康生活方式的追求愈发强烈,运动健身成为众多市民日常生活的重要组成部分。长沙市作为湖南省的省会城市,拥有众多的运动场所,从专业的体育场馆到社区内的小型健身场地,种类丰富。然而,对于广大市民而言,如何快速、便捷地找到身边的免费运动场所,以及了解这些场所的相关信息,如位置、设施、开放时间等,一直是一个难题。WebGIS(Web 地理信息系统)技术的出现和发展,为解决这一问题提供了新的思路和方法。它通过将地理信息与网络技术相结合,实现了地理空间数据的在线发布、查询、分析和可视化等功能,为用户提供了一个直观、便捷的地理信息获取平台。在众多的 WebGIS 开发框架中,Leaflet 以其轻量级、易上手、功能强大等特点,受到了广大开发者的青睐。Leaflet 能够方便地与各种地图服务进行集成,实现地图的显示、缩放、平移等基本操作,同时还可以通过插件扩展其功能,如添加标记、绘制图形、进行空间分析等。而天地图作为我国自主研发的地理信息服务平台,提供了丰富的地理空间数据资源,包括矢量地图、影像地图、地形地貌等,其数据精度高、覆盖范围广,能够为 WebGIS 应用提供坚实的数据基础。

        本研究旨在基于 Leaflet 和天地图,构建一个长沙市免费运动场所的 WebGIS 可视化平台。通过对长沙市免费运动场所的实地调研和数据收集,整合其位置、类型、设施、开放时间等信息,利用 Leaflet 的地图功能和天地图的数据资源,实现这些运动场所的可视化展示。用户可以通过该平台,在地图上直观地查看长沙市各个免费运动场所的分布情况,点击感兴趣的场所图标,获取详细的场所信息,还可以通过搜索功能快速定位到特定的运动场所。本案例具有一定的现实意义,能够为长沙市市民提供一个便捷的免费运动场所查询平台,提高市民的运动参与度和生活质量。通过对 Leaflet 和天地图的深入应用和研究,进一步推动了 WebGIS 技术的发展和创新,为未来更多类似应用的开发提供了参考和借鉴。

        本文搜集的免费运动场所地点由长沙本地宝提供,参考内容中不包含有经纬度信息。我根据提供的中文地址调用天地图的地名解析服务,将地名转换成对应的经纬度位置,因此非常感谢本地宝的基础数据,我只是在此基础上进行了空间位置的映射,更加方便大家查找相关的位置。博文首先介绍了如何使用天地图服务根据提供的免费运动场所进行解析,然后根据解析的结果使用Lealet组件来进行WebGIS展示,为大家提供服务展示。

一、免费运动场所数据整理

        本节将重点介绍一下基础数据以及在Java后台来构建场所查询地点。为后续的空间展示打下基础。

1、本地宝数据简介

        首先需要介绍一下基础的数据来源,本次搜集整理的免费数据源来源于长沙本地宝分享,不花钱也能打球~长沙免费运动场地推荐!。

每次想运动运动,都要开始到处找场地。收费?不要。其实长沙有很多很多的免费的运动场地哦!

篮球、羽毛球、排球、乒乓球……

 

        在文章中我们梳理出来了主要的运动场所的位置描述信息。 如下表格所示:

序号所属范围位置信息
1开福区东风路立交桥东风路与三一大道交会处
2芙蓉区花侯路浏阳河大桥芙蓉区花侯路浏阳河大桥下方
3梅溪湖街道梅园社区导航梅岭国际小区南门,进门左拐进入小区,在8栋后面
4湖南大学附属中学对面湖南大学附属中学对面,联丰路桥下
5洋湖街道湘府路大桥西附近
6天顶街道天源社区、雷锋大道导航静园山庄,进门左拐,或者导航科迪雅静园幼儿园

2、Java后台数据解析

        为了防止查询的地名地址在全国的区域内有重名的情况,这里在一些地名上加上长沙作为前缀。如:“静园山庄”加上限定词“长沙雷锋大道静园山庄”,以上6个地方的限定词加上后完整的查询天地图Java示例程序如下所示:

@Test
public void testGeocoder2() throws InterruptedException {String [] loc_name = {"东风路立交桥运动公园","芙蓉区花侯路浏阳河大桥下方","梅岭国际小区","湖南大学附属中学对面","长沙湘府路大桥西","长沙雷锋大道静园山庄"};for(String name : loc_name) {String keyWord = "%7B'keyWord':'" + name + "'%7D" ;HttpResponse<String> resp = tdtOptService.getGeocoder(keyWord, TDT_SERVER_KEY);System.out.println(name + "===>" +resp.getBodyResult());Thread.sleep(1500);}
}

        在开发IDE中运行以上的测试用例,在IDE的控制台可以发现以下输出:

        说明我们成功的调用天地图的API实现地名的解析并返回了相应的值。

二、Leaflet前端地图展示

        本节将重点介绍如何使用Leaflet来对这些免费的运动场所进行WebGIS展示。想要把这些数据展示出来需要经过以下两步。第一步是根据后台的返回准备基础数据,第二步是在地图上展示具体的位置及属性。

1、基础数据准备

        这里将根据后台返回的基础数据,组装成我们需要的时空数据和属性数据。完整的数据如下,在每一条数据中,包含了经纬度位置、运动场所名称、所属范围和适宜的运动:

// 待标绘的点
var dataJson = [{lat:28.232727,lon:112.987638,c_name:"东风路立交桥运动公园",range:"开福区东风路立交桥",traffic:"可乘坐公交到达附近站点,如东风路站等,<br/>下车后步行前往;若选择自驾,周边有相应道路可抵达,<br/>且公园周边有一定停车区域。",color:"#03a9f4",sports:"包括三个半场篮球场 ,两片多功能运动场(气排球场),<br/>两片标准羽毛球场。一个儿童活动区和一块广场舞场地,<br/>健身、遛娃两相宜。"},{lat:28.212437,lon:113.034959,c_name:"芙蓉区花侯路浏阳河大桥下方",range:"芙蓉区花侯路浏阳河大桥",traffic:"乘坐公交可选择靠近浏阳河大桥的站点下车,<br/>再步行前往;自驾可通过花侯路等道路抵达,<br/>周边停车较为方便。",color:"#ff9800",sports:"不仅设置了体育健身场地,还保留了附近居民比赛存放的龙舟。<br/>单独开辟了龙舟文化展示区,让居民在运动的同时,<br/>还能感受龙舟文化的魅力。"},{lat:28.195517,lon:112.875721,c_name:"梅岭国际小区",range:"梅溪湖街道梅园社区",traffic:"地铁2号线梅溪湖西4号口步行到达,<br/>也可以乘坐公交到梅岭公园或看云路采菊路口下",color:"#591ee9",sports:"运动场地较其他小区来说要大,有三片羽毛球场地,<br/>管理得很好且很干净,还专门配备了乒乓球桌,<br/>背靠幽静的小山坡。"},{lat:28.139807,lon:112.924884,c_name:"湖南大学附属中学对面",range:"岳麓街道、罗家嘴立交桥西南角",traffic:"地铁3号线阳光站1号口步行到达,<br/>建议乘坐公交到联丰路潭州大道口公交站,下车只需步行100m",color:"#607d8b",sports:"桥下空间改造而来,有三片羽毛球场地,<br/>环境很新且有好几个乒乓球桌。"},{lat:28.11695,lon:112.9404,c_name:"湘府路大桥西",range:"洋湖街道",traffic:"乘坐公交至湘府路大桥西步行到达",color:"#4b29b5",sports:"桥下空间很全面,包含一片五人制足球场、两片篮球场、<br/>三片羽毛球场、六张乒乓球台。"},{lat:28.2442,lon:112.88991,c_name:"静园山庄",range:"天顶街道天源社区、雷锋大道",traffic:"乘坐公交到静园站下,建议自驾",color:"#a50b0b",sports:"场地建设时是用作网球场的,但是打羽毛球也可以。<br/>边上还有一个篮球场,地理位置稍偏,适合住雷锋大道的人来。"}];

        将以上的信息准备完毕后,接下来就可以基于这些位置信息在地图上展示出来。 

2、具体位置及属性标记

        有了位置之后,就可以使用Leaflet来对这些具体的位置进行地图的标记,同时在展示时将所属范围、适合的运动项目也进行了一个简单的展示。关键代码如下:

var collisionLayer = L.LayerGroup.collision({margin:3});
for(var i=0;i<dataJson.length;i++){var html var marker = L.marker([dataJson[i].lat, dataJson[i].lon], {icon: L.divIcon({iconSize: null,className: '',popupAnchor:[5,5],shadowAnchor:[5,5],html: buildHtml(dataJson[i],i)})}).addTo(collisionLayer);
}
collisionLayer.addTo(map);
function buildHtml(dataJson,index){var html = "";html += "<div class='marsBlackPanel' style='background:"+dataJson.color+";' animation-spaceInDown><div class='marsBlackPanel-text' ><b>"+ (i+ 1)+ "、" +dataJson.range + "&nbsp;" + dataJson.c_name +"</b><span></span></div>";html += "<div class='marsBlackPanel-text' style=''>推荐交通:" + dataJson.traffic+ "</div>";html += "<div class='marsBlackPanel-text' style=''>推荐运动:" + dataJson.sports+ "</div>";html += "</div>";return html;
}

三、成果展示

        本节将对长沙市的免费运动场地进行空间展示,也让大家看看这6块地方究竟在哪里。首先介绍一下整体的时空位置分布,其次将进行逐个地点的介绍。

1、空间位置分布

        本次分享的免费运动场所一共有6处,从空间位置来看。比较靠北边的就是静园山庄,最东边的应该是芙蓉区花侯路浏阳河大桥下方,最西边的是位于梅溪湖一期的梅岭国际小区,最南边的是湘府路大桥西。

2、东风路立交桥运动公园

       该场地包括三个半场篮球场 ,两片多功能运动场(气排球场),两片标准羽毛球场。一个儿童活动区和一块广场舞场地,健身、遛娃两相宜。 

3、芙蓉区花侯路浏阳河大桥下方

         该场地不仅设置了体育健身场地,还保留了附近居民比赛存放的龙舟。单独开辟了龙舟文化展示区,让居民在运动的同时,还能感受龙舟文化的魅力。

4、梅岭国际小区

        运动场地较其他小区来说要大,有三片羽毛球场地,管理得很好且很干净,还专门配备了乒乓球桌,背靠幽静的小山坡。 

5、湖南大学附属中学对面

        桥下空间改造而来,有三片羽毛球场地,环境很新且有好几个乒乓球桌。 

6、湘府路大桥西

        桥下空间很全面,包含一片五人制足球场、两片篮球场、三片羽毛球场、六张乒乓球台。 

7、静园山庄

        场地建设时是用作网球场的,但是打羽毛球也可以。边上还有一个篮球场,地理位置稍偏,适合住雷锋大道的人来。 

四、总结

        以上就是本文的主要内容。本文研究旨在基于 Leaflet 和天地图,构建一个长沙市免费运动场所的 WebGIS 可视化平台。通过对长沙市免费运动场所的实地调研和数据收集,整合其位置、类型、设施、开放时间等信息,利用 Leaflet 的地图功能和天地图的数据资源,实现这些运动场所的可视化展示。通过使用天地图来展示这些运动场所信息,不仅方便了大家的浏览,同时还能为后面的管理提供一个入口。博文首先对免费运动场所的信息和空间信息进行介绍,其次介绍了前后端的程序如何编写以及如何进行WebGIS的可视化分析,最后对6处免费的场所进行了详细的介绍,从所属的位置,适合的运动、交通方式等方面进行。行文仓促,定有不足之处,欢迎各位朋友在评论区批评指正,不胜感激。最后,希望大家都动起来,为了自己的健康,走出办公室,走进户外。各位小伙伴们,如果你的所在地方也有免费的地方进行运动,也可以一并告知我来统一搜集,数据可以在评论区留言留下联系方式,万分感谢。

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

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

相关文章

Flutter——数据库Drift开发详细教程(六)

目录 1.视图2.视图中列的可空性3.DAO4.流查询5.高级用途6.注意事项 1.视图 也可以将SQL 视图定义 为 Dart 类。为此&#xff0c;请编写一个抽象类来扩展View。此示例声明了一个视图&#xff0c;用于读取示例中架构中某个类别中添加的待办事项数量&#xff1a; abstract class C…

Kafka 4.0版本的推出:数据处理新纪元的破晓之光

之前做大数据相关项目&#xff0c;在项目中都使用过kafka。在数字化时代&#xff0c;数据如洪流般涌来&#xff0c;如何高效处理这些数据成为关键。Kafka 就像是一条 “智能数据管道”&#xff0c;在数据的世界里扮演着至关重要的角色。如果你第一次接触它&#xff0c;不妨把它…

RabbitMQ高级篇-MQ的可靠性

目录 MQ的可靠性 1.如何设置数据持久化 1.1.交换机持久化 1.2.队列持久化 1.3.消息持久化 2.消息持久化 队列持久化&#xff1a; 消息持久化&#xff1a; 3.非消息持久化 非持久化队列&#xff1a; 非持久化消息&#xff1a; 4.消息的存储机制 4.1持久化消息&…

ctfshow权限维持

1&#xff0c;web670 我们先看一下这个php代码 error_reporting(0);#关闭错误报告 highlight_file(__FILE__);#内容高亮显示$a$_GET[action];#get传参switch($a){case cmd:eval($_POST[cmd]);break;case check:file_get_contents("http://checker/api/check");#获取…

力扣算法ing(71 / 100)

5.15 哈希表合集—349.两个数组的交集 给定两个数组 nums1 和 nums2 &#xff0c;返回 它们的 交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。 示例 1&#xff1a; 输入&#xff1a;nums1 [1,2,2,1], nums2 [2,2] 输出&#xff1a;[2]示例…

(面试)Handler消息处理机制原理

Handler是用于实现线程间通信和任务调度的一种机&#xff08;Handler、 Looper、MessageQueue、 Message&#xff09;。Handler 允许线程间发送Message或Runnable对象进行通信。在Android中UI修改只能通过UI Thread&#xff0c;子线程不能更新UI。如果子线程想更新UI&#xff0…

Dify 实战教程 | 5分钟打造文本生成应用( Stable Diffusion 提示词生成器)

AI 绘画离不开「提示词&#xff08;Prompt&#xff09;」——如何构造清晰、生动、有表现力的提示词&#xff0c;直接决定你生成图像的质量。而 Stable Diffusion 的提示词构造相比 Midjourney 更加自由&#xff0c;但也更考验组织语言的能力。 今天这篇教程&#xff0c;教你零…

RPC框架源码分析学习(二)

RPC框架源码分析与原理解读 前言 在分布式系统开发中&#xff0c;远程过程调用(RPC)是一项基础且关键的技术。通过对KVstorageBaseRaft-cpp项目RPC模块的源码分析&#xff0c;我深入理解了RPC框架的工作原理和实现细节。本文将从程序员视角分享我的学习心得。 框架概述 本项…

当下流行的智能体通信协议:MCP、A2A、ANP 分别是什么?

在当前人工智能&#xff08;AI&#xff09;智能体生态系统中&#xff0c;智能体之间的有效沟通至关重要。为了让AI智能体能够高效、安全地协同工作&#xff0c;业界提出了多种通信协议。其中&#xff0c;MCP、A2A 和 ANP 代表了三个关键层级的通信协议&#xff0c;各自应对不同…

为什么 cout<<“中文你好“ 能正常输出中文

一, 简答: 受python3字符串模型影响得出的下文C字符串模型结论 是错的&#xff01;C的字符串和python2的字符串模型类似&#xff0c;也就是普通的字符串是ASCII字符串和字节串两种语义&#xff0c;类似重载或多态&#xff0c;有时候解释为整数&#xff0c;有时候是字节串。Uni…

鸿蒙的卓易通,让我踩了一次坑

前言 因为我本身对鸿蒙提不起兴趣&#xff0c;哪怕有些文章给鸿蒙穿上了“黑丝”&#xff0c;再加上公司当前没有适配鸿蒙的计划&#xff0c;所以关于鸿蒙的消息我都关注的很少。 今早&#xff0c;看到了徐宜生老师的一篇文章&#xff1a;“鸿蒙卓易通&#xff0c;是饮鸩止渴…

Cursor vs VS Code vs Zed

代码编辑器的世界已经迎来了创新的爆发。曾经由重量级IDE或基础文本编辑器主导的领域,如今开发者们发现自己正在探索全新一波聚焦于AI集成、协作和性能的工具。 在本文中,我们将深入探讨2025年三款流行的编辑器:Cursor、Visual Studio Code (VS Code)和Zed Code Editor。每…

使用 LiteFlow 实现灵活的业务逻辑解耦

1. 引言 1.1 业务逻辑复杂性带来的挑战 在现代软件开发中,随着业务需求不断增长,代码结构日趋复杂。硬编码式的流程控制方式难以适应频繁变更的需求,导致维护成本高、可读性差、扩展性弱。 1.2 规则引擎在解耦中的作用 规则引擎(Rule Engine)通过将业务逻辑与程序代码…

以项目的方式学QT开发(一)——超详细讲解(120000多字详细讲解,涵盖qt大量知识)逐步更新!

以项目的方式学QT开发 以项目的方式学QT开发 P1 QT介绍 1.1 QT简介 1.2 QT安装 1.2.1 Windows QT安装 1.2.2 QT Creator 使用基本介绍 P2 C基础 2.1 命名空间 2.1.1 命名空间作用 2.1.2 自定义命名空间 2.2 从C语言快速入门 2.2.1 输入输出 2.2.2 基…

【前端】【css】【总复习】三万字详解CSS 知识体系

&#x1f308; CSS 知识体系目录大纲 一、基础知识入门 1. CSS 简介与作用 CSS&#xff08;Cascading Style Sheets&#xff0c;层叠样式表&#xff09;是一种用于给 HTML 页面添加样式的语言&#xff0c;作用是让网页更美观、结构更清晰、布局更灵活。 核心作用&#xff1a;…

R利用spaa包计算植物/微生物的生态位宽度和重叠指数

一、生态位宽度 生态位宽度指数包括shannon生态位指数和levins生态位指数。下面是采用levins方法计算生态位宽度。method也可以选择“shannon”。 二、生态位重叠指数 生态位重叠指数&#xff0c;包括levins生态位重叠指数、schoener生态位重叠指数、petrai…

【论信息系统项目的合同管理】

论信息系统项目的合同管理 论文要求写作要点正文前言一、合同的签订管理二、合同履行管理三、合同变更管理四、合同档案管理五、合同违约索赔管理结语 论文要求 项目合同管理通过对项目合同的全生命周期进行管理&#xff0c;来回避和减轻可识别的项目风险。 请以“论信息系统项…

最新网盘资源搜索系统,电视直播,Alist聚合播放

源码描述&#xff1a; 本项目是基于Vue与Nuxt.js技术构建的网盘搜索项目&#xff0c;持续开源并维护更新。该项目旨在使每个人都能拥有属于自己的网盘搜索网站。我们强烈建议用户自行部署该项目。 更新日志&#xff1a; 新增TV播放功能新增Alist源聚合播放功能新增批量删除功…

【Ubuntu】安装BitComet种子下载器

环境 Ubuntu 24.04.2 下载依赖库 环境比较新&#xff0c;此软件需要依赖很多旧的库&#xff0c;逐个安装下载&#xff1a; 1.libicu70 http://nz.archive.ubuntu.com/ubuntu/pool/main/i/icu/libicu70_70.1-2_amd64.deb2.libjavascriptcoregtk-4.0-18 http://security.ubu…

修复“ImportError: DLL load failed while importing lib: 找不到指定的程序”笔记

#工作记录 一、问题描述 在运行CosyVoice_For_Windows项目时&#xff0c;出现以下报错&#xff1a; Traceback (most recent call last): File "D:\ProgramData\anaconda3\envs\CosyVoice\Lib\pydoc.py", line 457, in safeimport module __import__(path) …