神州趣味地名-基于天地图和LeafLet的趣味地名探索

目录

前言

一、搜索API据介绍

1、官方API

2、Leaflet集成

二、成果介绍

1、令人忍俊不禁的地名

2、黑地名

3、数字地名

4、文艺地名

三、总结


前言

        在华夏大地广袤的土地上,地名承载着深厚的历史文化底蕴,它们如同一颗颗璀璨的明珠,散落在祖国的各个角落,诉说着独特的地域故事与人文传说。这些地名有的因古老的传说而神秘奇幻,有的因独特的地理风貌而形象生动,有的则因历史事件而意义非凡,它们构成了神州大地丰富多彩的 “趣名” 地图。

        随着地理信息技术的飞速发展,天地图作为国家地理信息公共服务平台,为我们提供了海量精准的地理数据和强大的地图服务功能。而 LeafLet 作为一种轻量级、开源的地图 JavaScript 库,凭借其简洁易用的 API 和出色的性能表现,成为众多开发者在构建交互式地图应用时的首选工具。将两者相结合,为我们探索趣味地名开辟了一条全新且高效的道路。

        本研究旨在深入挖掘散布在全国各地的趣味地名,通过天地图提供的地理数据基础,精准定位这些地名的位置,获取其周边地理环境、行政区划等多维度信息,为地名的解读与分析提供坚实的地理支撑。同时,借助 LeafLet 强大的地图可视化与交互能力,在网页端构建一个直观、生动的趣味地名探索平台,让用户能够方便快捷地浏览、搜索和了解这些趣味地名及其背后的故事。在这个平台上,用户可以像翻阅一本生动有趣的历史文化画卷一样,穿梭于不同的地域之间,感受各地独特的风土人情与文化魅力。

        从充满神秘色彩的 “鬼谷子村”,到形象逼真的 “鸡鸣三省”,从蕴含诗意的 “江南水乡”,到承载历史记忆的 “神堂峪”,这些趣味地名背后隐藏着无数令人着迷的传说与历史片段。通过基于天地图和 LeafLet 的探索之旅,我们不仅能够重新发现这些地名的魅力与价值,更能够以一种全新的视角去审视和传承祖国悠久的历史文化,激发人们对地理知识的兴趣和对本土文化的热爱,为推动文化传承与地理教育的融合发展贡献力量,让这些趣味地名在新时代焕发出更加耀眼的光芒,成为连接过去与现在、地域与文化的重要桥梁。

一、搜索API据介绍

        天地图提供了很多有意思的服务,大家可以根据实际情况到官方网站上进行申请开通即可。比如这里需要使用的地名检索服务,我们需要将文字的描述转换为具体的经纬度位置信息。为了查看目标地名在全国的分布,我们将查询范围设置为全国,同时为了方便逐级展示,还开发了按照层级自动查询的方法,支持按照层级来j进行钻取相应的数据。为了让大家对API有一个简单的了解,这里依然对天地图的官方API和如何使用Leaflet来进行集成进行简单的说明。

1、官方API

        1.1 行政区划区域搜索服务

        1.1.1输入参数说明

参数值参数说明参数类型是否必备备注(值域)
keyWord搜索的关键字String必填
specify指定行政区的国标码(行政区划编码表)严格按照行政区划编码表中的(名称,gb码)String必填下载行政区划编码表。9位国标码,如:北京:156110000或北京。
queryType服务查询类型参数String必填12:行政区划区域搜索服务。
start返回结果起始位(用于分页和缓存)默认0String必填0-300,表示返回结果的起始位置。
count返回的结果数量(用于分页和缓存)String必填1-300,返回结果的条数。
dataTypes数据分类(分类编码表)String可选下载分类编码表,参数可以分类名称或分类编码。多个分类用","隔开(英文逗号)。
show返回poi结果信息类别String可选取值为1,则返回基本poi信息; 取值为2,则返回详细poi信息

        1.1.2返回参数说明

