基于SpringBoot和PostGIS的全球首都信息管理设计与实现
目录
前言
首都,一个国家的政治、文化和经济中心,是国家的心脏,也是其对外展示的窗口。它们不仅是国家权力的象征,更是全球交流与合作的重要平台。在这个全球化的时代,首都的作用愈发显著,它们不仅是国内政策的制定地,也是国际关系和全球治理的关键节点。首都,作为国家的象征,承载着国家的历史与文化。从北京的紫禁城到华盛顿的白宫,从巴黎的埃菲尔铁塔到莫斯科的克里姆林宫,每一座首都都有其独特的故事和魅力。它们不仅是历史的见证者,也是现代文明的创造者。首都的建筑风格、城市规划和文化活动,无一不反映出一个国家的精神面貌和发展理念。
在全球政治舞台上,首都扮演着至关重要的角色。它们是国家领导人会晤、国际会议举办的地方,是外交政策的发源地。在这里,各国领导人就全球性问题进行磋商,寻求合作与解决方案。首都的决策往往影响着世界的未来走向,从和平协议的签署到经济合作的达成,首都是这些重大事件的见证地。经济上,首都往往是国家的经济引擎。它们集中了国家的主要金融机构、企业总部和创新中心,是经济发展的驱动力。首都的经济活力不仅影响着本国的繁荣,也对全球经济产生深远影响。例如,纽约的华尔街、伦敦的金融城、东京的丸之内,这些地区不仅是本国经济的心脏,也是全球金融市场的重要组成部分。
文化上,首都是国家文化的汇聚地。博物馆、剧院、艺术画廊和学术机构在这里云集,它们保存和传播着国家的文化遗产,同时也是国际文化交流的平台。首都的文化活动和节日庆典,如北京的春节、里约热内卢的狂欢节、柏林的电影节,不仅丰富了市民的生活,也吸引了世界各地的游客和文化爱好者。然而,首都也面临着诸多挑战。随着城市化进程的加快,首都面临着交通拥堵、环境污染、住房紧张等问题。如何在保持经济增长的同时,实现可持续发展,是每个首都都需要面对的问题。在这个多元化和互联互通的世界中,首都的作用越来越重要。它们不仅是国家的心脏,也是连接世界的桥梁。通过研究全球首都,我们可以更好地理解国家之间的互动,以及它们在全球舞台上的角色和影响。
在全球一体化的今天,研究全球首都的时空分布以及空间位置,同时加上经济和人口的分析就显得非常有必要。博客主要讲解如何在SpringBoot和PostGIS的首都信息管理,首先讲解结合全球城市信息和全球国家信息进行空间数据库表的建模,然后讲解如何在SpringBoot中的业务逻辑管理设计与实现,最后给出当前的数据整理出来的全球首都信息成果列表。如果您对此比较有兴趣,不妨来这里看看。
一、首都空间表的设计
要想实现全球首都的信息管理,需要与之前我们介绍过的两类数据进行管理。第一个是全球国家的信息,第二个是全球的城市信息。一个国家有许多的城市,它与城市的关系是一对多的关系。因此,这里的首都信息,其实是关联我们的国家信息与城市信息,为了能支持迁都这种特殊的业务,因此我们就涉及出一个中间表,并且能标记出当前城市的使用标识,以此来标识当前城市是否作为首都在使用。本节就将重点介绍这三张表以及空间关系表的设计与实现。
1、三张空间表的结构
为了让第一次看到这篇博客的朋友不至于太突兀,这里还是打算把三张表的主要字段和联系给大家说明一下。首先第一张是国家信息表,作用是存储全球的国家基本信息以及国家的矢量范围。它的表结构如下:
它包括基本的中英文全称、简称等信息、所属大洲以及空间字段信息。
第二张表是全球的城市信息,这里采用的OSM分享的数据,数据总条数大约在7342,从全球的范围来说,基本包含了主要的城市,同时这张表的字段非常多,有人口的数据,不同语种的城市名称信息。
这张表的字段大约有130多列,当然,在实际的业务中,我们是可以根据一些业务的维度来进行拆分,比如可以将人口拆成多行,这样就可以极大的避免宽度的爆炸。当然,这是在数据库设计时究竟是采用高表还是宽表的设计方法。大家可以根据实际业务来进行抉择。
每个国家的首都,首先也是一个城市,因此,首都必然是全球这么多城市集合中的一个子集,所以我们可以建立一张关系表也就是中间表,如前文所提的,将国家id信息和城市id信息关联起来。以此来进行信息的串联。中间表的结构如下:
在这张中间关系表中,分别有两个字段用来关联国家信息和城市信息,还有一个开始日期和结束日期。主要的作用就是有一些国家在建设过程中曾经进行过迁都,因此我们将首都信息进行合理的管理,也为后续的分析和可视化打下良好的基础。
二、SpringBoot后台管理的设计与实现
在完成空间数据建模及物理表的设计与实现之后,就可以根据物理表来进行实际API接口的开发,这里采用MVC设计模式来进行实现。主要讲解如何使用SpingBoot来进行后台管理功能的设计与实现。
1、模型层的实现
模型层包含两个方面的内容,第一个是数据库操作实体,比如数据库物理表对应的实体对象。第二个是就是基于物理实体对象的Mapper对象,也是ORM的主要对象。物理表的对应实体代码如下:
再定义了物理表的实体类之后,我们来创建数据操作对象的实现,这里主要是实现自定义的城市信息的查询,这里基于Mybatis-plus来实现内置SQL的实现模式,关键代码如下:
以上就是模型层的设计与代码实现。
2、业务层及控制层实现
有了模型层之后,我们采用自底向上的方法进行建设。接下来进行业务层及控制层的实现,其中业务层是我们的核心,这是实际代码的核心部分。为了保证一个城市,最多只能属于一个国家的首都, 因此在进行城市管理和构建时,我们需要保证城市的唯一性。这里我们结合jquery-validate和remote模式来进行讲解。其它的业务层实现比较简单,仅包括数据的插入、修改、删除、查询等,这里还需要定义一个检查数据重复的方法。代码如下:
控制层作为接收前端提交的请求的地方,这里定义以下的接口列表用来处理用户的请求。
序号 | 方法名称 | 说明 |
1 | String capital(@PathVariable("countryId") Long countryId,ModelMap mmap) | 跳转管理界面 |
2 | TableDataInfo list(@PathVariable("countryId") Long countryId) | 查询首都数据 |
3 | String add(@PathVariable("countryId") Long countryId,ModelMap map) | 跳转新增界面 |
4 | AjaxResult addSave(CountryCapital capital,String startTimeStr,String endTimeStr) | 保存数据 |
5 | String checkCapitalUnique(CountryCapital capital) | 重复检查 |
6 | String edit(@PathVariable("id") Long id, ModelMap mmap) | 跳转编辑页面 |
7 | AjaxResult editSave(CountryCapital capital,String startTimeStr,String endTimeStr) | 保存编辑数据 |
8 | AjaxResult remove(String ids) | 删除信息 |
9 | String pplaces() | 跳转城市列表 |
10 | TableDataInfo list(Ne10mPopulatedPlaces places) | 查询城市信息 |
上面给出了控制接口的信息,对于详细的方法实现不进行赘述,代码比较简单,这里给出保存的一个数据处理细节,即将字符串转换成时间。下面分享一种处理办法,在方法中传入字符串,然后将字符串转为时间,具体代码如下:
当然为了保证数据的有效性,对于城市定都的开始和结束时间,是可以填写空值的。因此这里如果填入空值,对输入值就可以不进行处理。
三、前端的实现与成果可视化
在后台实现了API控制接口之后,接下来第三步就是实现处理的界面,毕竟前端界面需要进行业务的实现。这里的实现比较简单,在进行首都的管理时以新增或者编辑为例,我们再打开城市选择列表,勾选城市信息后,再将关系保存到后台,最终实现城市和国家的首都关系建立。
1、新增数据的保存
在我们的期望当中,我们需要打开一个全球城市的查询列表窗口,用户可以在这个列表窗口中进行城市信息查询,然后勾选后关闭窗口,同时根据选择的结果填充到隐藏的表单字段上,业务逻辑代码如下:
编辑和新增的业务处理逻辑是差不多的,这里不再进行赘述。需要注意的是,在编辑过程中,需要对首都信息进行处置话,这里分享一些初始化的便捷代码。
2、首都的实际管理成果
在经过上述的开发之后,我们就可以进行首都信息的管理,这里我们将按照场景来分别展示首都的添加、删除、编辑等操作。
首先在这个界面中点击“首都”按钮,然后打开首都管理列表,以阿富汗为例,打开后可以看到以下的信息:
这说明我们已经配置好了一条城市信息,如果想要增加城市或者编辑,都是可以进行信息的变更的。
选择好目标城市后,点击确认,然后在外面的窗口中点击确定按钮实现城市的管理
3、全球首都信息
下面分享个人管理查询得到的全球首都信息,将信息都维护好之后。我们就可以使用SQL语句来查询首都信息。查询的SQL语句如下所示:
在数据库客户端软件中可以查询到以下结果:
到此说明我们的城市信息已经全部配置完,将完整的信息分享给大家,如果有问题请及时联系。
四、总结
以上就是本文的主要内容,博客主要讲解如何在SpringBoot和PostGIS的首都信息管理,首先讲解结合全球城市信息和全球国家信息进行空间数据库表的建模,然后讲解如何在SpringBoot中的业务逻辑管理设计与实现,最后给出当前的数据整理出来的全球首都信息成果列表。行文仓促,定有许多的不足之处,如有不足,在此还恳请各位专家朋友在评论区不吝之处,不胜感激。
- 点赞
- 收藏
- 关注作者
评论(0)