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

制作网站升上去百度网络营销

制作网站升上去,百度网络营销,南京做电商网站的公司简介,开网页速度慢目录 前言 一、空间数据简介 1、全球国家信息表 2、机场信息表 3、国家机场检索实现 二、SpringBoot后台实现 1、模型层实现 2、控制层实现 三、WebGIS可视化实现 1、Leaflet界面实现 2、国家及其机场可视化成果 3、全球机场数量排行榜 四、总结 前言 新春佳节即将…

目录

前言

一、空间数据简介

1、全球国家信息表

2、机场信息表

3、国家机场检索实现

二、SpringBoot后台实现

1、模型层实现

2、控制层实现

三、WebGIS可视化实现

1、Leaflet界面实现

2、国家及其机场可视化成果

3、全球机场数量排行榜

四、总结


前言

        新春佳节即将来临,辛苦了一年,很多人都已经在准备打包行李,即将踏上回家的路程。生活不易,在此预祝大家春节愉快,全家兴趣。随着时代的进步以及交通方式的变革,现如今人们出行的方式也是多种多样,以前传统的火车,在没有高铁的年代,在春运开启时,各个火车站的售票点都是人头攒动,那一张小小的车票,毕竟联系着归家的思念。绿皮车是多少游子的归家主要交通方式,除了火车,还有私家汽车,还有一些云贵地区的打工人,他们选择和妻子一起骑摩托车回家,为了节约一些交通的成本。想想以前,航空出行绝对是大多数人轻易不会选择的出行方式,不仅其成本较高,同时航空出行所能携带的行李较少。现在我们国家的机场与铁路、汽车站的关联越来越紧密,有的更是形成了一个结合体,比如上海的虹桥机场和虹桥高铁站就在一起,不论是通过高铁出行还是飞机出行,在这个综合体里面也是可以实现快速的换乘。而其它的城市,在传统的交通出行里面,大多选择的是机场大巴,或者打的前往,现在很多都修建了地铁,还有的地方有磁悬浮,比如运行在湖南长沙南高铁站到长沙黄花国际机场的中低速磁悬浮专线,除了有专门的磁悬浮以外,还有地铁6号线直通机场航站楼。这是我国的机场交通及其联系紧密程度的一个缩影。下图是我国的机场空间分布情况示意图:

        对于我国和外国的联系而言,航空作为一种快速便捷的交通方式,比航航更加人性化,在人员的流动当中具有先天的优势。相对与货轮或者商船在茫茫的大洋上的慢慢航程,乘坐飞机将大大的加快了国与国之前的旅程。因此,不论是研究国内的航空布局或者飞行格局、交通方式优化,还是研究国内外的联系程度,在疫情的时候,对相关的涉疫国家进行及时的管控,对于切断疫情的传播有非常大的帮助。因此,研究世界各国的机场规模及空间布局也是一个重要的课题。虽然在之前的系列博客中,曾经对飞行格局以及机场的数据处理进行一定的介绍和讲解,如:基于SpringBoot和PostGIS的全球机场入库实践和基于SpringBoot和Leaflet的全球机场空间分布可视化实战,在这两篇文章中,我们侧重是讲了数据的采集和数据的入库、检索、空间可视化,但是缺乏从国家这个维度来进行展示和分析。

        有一些朋友通过留言和其他方式进行联系,表示希望可以结合国家信息和机场信息来进行综合的展示实现讲解。本文重点讲解如何基于SpringBoot和PostGIS来进行国家和所属机场的WebGIS可视化实践。通过本文,您不仅可以学习到如何进行SpringBoot和PostGIS进行WebGIS开发,同时可以从全球的视角来观察国家的航空格局,下一步,我们可以结合飞行网站的航班数据,进一步构建全球视角下的航空关联,为研究国际及区域的联系度进行准确的评估和支撑。

