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

基于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 += "<div+dataJson.color+";' animation-spaceInDown><div ><b>"+ (i+ 1)+ "、" +dataJson.range + "&nbsp;" + dataJson.c_name +"</b><span></span></div>"; html += "<div>推荐交通:" + dataJson.traffic+ "</div>"; html += "<div>推荐运动:" + dataJson.sports+ "</div>"; html += "</div>"; return html; }

三、成果展示

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

1、空间位置分布

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

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

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

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

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

4、梅岭国际小区

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

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

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

6、湘府路大桥西

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

7、静园山庄

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

四、总结

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

Read more

AI工具前端提示词实战:从设计原则到工程化落地

快速体验 在开始今天关于 AI工具前端提示词实战:从设计原则到工程化落地 的探讨之前,我想先分享一个最近让我觉得很有意思的全栈技术挑战。 我们常说 AI 是未来,但作为开发者,如何将大模型(LLM)真正落地为一个低延迟、可交互的实时系统,而不仅仅是调个 API? 这里有一个非常硬核的动手实验:基于火山引擎豆包大模型,从零搭建一个实时语音通话应用。它不是简单的问答,而是需要你亲手打通 ASR(语音识别)→ LLM(大脑思考)→ TTS(语音合成)的完整 WebSocket 链路。对于想要掌握 AI 原生应用架构的同学来说,这是个绝佳的练手项目。 从0到1构建生产级别应用,脱离Demo,点击打开 从0打造个人豆包实时通话AI动手实验 AI工具前端提示词实战:从设计原则到工程化落地 在开发AI工具前端时,提示词系统往往是决定用户体验的关键因素。经过多个项目的实战积累,我总结了开发者最常遇到的三大痛点: 1. 语义歧义:自然语言提示词在不同场景下可能产生多种解析结果,导致AI返回不可预期的内容 2. 上下文丢失:

Llama-3.2V-11B-cot部署教程:GPU显存占用优化技巧与batch size调优实测

Llama-3.2V-11B-cot部署教程:GPU显存占用优化技巧与batch size调优实测 1. 引言:为什么你的GPU总是不够用? 如果你尝试过部署Llama-3.2V-11B-cot这个视觉推理模型,大概率会遇到一个让人头疼的问题:显存不够用。明明模型参数只有11B,为什么一运行就提示OOM(内存溢出)?为什么别人的服务器能流畅运行,你的却频频报错? 这其实不是模型本身的问题,而是部署时没有做好显存优化。今天这篇文章,我就来手把手教你如何优化Llama-3.2V-11B-cot的GPU显存占用,并通过实测数据告诉你,不同的batch size设置会带来多大的性能差异。 学习目标: * 理解Llama-3.2V-11B-cot的显存占用原理 * 掌握多种显存优化技巧 * 学会通过batch size调优平衡性能和显存 * 获得可立即使用的优化配置方案 前置知识:只需要基本的Python和命令行操作经验,不需要深度学习专家级知识。我会用最直白的方式解释所有概念。 2. 理解Llama-3.2V-11B-cot的显存占用 在开始优化之前,我们先要搞清楚

前端常用可视化图表组件大全

🖥️ PC端主流图表库(通常也支持移动端) 这些是功能最强大、应用最广泛的库,能覆盖绝大多数PC端仪表盘和后台管理系统的需求。 库名称核心特点适用场景渲染技术开源/许可ECharts国产全能型:图表类型极丰富(50+种),配置灵活,中文文档友好,社区庞大。支持Canvas和SVG双引擎渲染,性能优异 。企业级后台、大屏展示、PC端各类复杂图表需求。Canvas/SVGApache 2.0 (开源)Chart.js简单易用:上手门槛极低,API简洁明了,文档清晰。设计风格清新现代,响应式布局是内置的 。快速原型开发、小型项目、需要简洁美观图表的场景。CanvasMIT (开源)Highcharts成熟稳定:商业级库,兼容性极佳(支持IE6),交互和样式非常精致。被全球众多大公司信赖,文档和示例极其完善 。对浏览器兼容性要求严苛的金融、政府项目;追求极致稳定性的企业应用。SVG/VML免费供非商业使用,商业需许可D3.js定制之王:不提供预制图表,

计算机类计算机类毕业设计选题指南:Web/人工智能/大数据/物联网/网络安全全方向选题表

计算机类计算机类毕业设计选题指南:Web/人工智能/大数据/物联网/网络安全全方向选题表

目录 * 前言 * 毕设选题 * Web/小程序 * 人工智能 * 大数据 * 物联网 * 网络安全 * 开题指导建议 * 更多精选选题 * 选题帮助 * 最后 前言 📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过和节省时间与精力投入到更重要的就业和考试中去,学长分享优质的选题经验和毕设项目与技术思路。 🚀对毕设有任何疑问都可以问学长哦! 选题指导: 最新最全计算机专业毕设选题精选推荐汇总 大家好,这里是海浪学长毕设专题,本次分享的课题是 🎯计算机类毕业设计选题指南:Web/人工智能/大数据/物联网/网络安全全方向选题表 毕设选题 计算机类毕业设计选题涵盖了Web小程序开发、人工智能、大数据、物联网以及网络安全等多个核心研究方向。这些方向不仅体现了当前计算机技术的主流发展趋势,也为本科生提供了丰富的实践与创新空间。Web小程序方向专注于