参数值参数说明参数类型返回条件备注(值域)
resultType返回结果类型Int必返回取值1-5,对应不同的响应类型: 1(普通POI),2(统计),3(行政区),4(建议词搜索),5(线路结果)
count返回总条数Int必返回
keyword搜索关键词String必返回搜索的关键字。
pois针对点(类型1)集合返回Pois Json数组resultType=1
namePoi点名称String必返回
phone电话String
address地址String
lonlat坐标String必返回坐标 x,y
poiTypepoi类型Int必返回101:POI数据 102:公交站点
eaddress英文地址String
enamepoi点英文名称String
hotPointIDpoi热点IDString必返回热点id
province所属省名称String
provinceCode省行政区编码String
city所属城市名称String
cityCode市行政区编码String
county所属区县名称String
countyCode区县行政区编码String
source数据信息来源String必返回
typeCode分类编码String
typeName分类名称String
stationData车站信息结构体 数据Json 数组poiType=102
lineName线路名称String必返回
uuid线路的idString必返回
stationUuid公交站uuidString必返回
statistics针对统计(类型2)集合返回Json 数组resultType=2
count本次统计POI总数量Int必返回
adminCount行政区数量Int必返回
priorityCitys推荐行政区名称Json数组必返回
name行政区名称String必返回
count城市数量Int必返回
lonlat行政区经纬度String必返回坐标 x,y
ename英文行政名称String必返回
adminCode城市国标码Int必返回9位国标码。
allAdmins各省包含信息集合Json数组必返回
name行政名称String必返回
count包含数量Int必返回
lonlat行政区经纬度String必返回坐标x,y
adminCode省国标码String必返回
ename英文行政名称String必返回
isleaf有无下一级行政区boolean必返回有则false,无则true
area针对行政区省(类型3)集合点Json 数组resultType=3
name名称String必返回
bound定位范围(“minx,miny,maxx,maxy”)String返回
lonlat定位中心点坐标String必返回
adminCode行政区编码Int必返回
level显示级别Int必返回1-18级
lineData线路结果Json 数组resultType=5
stationNum站数量String必返回
poiType类型为“103”String必返回
name线路名称String必返回
uuid线路idString必返回
status返回状态信息Json 数组必返回结果提示信息
infocode信息码Int必返回服务状态码表
cndesc返回中文描述String必返回服务状态码表

        1.1.3行政区划区域搜索示例

请求实例:http://api.tianditu.gov.cn/v2/search?postStr={"keyWord":"商厦","queryType":12,"start":0,"count":10,"specify":"156110108"}&type=query&tk=您的密钥

2、Leaflet集成

        在本实例中,不仅要实现在前端实现Leaflet对天地图的检索服务集成,同时还要实现层级调用,比如在点击省级的统计结果时,可以下钻到市级再到区县级的数据,当然本例还有一点有待完善的地方,如果实现返回的查询就更加完美。要想实际运行本实例,首先需要申请天地图的key,关于如何申请,大家可以参考官方网站。页面主要逻辑如下:

<div class="center-flex">趣味地名之leaflet天地图检索实战
</div>
<div id="mapid" style="width: 100%; height: 600px;"></div><div style="position:absolute;z-index:403;top:50px;left:60px;"><input type="text" style="width:300px;height:20px;" name="address" id="address"></input><input type="button" value="查询" onclick="execQuery();"></input><br/>
/div>

        创建页面的展示和检索交互元素后,定义两个交互方法,关键代码如下:

//用来清空前面的查询结果
var myLayerGroup = L.featureGroup().addTo(map);function execQuery(){var keyWord = $("#address").val();console.log(keyWord);var chinaCode = "156000000";//156000000 默认中国callTdtSearch(keyWord,chinaCode);
}function execQueryByCode(specify){var keyWord = $("#address").val();console.log(keyWord);callTdtSearch(keyWord,specify);
}

         下面还要实现在Leaflet中调用天地图的API访问接口,用于发送查询的实际请求和接收服务器的返回,由于地名有可能返回直接的POI数据,也可能返回各行政区的统计信息,而在统计接口中,还会需要进行下级行政区划的地名信息调用。公共方法定义如下:

/**
* 调用天地图查询
*/
function callTdtSearch(keyWord,specify){var queryUrl = "http://api.tianditu.gov.cn/v2/search?postStr={'keyWord':'"+ keyWord +"','queryType':12,'start':0,'count':10,'specify':'" + specify + "','show':'2'}&type=query&tk="+tdt_client_key;$.ajax({type: "get",url:queryUrl,data: {},success: function(rsData) {// 移除所有图层myLayerGroup.clearLayers();var rsObj = rsData; var loc_info = rsObj.location;var resultType = rsObj.resultType;switch(resultType){case 1 :showPoi(rsObj);break;case 2:showStatistics(rsObj);break;default:console.log("不详");}map.addLayer(myLayerGroup);}});
}

        需要说明的是,这里只展示了两种不同的回调,更多的回调处理请参考resultType来进行扩展。resultType=1表示返回的是poi信息,而resultType=2表示返回的是统计信息,因此在resultType=2的时候可以进行级联调用。首先介绍在展示POI信息时的处理方法:

function showPoi(rsObj){var pois = rsObj.pois;for(var i = 0;i<pois.length;i++){var poi = pois[i];var lonlat = poi.lonlat;var lonlatStr = lonlat.split(",");var marker = L.marker([lonlatStr[1], lonlatStr[0]], {icon: L.divIcon({iconSize: null,className: '',popupAnchor:[5,5],shadowAnchor:[5,5],html: buildHtml(poi,i)})}).addTo(myLayerGroup);}map.fitBounds(myLayerGroup.getBounds());
}function buildHtml(poi,index){var html = "";html += "<div class='marsBlackPanel' style='background:#ff9800;' animation-spaceInDown>";var phone = poi.phone == undefined ? "" : poi.phone;html += "<div class='marsBlackPanel-text' style=''>" + (index +1) + ":" +poi.name  +"&nbsp;&nbsp;" + poi.typeName +"&nbsp;&nbsp;" + phone +  "</div>";html += "<div class='marsBlackPanel-text' style=''>行政区:" +poi.province + "/" + poi.city + "/" + poi.county + "</div>";html += "<div class='marsBlackPanel-text' style=''>地址:" + poi.address +"</div>";html += "</div>";return html;
}

        与POI的数据展示不一样的是,在统计信息中,由于还要具有下钻的功能,因此我们在具体的统计数据的时候在进行事件的绑定,将查询出来的行政区划code传入到新的方法中。绑定处理事件的函数如下:

//点击还可以进行查询
function buildStatHtml(stat,index){var html = "";html += "<div class='marsBlackPanel' style='background:#ff9800;' animation-spaceInDown>";html += "<div class='marsBlackPanel-text' style='' onclick='execQueryByCode("+stat.adminCode+")'>" + (index +1) + "、" +stat.adminName + "(" + stat.count + ")</div>";html += "</div>";return html;
}function showStatistics(rsObj){var statistics = rsObj.statistics.allAdmins;for(var i = 0;i<statistics.length;i++){var stat = statistics[i];var lonlat = stat.lonlat;var lonlatStr = lonlat.split(",");var marker = L.marker([lonlatStr[1], lonlatStr[0]], {icon: L.divIcon({iconSize: null,className: '',popupAnchor:[5,5],shadowAnchor:[5,5],html: buildStatHtml(stat,i)})}).addTo(myLayerGroup);}map.fitBounds(myLayerGroup.getBounds());
}

二、成果介绍

        下面将结合使用前文讲过的Leaflet集成天地图的相关API和具体的集成过程,将神州大地一些有趣的地名跟大家分享。粗略的进行了一个划分,粗分为以下的几类吧:首先介绍令人忍俊不禁的地名有哪些,然后介绍黑地名,其次介绍一些关于数字的地名,最后介绍全国一些比较文艺的地名。

1、令人忍俊不禁的地名

        立马回头公交站,在全国范围内查找“立马回头”,在地图上可以看到位于浙江省杭州市西湖区的灵隐路和双峰路交叉口的一个公交站台:立马回头,请问在公交站台的乘客是否真的要立马回头呢?隐隐感觉这个站台没有车辆经过一样。

据说,当年乾隆皇帝来杭州,从茅家埠去灵隐,走的是现在上茅家埠村西北面的普福岭山路。第一次路过这里时,对道路状况相当不满,本地官员赶紧为皇上修了一条新路。后来,乾隆再次经过普福岭时,路况已大为改观,龙颜大悦,立马驻足,这才有了“立马回头”的说法。就是你坐车到了这里,到底要不要回头呢?

        “六个鸡”,这也是个很有意思的地名,主要是分布在贵州省黔东南苗族侗族自治州凯里市,一共有四个地方包含“六个鸡”这个地名,其中一个是自然村、 一个火车站、另外两个是一个一座桥梁的关键字。

        至于它为什么叫“六个鸡”。有一种说法,是说在古代,贵州的官员来村里征收皇粮,村子里的村民因为刚刚逃难到这里,既拿不出粮食来上交,也没有钱来抵粮,搜遍了全村,也只找到了六只鸡来充数。可见此地确实是穷乡僻壤。而现在,当地培养了大批掌握先进适用农业科技知识和技能的新型农民,发展农村致富之路,贫困的面貌已大为改观。

2、黑地名

        很黑村,很黑村到底有多黑?居然还是宇宙里的很黑村,那不得黑出天际?实际上,“很黑”是蒙古语,意思是高山上的一块儿低洼平地儿,叫肯可儿(kenker)。至于宇宙地,1929年《热河经棚县志》(卷四·区村)记载:莫胡鲁沟牌(现宇宙地镇管辖)出现“蔚州地” 字样,基本与“尉州”吻合。民间对“蔚州” 二字可能有忌讳,疑似“喂粥”的地方,后来改称宇宙地。由此,“尉州”“蔚州地”音译为“宇宙地”应是确信无疑。

         到了这个地方是不是要非常注意,这可是宇宙地很黑。开个玩笑,在乡村应该都是非常淳朴的存在,只是这个地名给大家一个比较幽默的印象。

        关于秃顶子,初看到这个地名的时候,也忍不住跟发量进行了关联,不知道当地人的发量怎么样?当然,这只是我个人的臆想罢了。在黑龙江省哈尔滨市尚志市和五常市就有几个有关于秃顶子的地方。

        当地的乡亲们,请保护好自己的发量哈。确实有点自黑的幽默风格,请大家不对号入座。

        “迷魂阵”,这个地名更有意思,在山东省聊城市有几个迷魂阵村,分别是东迷魂阵村、西迷魂阵村、后迷魂阵村、小迷魂阵村,这么多迷魂阵村,普通的外地人去了是否真的会迷魂呢?

3、数字地名

        “六六大顺”,没成想在地图上还真有这个地名的地点,还是一个钢材城,相比老板在这里一定是事事顺心哈。

        还有一个七八道小菜酒馆,不知道店里是不是真的只有七八道小菜。各位朋友们可以去实地看一看验证一下。

4、文艺地名

        “西湖”,上有天堂,下有苏杭。虽然西湖在杭州是个神一样的存在,但也不用这么多自然村都叫西湖吧,不然外地的朋友问路,这是到底去哪个西湖村呢?

        来云南见证一场“风花雪月”,这里不仅有风花雪月的景点,连面包房都叫这个名字。如果想经历风花雪月,一定要从这里路过一下。 

        如果你离“千古绝唱”景区不是很远,一定要记得去这个景区看看哦。它就在吉林省吉林市的磐石市烟筒镇粗榆村官马溶洞。

三、总结

        以上就是本文的主要内容, 本研究旨在深入挖掘散布在全国各地的趣味地名,通过天地图提供的地理数据基础,精准定位这些地名的位置,获取其周边地理环境、行政区划等多维度信息,为地名的解读与分析提供坚实的地理支撑。同时,借助 LeafLet 强大的地图可视化与交互能力,在网页端构建一个直观、生动的趣味地名探索平台,让用户能够方便快捷地浏览、搜索和了解这些趣味地名及其背后的故事。在这个平台上,用户可以像翻阅一本生动有趣的历史文化画卷一样,穿梭于不同的地域之间,感受各地独特的风土人情与文化魅力。

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

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

相关文章

第6篇:EggJS数据库操作与ORM实践

在Web应用开发中&#xff0c;数据库操作是核心环节之一。EggJS通过集成Sequelize ORM框架&#xff0c;提供了高效、安全的数据库操作方案。本文将深入讲解如何在EggJS中配置MySQL数据库、定义数据模型、优化复杂查询&#xff0c;以及管理数据库迁移与种子数据。 一、MySQL基础配…

法线纹理采样+可视化Shader编辑器

法线贴图&#xff0c;对主纹理凹凸显示 建模原理 法线贴图&#xff1a;切线空间&#xff0c;存储xy切线&#xff0c;映射法线&#xff0c;法线信息存储在切线空间中。 模型是否凹凸&#xff0c;是由模型顶点决定的&#xff0c;现在实现的法线贴图&#xff0c;控制凹凸,实际上是…

OID是什么?

什么是 OID? OID 是 Object Identifier(对象标识符) 的缩写,是SNMP(Simple Network Management Protocol,简单网络管理协议)中用来唯一标识被管理对象(比如设备的某项信息)的一串数字。

STM32 ZIBEE DL-20 无线串口模块

一.配置方法 二.串口中断 u8 i; u16 buf[20],res; u8 receiving_flag 0; // 新增一个标志&#xff0c;用于标记是否开始接收数组 void USART1_IRQHandler(void) {if(USART_GetITStatus(USART1, USART_IT_RXNE) ! RESET) //接收中断{res USART_ReceiveData(USART1);if(receiv…

全感官交互革命:当 AI 大模型学会 “看、听、说、创”

引言&#xff1a;从 “文字对话” 到 “全感官体验”&#xff0c;AI 正在重塑人类认知边界 当 AI 不再局限于文本对话&#xff0c;而是能 “看懂” 图像、“听懂” 语音、“生成” 视频&#xff0c;并将这些模态无缝融合时&#xff0c;一场关于人机交互的革命已然开启。DeepSe…

C++模板知识

目录 引言 一、非类型模板参数 二、类模板的特化 &#xff08;一&#xff09;概念 &#xff08;二&#xff09;函数模板特化 &#xff08;三&#xff09;类模板特化 1. 全特化 2. 偏特化 &#xff08;四&#xff09;类模板特化应用示例 三、模板的分离编译 …

Pillow 移除或更改了 FreeTypeFont.getsize() 方法

w, h self.font.getsize(label) # text width, height AttributeError: FreeTypeFont object has no attribute getsize 在Pillow 项目的变更日志里可以查到哪个版本移除了 getsize() 方法&#xff0c;Pillow仓库&#xff1a; Releases python-pillow/Pillow GitHub 因为…

Matlab自学笔记

一、我下载的是Matlab R2016a软件&#xff0c;打开界面如下&#xff1a; 二、如何调整字体大小&#xff0c;路径为&#xff1a;“主页”->“预设”->“字体”。 三、命令行窗口是直接进行交互式的&#xff0c;如下输入“3 5”&#xff0c;回车&#xff0c;就得到结果“…

VR汽车线束:汽车制造的新变革

汽车线束&#xff0c;作为汽车电路网络的主体&#xff0c;宛如汽车的 “神经网络”&#xff0c;承担着连接汽车各个部件、传输电力与信号的重任&#xff0c;对汽车的正常运行起着关键作用。从汽车的发动机到仪表盘&#xff0c;从传感器到各类电子设备&#xff0c;无一不是通过线…

目标检测YOLO实战应用案例100讲-基于多级特征融合的小目标深度检测网络

目录 知识储备 基于多级特征融合的小目标深度检测网络实现 一、环境配置 二、核心代码实现 1. 多级特征融合模块(models/fpn.py ) 2. 主干网络(models/backbone.py ) 3. 检测头(models/detector.py ) 三、完整网络架构(models/net.py ) 四、训练代码(train.p…

【云原生】基于Centos7 搭建Redis 6.2 操作实战详解

目录 一、前言 二、Redis 6.2 安装过程 2.1 下载安装包 2.2 安装包解压 2.3 安装包编译 2.3 安装 2.4 启动redis 2.4.1 前台启动&#xff08;不推荐&#xff09; 2.4.2 后启动&#xff08;推荐&#xff09; 2.4.3 关闭redis服务 2.4.4 设置客户端连接 三、写在最后 …

云计算-容器云-服务网格

服务网格:创建VirtualService(3分) ​ 将Bookinfo应用部署到default命名空间下,为Bookinfo应用创建一个名为reviews的VirtualService,要求来自名为Jason的用户的所有流量将被路由到reviews服务的v2版本。(需要用到的软件包:ServiceMesh.tar.gz) # 上传解压 tar -xf Se…

【Res模块学习】结合CIFAR-100分类任务学习

初次尝试训练CIFAR-100&#xff1a;【图像分类】CIFAR-100图像分类任务-CSDN博客 1.训练模型&#xff08;MyModel.py&#xff09; import torch import torch.nn as nnclass BasicRes(nn.Module):def __init__(self, in_cha, out_cha, stride1, resTrue):super(BasicRes, sel…

爱胜品ICSP YPS-1133DN Plus黑白激光打印机报“自动进纸盒进纸失败”处理方法之一

故障现象如下图提示&#xff1a; 用户的爱胜品ICSP YPS-1133DN Plus黑白激光打印机在工作过程中提示自动进纸盒进纸失败并且红色故障灯闪烁&#xff1b; 给出常见故障一般处理建议如下&#xff1a; 当您的爱胜品ICSP YPS-1133DN Plus 黑白激光打印机出现“自动进纸盒进纸失败”…

Flinkcdc 实现 MySQL 写入 Doris

Flinkcdc 实现 MySQL 写入 Doris Flinkcdc 实现 MySQL 写入 Doris 一、环境配置 Doris&#xff1a;3.0.4 JDK 17 MySQL &#xff08;业务数据库&#xff09;&#xff1a;5.7 MySQL&#xff08;本地数据库&#xff09;&#xff1a;5.7 Flink&#xff1a;flink-1.19.1 flinkc…

【Linux庖丁解牛】—环境变量!

目录 1. 环境变量 1.1 概念介绍 1.2 命令行参数 1.3 一个例子&#xff0c;一个环境变量 1.4 认识更多的环境变量 1.5 获取环境变量的方法 a. 指令操作 b. 代码操作 1.6 理解环境变量的特性 a.环境变量具有全局特性 b.补充两个概念(为后面埋一个伏笔) 1. 环境变量 …

LangChain4j +DeepSeek大模型应用开发——7 项目实战 创建硅谷小鹿

这部分我们实现硅谷小鹿的基本聊天功能&#xff0c;包含聊天记忆、聊天记忆持久化、提示词 1. 创建硅谷小鹿 创建XiaoLuAgent package com.ai.langchain4j.assistant;import dev.langchain4j.service.*; import dev.langchain4j.service.spring.AiService;import static dev…

普通 html 项目也可以支持 scss_sass

项目结构示例 下载vscode的插件Live Sass Compiler 自动监听编译scss 下载插件Live Server 用于 web 服务器&#xff0c;打开 html 文件到浏览器&#xff0c;也可以不用这个&#xff0c;自己用 nginx 或者宝塔其他 web 工具 新建一个 index.scss打开&#xff0c;点击 vscode 底…

网工_IP协议

2025.02.17&#xff1a;小猿网&网工老姜学习笔记 第19节 IP协议 9.1 IP数据包的格式&#xff08;首部数据部分&#xff09;9.1.1 IP协议的首部格式&#xff08;固定部分可变部分&#xff09; 9.2 IP数据包分片&#xff08;找题练&#xff09;9.3 TTL生存时间的应用9.4 常见…

SQL语句练习 自学SQL网 在查询中使用表达式 统计

目录 Day 9 在查询中使用表达式 Day 10 在查询中进行统计 聚合函数 Day 11 在查询中进行统计 HAVING关键字 Day12 查询执行顺序 Day 9 在查询中使用表达式 SELECT id , Title , (International_salesDomestic_sales)/1000000 AS International_sales FROM moviesLEFT JOIN …