一、空间数据简介

        本节重点介绍空间数据涉及的两张表,第一张是全球国家信息表,第二张是全球机场信息表。国家信息表与机场信息表是一对多的关系。这两表在之前的博客中虽然有所提及,但是为了第一次看博客的朋友们对空间数据表有一定的认识,这里仍然占用一点篇幅来进行讲解,如果看过期之前的博客内容的朋友可以看剩下的其它内容。

1、全球国家信息表

        全球国家信息表主要包含:英文全称、英文简称、最简名称、中文全称、中文简称、所属大洲、大洲详情、空间Geom等八个字段。

        使用SQL语句来查询一下数据:

select * from biz_world_country;

         在客户端中可以看到以下返回:

2、机场信息表

        机场信息表主要包含:IATA三字码、中文名称、英文名称、经度-wgs84、纬度-wgs84、城市名称、国家英文简称、国家/地区中文、Geom空间字段信息。其表结构如下图所示:

        同样使用SQL语句查询机场信息可以看到以下信息,

        关于国家信息以及机场信息,大家可以在互联网上找到,需要注意的是,对于国家和地区的矢量边界数据,涉及一些特殊地区的,请使用标准地图,自己学习使用无关,不可用于商业。 

3、国家机场检索实现

        在空间中进行数据的包含查询,一般采用空间函数st_contains来进行,虽然在之前的机场信息表中预留了国家信息,但是该字段我们仅用来进行展示使用,在进行空间包含查询时,以两张空间表的Geom字段作为关联字段。查询的SQL语句如下:

select mb.* from biz_world_country tc,biz_global_airport_info mb 
where st_contains(tc.geom, mb.geom) and tc.pk_id = 1843094044926840833;

        执行上述的语句之后,在数据库客户端中可以看到如下的执行结果:

        可以看到,我国的机场数量已经纳入到数据库中的有317条(数据来源于互联网分享),如有不准,还请各位私信联系。 关于其它国家的机场数量,这列暂且不表,最后我们会对全球的航空机场数量进行一个排名。以上就是本节的空间数据的简介。希望对大家理解有所帮助。

二、SpringBoot后台实现

        本节将详细讲解如何使用SpringBoot进行后台功能的实现,主要包含两个方面的内容。第一个是模型层的实现,第二个是控制层的实现。

1、模型层实现

        与上一节介绍的空间信息表对应,模型层也包含两个方面的内容。即全球国家实体类以及数据库操作Mapper类、机场实体类和数据库操作Mapper类。其主要内容如下图中的思维导图所示:

         在国家信息模型与机场信息模型中,信息实体指的就是实体类,与对应的空间数据表拥有逐一对应的关系,而数据操作实体主要是基于实体类的数据操作。比如数据的新增、修改、查询检索等。在国家的信息检索中,需要提供一个按照国家中文简称的查询,以及根据国家id返回其对应的国家空间范围GeoJSON数据方法。如下表所示:

序号方法说明
1TableDataInfo list(WorldCountries wCountry)根据条件查询国家分页列表
2AjaxResult getGeojson(@PathVariable("id") Long id)根据id查询对应国家GeoJSON

        与国家Mapper操作实体一样的是,在机场Mapper实体也需要对应的操作方法。

序号方法说明
1GlobalAirportInfo findGeoJsonById(@Param("id")Long id)根据id查询对应机场GeoJSON
2List<GlobalAirportInfo> findAirportListByCountryId(@Param("countryId") Long countryId,@Param("name") String name)根据国家id和机场名称查询满足条件的机场列表

        来看下具体的Java实现代码,这里以GlobalAirportInfoMapper.java为例:

package com.yelang.project.transportation.flight.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yelang.project.transportation.flight.domain.GlobalAirportInfo;
public interface GlobalAirportInfoMapper extends BaseMapper<GlobalAirportInfo>{static final String FIND_GEOJSON_SQL="<script>"+ "select st_asgeojson(geom) as geomJson from biz_global_airport_info "+ "where pk_id = #{id} "+ "</script>";@Select(FIND_GEOJSON_SQL)GlobalAirportInfo findGeoJsonById(@Param("id")Long id);static final String FIND_AIRPORTLIST_BY_COUNTRYID_SQL = "<script>"+ "select mb.* from biz_world_country tc,biz_global_airport_info mb "+ "where st_contains(tc.geom, mb.geom) and tc.pk_id = #{countryId} "+ "<if test='null != name'> and name_zh like concat('%', #{name}, '%')</if>"+ "</script>";@Select(FIND_AIRPORTLIST_BY_COUNTRYID_SQL)List<GlobalAirportInfo> findAirportListByCountryId(@Param("countryId") Long countryId,@Param("name") String name);
}

2、控制层实现

        控制层是对外提供web服务的核心处理类,所有与外部交互的方法都将定义在这一层。对于需要展示国家及其机场的列表而言,在我们的界面上,需要同时展示两个列表,有两个查询条件,需要展示不同的GeoJSON数据,还需要进行关联查询。比如机场的信息列表,在切换国家后,需要进行及时的改变。关于国家信息管理的API来说,比较简单,这里将机场信息接口的API开发进行示例说明。

/*** - 获取机场信息列表* @param * @return
*/
@PostMapping("/allairport")
@ResponseBody
public AjaxResult allairport(Long countryId){List<GlobalAirportInfo> list = airportInfoService.findAirportListByCountryId(countryId,null);AjaxResult ar = AjaxResult.success();ar.put("data", list);return ar;
}
/*** 	分页获取国家机场信息列表
*/
@RequiresPermissions("trans:flight:airportinfo:countrymap:pagelist")
@PostMapping("/pagelist/bycountry")
@ResponseBody
public TableDataInfo databycountry(Long countryId,String airportName){startPage();List<GlobalAirportInfo> list = airportInfoService.findAirportListByCountryId(countryId,airportName);return getDataTable(list);
}

        上述的代码中,对于机场的信息列表和分页列表,为了方便,我们使用两个接口来进行实现,其实可以做合并实现,或者将数据的展示转换成WMS或者其它的矢量瓦片底图展示。这样的话就可以大大的减少系统接口的冗余,在大规模的数据场景中也能提高访问性能。 以上就是SpringBoot后台的实现。

三、WebGIS可视化实现

        Web界面作为应用层,是我们系统的门户,系统所有的功能都需要使用界面的形式为用户提供服务。本节将重点介绍如何在WebGIS中来实现相应的国家和机场信息的展示。在WebGIS当中,我们需要实现的功能有,使用siderbar进行国家和机场信息的列表展示,同时支持两个列表的信息查询,国家中文名称以及机场中文名称的检索;支持国家和机场信息的联动。即国家信息切换后,机场信息列表也会自动同步切换。

1、Leaflet界面实现

        为了方便的在界面上进行搜索和展示,我们将使用siderbar来分别展示国家信息列表和机场信息列表。左边的siderbar展示国家信息,右边的siderbar展示机场信息。在左边的国家列表点击机场按钮,右边的机场列表将自动刷新,重新请求后台,实现机场信息的查询。关于如何在若依中进行双表格查询参数的绑定和实现,请参考之前的博客。为了在界面中最大的展示地图界面,我们使用点击机场信息后,缩进国家信息表格的方式。关键代码如下:

function initSidebar(){//初始化sidebar页面sidebar = L.control.sidebar('sidebar', {position: 'left'}).addTo(mymap);//默认sidebar打开,并展示一个tab页sidebar.open();$("#xz_info").addClass("active");$("#home").addClass("active");//初始化行政区划表格initWorldCountryTable();rightSidebar = L.control.sidebar('sidebar-right', {position: 'right'}).addTo(mymap);initAirportTable();
}

        对于在Leaflet当中进行GeoJSON数据的展示以及地图的展示,在此不再赘述,如果需要具体的代码的,可以私信联系,可以交流。 

2、国家及其机场可视化成果

        在实现了数据WebGIS展示之后,我们来看下不同的国家的机场信息分布情况,以此来检验一下系统的实现是否满足了我们的预期。

        美国及机场分布概况图

         美国阿拉斯加地区的机场分布示意图

南非及其机场分布示意图 

巴西及其机场分布示意图

印度以及机场分布示意图 

         以上就是一些国家及其机场的分布示意图,当然这些国家仅仅是一些列举的国家,如果有大家感兴趣又没有展示出来的,可以私信,将空间分布示意图发给大家。

3、全球机场数量排行榜

        最后我们来看一下全球国家机场的数量排行榜,这里我们取TOP10的排名列表展示。查询SQL学下所示,实现的逻辑就是将国家和机场细信息进行关联查询,同样是采用空间包含的函数,然后根据国家进行分组,求解机场的数量。查询SQL如下:


select distinct count(1),max(tc.full_chinese_name) cname from biz_world_country tc,biz_global_airport_info mb 
where st_contains(tc.geom, mb.geom)   group by tc.pk_id order by count desc limit 10;

        在客户端中可以看到如下输出:

count	cname
2112	美利坚合众国
597	    澳大利亚
484	    加拿大
354	    巴西
333	    巴布亚新几内亚
317	    中华人民共和国
204	    俄罗斯联邦
195	    印度尼西亚共和国
151	    哥伦比亚
141	    印度

        从上表可以看出,美国的机场数量是一骑绝尘,名列榜首。排在第二名的是澳大利亚,第三名是加拿大,第四名是巴西。 

四、总结

        以上就是本文的主要内容,本文重点讲解如何基于SpringBoot和PostGIS来进行国家和所属机场的WebGIS可视化实践。通过本文,您不仅可以学习到如何进行SpringBoot和PostGIS进行WebGIS开发,同时可以从全球的视角来观察国家的航空格局,下一步,我们可以结合飞行网站的航班数据,进一步构建全球视角下的航空关联,为研究国际及区域的联系度进行准确的评估和支撑。行文仓促,定有许多不足之处,如有不足,还恳请各位专家博主在评论区留言指出,万分感谢。

http://www.ds6.com.cn/news/27587.html

相关文章:

  • wordpress撰写邮箱seo优化常识
  • 快速微信网站建设青岛网络工程优化
  • 个人网站免费做推广服务公司
  • 石首做网站网络推广服务商
  • 建设移动门户网站关键词智能调词工具
  • 网站建设公司果动c市场调研公司
  • 国内餐饮设计网站建设seo技术软件
  • wordpress 互动插件seo查询官网
  • 网站备案步骤我是做推广的怎么找客户
  • 常州专业房产网站建设故事型软文广告
  • 傻瓜式大型网站开发工具苏州网络推广seo服务
  • 政务公开做的好的网站有哪些微信朋友圈广告
  • 农林牧渔行业网站建设今日军事新闻
  • 建设银行网站安全分析百度网盘搜索引擎盘多多
  • dedecms和wordpress廊坊seo排名公司
  • 网站建设价格北京百度总部电话
  • 全面的网站制作网络营销是什么工作主要干啥
  • 做网站资料互联网营销师培训费用是多少
  • 如何利用谷歌云做自己的网站线上营销工具
  • 重庆推广一个网站宁波seo网站服务
  • 公司网站域名注册百度指数第一
  • 网站建设详细免费seo视频教学
  • 优化网站和网站建设常用于网站推广的营销手段是
  • 网站开发 科技百度自动点击器怎么用
  • asp网站开发模板个人网站建设
  • 自己怎么做直播网站在线外链工具
  • 开发公司资质分几个等级网站优化靠谱seo
  • 动态网页网站互联网项目
  • 河南省建设厅注册中心网站首页数据分析培训机构哪家好
  • 长春做商业平台网站深圳关键词推广优化