基于SpringBoot和Leaflet的全国省会城市风景区分布分析实践

news2024/9/20 14:59:16

目录

前言

一、空间数据表的设计与实现

1、城市信息数据表

 2、风景区信息表设计与实现

3、数据库查询应用 

二、WebGIS程序设计与实现

1、使用@select中转义字符的使用

2、Leaflet空间信息展示

三、省会城市风景区可视化成果展示

1、哈尔滨市风景区分析

 2、南京市风景区分析

3、西安市风景区分析 

4、昆明市风景区分析

四、总结


前言

        2024年暑假过半,相信很多家长都会带小朋友出去看世界。或许此时此刻也有家长带着孩子在路上吧。读万卷书,行万里路,美好的风景等着你去发现,等着你去探索。世界很大,中国也很多。全国34个省会城市,在这34个省会城市中,每个省会城市又有多少美丽的风景等着去发现。今天我们就来看看全国这么多的省会城市中,每个省会城市的风景区分布情况。看看你所在的省有哪些风景区呢?

        本文以全国省会城市风景区分布为例,重点讲解如何在SpringBoot当中,结合Leaflet框架来进行城市风景区分布分析。首先对如何查询全国各省的省会城市进行SQL的查询管理与实践,然后介绍如何在PostGIS空间数据库中进行城市关联分析,其次结合SpringBoot和Leaflet的实例代码来讲解,最后给出不同省会城市的风景区分布成果展示。通过本文,您可以深入掌握如何在SpringBoot中开发WebGIS应用,深入掌握空间分析的方法。

一、空间数据表的设计与实现

        本节将重点讲解在PostGIS数据库中设计空间数据表,为了实现省会城市查询与省会城市和风景区的关联分析,这里需要用到两种表。重点介绍如何查询出省会城市,以及如何根据省会城市查询对应的风景区列表信息等。空间数据表的设计与实现是风景区分布可视化分析的基础。

1、城市信息数据表

        为了照顾没有仔细看过博主之前博文的朋友,这里将博文中涉及的相关表进行简要介绍。城市信息表不仅用来记录省会城市,它是我们的城市运行基础,包括了全国的主要城市信息。它的表结构和数据库表的管理语句如下:

       城市信息表的管理语句如下:

CREATE TABLE "public"."biz_city" (
  "id" int8 NOT NULL,
  "province_code" varchar(16) COLLATE "pg_catalog"."default" NOT NULL,
  "province_name" varchar(64) COLLATE "pg_catalog"."default" NOT NULL,
  "city_code" varchar(16) COLLATE "pg_catalog"."default" NOT NULL,
  "city_name" varchar(512) COLLATE "pg_catalog"."default" NOT NULL,
  "type" varchar(32) COLLATE "pg_catalog"."default",
  "geom" "public"."geometry",
  CONSTRAINT "pk_biz_city" PRIMARY KEY ("id")
);

COMMENT ON COLUMN "public"."biz_city"."id" IS '主键ID';
COMMENT ON COLUMN "public"."biz_city"."province_code" IS '省份编码';
COMMENT ON COLUMN "public"."biz_city"."province_name" IS '省份名称';
COMMENT ON COLUMN "public"."biz_city"."city_code" IS '市级编码';
COMMENT ON COLUMN "public"."biz_city"."city_name" IS '实际名称';
COMMENT ON COLUMN "public"."biz_city"."type" IS '类型';
COMMENT ON COLUMN "public"."biz_city"."geom" IS 'geom';

        为了提高按照城市代码和省份代码查询相关数据的性能,我们增加了两个普通索引,创建索引的SQL语句如下:

CREATE INDEX "idx_biz_city_citycode" ON "public"."biz_city" USING btree (
  "city_code" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
);

CREATE INDEX "idx_biz_city_pcode" ON "public"."biz_city" USING btree (
  "province_code" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
);

        在数据库中执行查询语句可以看到库中的数据如下:

        以上就是城市信息表的表结构和示例数据。

 2、风景区信息表设计与实现

        同样的,这里也直接提供风景区信息表的字段截图以及物理sql结构。

        风景区信息表的表结构如下:

 

CREATE TABLE "public"."biz_scenic_spot" (
  "id" int8 NOT NULL,
  "name" varchar(255) COLLATE "pg_catalog"."default",
  "level" varchar(4) COLLATE "pg_catalog"."default",
  "province" varchar(255) COLLATE "pg_catalog"."default",
  "city" varchar(255) COLLATE "pg_catalog"."default",
  "area" varchar(255) COLLATE "pg_catalog"."default",
  "address" varchar(255) COLLATE "pg_catalog"."default",
  "evaluation_time" varchar(255) COLLATE "pg_catalog"."default",
  "publish_time" varchar(255) COLLATE "pg_catalog"."default",
  "lng_gcj02" varchar(30) COLLATE "pg_catalog"."default",
  "lat_gcj02" varchar(30) COLLATE "pg_catalog"."default",
  "lng_bd09" varchar(30) COLLATE "pg_catalog"."default",
  "lat_bd09" varchar(30) COLLATE "pg_catalog"."default",
  "lng_wgs84" varchar(30) COLLATE "pg_catalog"."default",
  "lat_wgs84" varchar(30) COLLATE "pg_catalog"."default",
  "geom" "public"."geometry",
  "publish_link" varchar(255) COLLATE "pg_catalog"."default",
  CONSTRAINT "pk_biz_scenic_spot" PRIMARY KEY ("id")
);

CREATE INDEX "idx_biz_scenic_spot_geom" ON "public"."biz_scenic_spot" USING gist (
  "geom" "public"."gist_geometry_ops_2d"
);
COMMENT ON COLUMN "public"."biz_scenic_spot"."id" IS '主键';
COMMENT ON COLUMN "public"."biz_scenic_spot"."name" IS '景区名称';
COMMENT ON COLUMN "public"."biz_scenic_spot"."level" IS '景区级别';
COMMENT ON COLUMN "public"."biz_scenic_spot"."province" IS '所属省份';
COMMENT ON COLUMN "public"."biz_scenic_spot"."city" IS '所属城市';
COMMENT ON COLUMN "public"."biz_scenic_spot"."area" IS '所属区县';
COMMENT ON COLUMN "public"."biz_scenic_spot"."address" IS '地址';
COMMENT ON COLUMN "public"."biz_scenic_spot"."evaluation_time" IS '评定时间';
COMMENT ON COLUMN "public"."biz_scenic_spot"."publish_time" IS '发布时间';
COMMENT ON COLUMN "public"."biz_scenic_spot"."lng_gcj02" IS 'lng_GCJ02';
COMMENT ON COLUMN "public"."biz_scenic_spot"."lat_gcj02" IS 'lat_GCJ02';
COMMENT ON COLUMN "public"."biz_scenic_spot"."lng_bd09" IS 'lng_BD09';
COMMENT ON COLUMN "public"."biz_scenic_spot"."lat_bd09" IS 'lat_BD09';
COMMENT ON COLUMN "public"."biz_scenic_spot"."lng_wgs84" IS 'lng_WGS84';
COMMENT ON COLUMN "public"."biz_scenic_spot"."lat_wgs84" IS 'lat_WGS84';
COMMENT ON COLUMN "public"."biz_scenic_spot"."publish_link" IS '发布链接';
COMMENT ON TABLE "public"."biz_scenic_spot" IS '全国风景区信息表';

3、数据库查询应用 

        要想实现之前提出的省会城市风景区信息列表的可视化,需要分两步来实现。第一步是要查询出省会城市信息列表,第二个是执行空间计算函数,实现指定的城市对应的风景区信息列表查询。本文涉及的省会城市中,我国台湾省暂时不记入统计范围内。在大陆的行政区划管理中,以湖南省为例,湖南省的所有地市的查询语句如下:

select * from biz_city where province_name = '湖南省';

        可以看到,湖南省的省级行政代码是430000,而省会城市是430100。可以看到其它的省会城市也是这个规律。省会城市的city_code是省份province_code的前三位+100。因此我们可以构建出全国的省会城市查询sql:

select ta.id,ta.province_code,ta.province_name,ta.city_name,ta.city_code,ta.type from ( select * from biz_city where province_code = city_code union select * from biz_city where province_code <> city_code and city_code = left(province_code, 3) || '100' ) ta where 1 = 1 and ta.type <> '不统计' order by ta.city_code;

1733479268819783682    110000    北京市    北京市    110000    直辖市
1733479269360848898    120000    天津市    天津市    120000    直辖市
1733479269620895746    130000    河北省    石家庄市    130100    地级市
1733479282942005250    140000    山西省    太原市    140100    地级市
1733479293356462082    150000    内蒙古自治区    呼和浩特市    150100    地级市
1733479322263605250    210000    辽宁省    沈阳市    210100    副省级市
1733479346733174785    220000    吉林省    长春市    220100    副省级市
1733479361249660929    230000    黑龙江省    哈尔滨市    230100    副省级市
1733479389640904705    310000    上海市    上海市    310000    直辖市
1733479391591256066    320000    江苏省    南京市    320100    副省级市
1733479399652708354    330000    浙江省    杭州市    330100    副省级市
1733479410717282306    340000    安徽省    合肥市    340100    地级市
1733479425418317825    350000    福建省    福州市    350100    地级市
1733479435165880321    360000    江西省    南昌市    360100    地级市
1733479444317851650    370000    山东省    济南市    370100    副省级市
1733479458519764993    410000    河南省    郑州市    410100    地级市
1733479479050883073    420000    湖北省    武汉市    420100    副省级市
1733479498793472001    430000    湖南省    长沙市    430100    地级市
1733479520754847746    440000    广东省    广州市    440100    副省级市
1733479543643164674    450000    广西壮族自治区    南宁市    450100    地级市
1733479569366831106    460000    海南省    海口市    460100    地级市
1733479583958814723    500000    重庆市    重庆市    500000    直辖市
1733479588710961154    510000    四川省    成都市    510100    副省级市
1733479617832013825    520000    贵州省    贵阳市    520100    地级市
1733479632080064513    530000    云南省    昆明市    530100    地级市
1733479688380207105    540000    西藏自治区    拉萨市    540100    地级市
1733479818412019713    610000    陕西省    西安市    610100    副省级市
1733479842348912642    620000    甘肃省    兰州市    620100    地级市
1733479867208552450    630000    青海省    西宁市    630100    地级市
1733479898548391937    640000    宁夏回族自治区    银川市    640100    地级市
1733479904697241602    650000    新疆维吾尔自治区    乌鲁木齐市    650100    地级市
1733479937517670402    810000    香港特别行政区    香港特别行政区    810000    特别行政区
1733479938897596417    820000    澳门特别行政区    澳门特别行政区    820000    特别行政区

        根据省会城市所包含的省会城市信息列表sql:

select t.*,st_asgeojson(t.geom) as geomJson from biz_city p,biz_scenic_spot t where p.city_code = '430100' and st_contains(p.geom, t.geom)

        到此我们已经实现了省会城市的查询和对应的风景区列表的查询分析。 

二、WebGIS程序设计与实现

        关于如何在SpringBoot和Leaflet进行WebGIS程序的设计与实现,博主的多篇文章有详细的讲解,这里不再赘述,这里将后台和前端的重点程序逻辑以代码的形式给出,复杂的逻辑将会进行重点介绍。

1、使用@select中转义字符的使用

        在上一节的sql查询中,我们有直接进行sql计算的符号,比如<>,这种符号在@select或者Mybatis的xml解析当中,如果处理不当是非常容易报错的。处理这种符号大体有两种处理方式。第一种是使用<![CDATA[ xxx ]]>进行包装,表示在解析的时候,这个xxx语句将按照原义进行执行。当然你也可以使用&gt;&lt这种转义字符来表示,为了保持sql的可读性。我在这里选用第一种的写法。关键代码如下:

static final String FIND_PROVINCECIAL_CAPITA_SQL = "<script>"
+ " select ta.id,ta.province_code,ta.province_name,ta.city_name,ta.city_code,ta.type from ( "
+ " select * from biz_city where province_code = city_code union "
+ " <![CDATA[ select * from biz_city where province_code <> city_code ]]> "
+ " and city_code = left(province_code, 3) || '100' "
+ " <![CDATA[ ) ta where 1 = 1 and ta.type <> '不统计' ]]> "
+ "<if test='null != cityName'> and ta.city_name like concat('%', #{cityName}, '%') </if>"
+ " order by ta.city_code "
+ "</script>";
/**
* 查询全国省会城市信息列表
* @return
*/
@Select(FIND_PROVINCECIAL_CAPITA_SQL)
List<City> findProvincialCapita(@Param("cityName") String cityName);

2、Leaflet空间信息展示

        在进行WebGIS开发时,我们需要将后台返回的省会城市对应的风景区列表进行展示出来。这里给出关键的展示省会城市的空间范围信息和对应的风景区列表展示核心方法。下面是展示省会城市空间范围的方法,展示信息以geojson的形式返回。

 function showCity(id){
       var myStyle = {color:"red",weight:5,"opacity":1,fillOpacity: 0};
	   $.ajax({  
		      type:"get",  
		      url:prefix + "/geojson/" + id,  
		      data:{},  
		      async: false,
		      dataType:"json",  
		      cache:false,
		      processData:false,
		      success:function(result){
		       	if(undefined != cityAreaLayer ){
		        	cityAreaLayer.removeFrom(mymap);//先移除
		        }
		        if(result.code == web_status.SUCCESS){
		        	var geojson = JSON.parse(result.data);
		        	cityAreaLayer = L.geoJSON(geojson,{style:myStyle}).addTo(mymap);
		        	//同时设置中心位置和级别,9
		        	mymap.setView(cityAreaLayer.getBounds().getCenter(),9);
		        }
		     },
		     error:function(){
		       $.modal.alertWarning("获取空间信息失败");
		     }
		 });
   }

        下面是展示城市对应风景区列表信息方法:

function showScenicSpot(code){
    $.ajax({  
		  type:"get",  
		  url:prefix + "/datalist/" + code,  
		  dataType:"json",  
		  cache:false,
		  processData:false,
		  success:function(result){
		      if(result.code == web_status.SUCCESS){
		        var strokeStyleSet = "#23168d";
		        var lat,lng,cityInfo;
		        for(var i=0;i<result.data.length;i++){
		        	var dataInfo = result.data[i];
		        	var geomObj = JSON.parse(dataInfo.geomJson);
		        	if(i == 0){
		        		lat = geomObj.coordinates[1];
		        		lng = geomObj.coordinates[0];
		        		continue;
		        	}
		        	var radiusSize = 5;
		        	switch(dataInfo.level) {
			        	case '5A':  
			        		strokeStyleSet = "#c50808";
			        		radiusSize += 12;
			        		break;
			        	case '4A':  
			        		strokeStyleSet = "#c37322";
			        		radiusSize += 7;
			        		 break;
			        	case '3A':
			        		strokeStyleSet = "#6f8d16";
			        		radiusSize += 3;
			        		 break;
		        		case '2A':
		        		    strokeStyleSet = "#168d40";
		        		    radiusSize += 1;
			        		break;
			        	default:
			        		strokeStyleSet = "#23168d";
			        	}
		    		var content = "<strong>名称:</strong>"+dataInfo.name + "<br/><strong>级别:</strong>"+ dataInfo.level;
		    		content += "<br/><strong>所属行政区划:</strong>"+ dataInfo.province + "/" + dataInfo.city + "/" + dataInfo.area;
		    		content += "<br/><strong>评定时间:</strong>"+ dataInfo.evaluationTime ;
		    	var latlng = new L.latLng(geomObj.coordinates[1], geomObj.coordinates[0]);
		    		let marker = L.circleMarker(latlng, {
		        		 radius: radiusSize,
		        		 color: strokeStyleSet,//这里设置的是circleMarker的颜色属性
		        		 labelStyle: {
		        		     offsetX: 0, //横坐标偏移(像素)
		        		     offsetY: 30, //纵坐标偏移(像素)
		        		     text: dataInfo.name,
		        		     rotation: 0,
		        		     zIndex: radiusSize,
		        			minZoom : 5,
		        			fillStyle: strokeStyleSet
		        		    }
	        		   }).addTo(showLayerGroup);
		    			marker.bindPopup(content); 
		        	}
		        	mymap.addLayer(showLayerGroup);
		        }
		   },
		   error:function(){
		        $.modal.alertWarning("获取信息失败");
		  }
	});
}

        其它的信息查询的方法比较简单,这里不准备进行详细的讲解,经过上述的步骤就完成了后台的应用程序和前端WebGIS的页面开发。

三、省会城市风景区可视化成果展示

        在经过了城市风景区的空间数据库的设计与实现、前后端的应用程序的设计与实现之后。是我们交作业的时候了,全国33个省会城市(包括香港特别行政区和澳门特别行政区)的风景区可视化作业。博文篇幅有限,这里将重点展示几个代表省会城市的信息。如果哪个小伙伴想了解自己所属省会城市的风景区列表的,可以在评论区留下城市信息哦。

1、哈尔滨市风景区分析

        首先来看一下黑龙江省省会哈尔滨市的城市风景区列表,在2024年春节的时候,哈尔滨的旅游很火,很多南方的小土豆都去感受了东北的气息。上图就是哈尔滨市的城市风景区分布。可以看到在市中心也有非常多的景点。

        下面通过一个表格来看下哈尔滨市的5A和4A风景区列表如下,一共有34家,其中5A级有一家,33家4A级风景区:

太阳岛风景区    5A    黑龙江    哈尔滨市    松北区
亚布力滑雪旅游度假区    4A    黑龙江    哈尔滨市    尚志市
二龙山风景区    4A    黑龙江    哈尔滨市    宾县
英杰风景区    4A    黑龙江    哈尔滨市    宾县
森工平山旅游区    4A    黑龙江    哈尔滨市    阿城区
哈尔滨北方森林动物园    4A    黑龙江    哈尔滨市    阿城区
金龙山国际旅游度假区    4A    黑龙江    哈尔滨市    阿城区
美丽岛温泉水乐园    4A    黑龙江    哈尔滨市    阿城区
方正高楞林场罗勒密山景区    4A    黑龙江    哈尔滨市    方正县
百年哈啤文化旅游区    4A    黑龙江    哈尔滨市    平房区
侵华日军第七三一部队罪证陈列馆    4A    黑龙江    哈尔滨市    平房区
铮子山地质森林公园管理处    4A    黑龙江    哈尔滨市    通河县
永泰世界主题乐园    4A    黑龙江    哈尔滨市    香坊区
普罗旺斯蒸衣草庄园    4A    黑龙江    哈尔滨市    香坊区
松松小镇    4A    黑龙江    哈尔滨市    香坊区
波塞冬旅游度假区    4A    黑龙江    哈尔滨市    松北区
黑龙江省科技馆    4A    黑龙江    哈尔滨市    松北区
哈尔滨极地馆    4A    黑龙江    哈尔滨市    松北区
东北虎林园    4A    黑龙江    哈尔滨市    松北区
融创乐园    4A    黑龙江    哈尔滨市    松北区
哈尔滨建筑艺术馆    4A    黑龙江    哈尔滨市    道里区
红豆杉景区    4A    黑龙江    哈尔滨市    尚志市
龙塔    4A    黑龙江    哈尔滨市    南岗区
哈尔滨市凤凰山森林旅游区    4A    黑龙江    哈尔滨市    五常市
呼兰河口湿地    4A    黑龙江    哈尔滨市    松北区
大顶上温泉度假村    4A    黑龙江    哈尔滨市    呼兰区
伏尔加庄园    4A    黑龙江    哈尔滨市    香坊区
文化公园    4A    黑龙江    哈尔滨市    南岗区
中央欧陆风情旅游区    4A    黑龙江    哈尔滨市    道里区
森工清河林区旅游景区    4A    黑龙江    哈尔滨市    通河县
白渔泡湿地公园    4A    黑龙江    哈尔滨市    道外区
东方红湿地旅游景区    4A    黑龙江    哈尔滨市    方正县
大沾河国家森林公园景区    4A    黑龙江    哈尔滨市    道里区
笨东市伊利乳业工业旅游景区    4A    黑龙江    哈尔滨市    呼兰区

 2、南京市风景区分析

        上游天堂,下游苏杭,上图是江苏省南京市的风景区列表。从图中可以看到,江苏的不仅经济很好,风景旅游去也是非常多的。宜商宜居。 来看下南京市区的旅游景点分布。

         在繁华的金陵城,同样有很多值得游览的风景区。曾经在南京工作过几年,非常喜欢南京这个城市,春天和秋天特别适合游览,风景非常好。

        南京市的5A和4A风景区一共有27家,其中5A级有两家,25家4A级风景区。

南京夫子庙秦淮风光带    5A    江苏    南京市    秦淮区
南京钟山风景名胜区—中山陵园风景区    5A    江苏    南京市    玄武区
南京市大报恩寺遗址公园景区    4A    江苏    南京市    秦淮区
南京市牛首山文化旅游区    4A    江苏    南京市    江宁区
南京市汤山紫清湖旅游区    4A    江苏    南京市    江宁区
南京市金牛湖景区    4A    江苏    南京市    六合区
南京市游子山休闲旅游区    4A    江苏    南京市    高淳区
南京市高淳国际慢城    4A    江苏    南京市    高淳区
南京博物院    4A    江苏    南京市    玄武区
南京市溧水白马如意文化艺术中心(周园)    4A    江苏    南京市    溧水区
南京市珍珠泉风景区    4A    江苏    南京市    浦口区
南京市高淳老街历史文化景区    4A    江苏    南京市    鼓楼区
南京市红山森林动物园    4A    江苏    南京市    玄武区
南京市科技馆    4A    江苏    南京市    雨花台区
侵华日军南京大屠杀遇难同胞纪念馆    4A    江苏    南京市    建邺区
南京市栖霞山风景区    4A    江苏    南京市    栖霞区
南京市梅园新村纪念馆    4A    江苏    南京市    玄武区
南京市明文化村(阳山碑材)景区    4A    江苏    南京市    江宁区
南京市朝天宫景区    4A    江苏    南京市    秦淮区
南京市玄武湖景区    4A    江苏    南京市    玄武区
南京市阅江楼景区    4A    江苏    南京市    鼓楼区
南京中国近代史遗址博物馆(总统府景区)    4A    江苏    南京市    玄武区
南京市雨花台风景区    4A    江苏    南京市    雨花台区
南京市溧水天生桥景区    4A    江苏    南京市    溧水区
南京市平山森林公园    4A    江苏    南京市    六合区
南京市莫愁湖景区    4A    江苏    南京市    秦淮区
南京市雨发生态旅游区    4A    江苏    南京市    浦口区

3、西安市风景区分析 

        西安市是陕西省的省会,是西北的代表性城市,也是一个非常具有文化魅力的城市,在很多的朝代中,都扮演了首都的角色,曾经也是风华绝代。从上图中可以看到,古都西安的旅游资源也是非常丰富的,文化底蕴雄厚。

        同样,在西安市的市区就分布了很多的5A和4A级的风景区,到了西安,就在市区就可以探访这些景点。 西安市的5A和4A风景区一共有34家,其中5A级有5家,29家4A级风景区。不得不说,西安的5A级景点还是比较丰富的。

秦始皇帝陵博物院    5A    陕西    西安市    临潼区
陕西华清宫文化旅游景区    5A    陕西    西安市    临潼区
西安曲江大雁塔·大唐芙蓉园景区    5A    陕西    西安市    雁塔区
西安城墙·碑林历史文化景区    5A    陕西    西安市    碑林区
大明宫国家遗址公园    5A    陕西    西安市    新城区
陕西翠华山国家地质公园    4A    陕西    西安市    长安区
曲江海洋极地公园    4A    陕西    西安市    雁塔区
陕西太平国家森林公园    4A    陕西    西安市    鄠邑区
西安秦岭野生动物园    4A    陕西    西安市    长安区
西安曲江楼观道文化展示区    4A    陕西    西安市    周至县
朱雀国家森林公园    4A    陕西    西安市    鄠邑区
西安世博园    4A    陕西    西安市    灞桥区
西安浐灞国家湿地公园    4A    陕西    西安市    未央区
西安博物院    4A    陕西    西安市    碑林区
西安汉城湖景区    4A    陕西    西安市    未央区
大唐西市文化景区    4A    陕西    西安市    莲湖区
广仁寺    4A    陕西    西安市    莲湖区
昆明池·七夕公园    4A    陕西    西安市    未央区
汉景帝阳陵博物院    4A    陕西    西安市    莲湖区
陕西张裕瑞那城堡酒庄    4A    陕西    西安市    雁塔区
乐华城乐华恒业欢乐世界景区    4A    陕西    西安市    雁塔区
泾河新城茯茶镇景区    4A    陕西    西安市    雁塔区
西安关中民俗艺术博物院    4A    陕西    西安市    长安区
金龙峡风景区    4A    陕西    西安市    鄠邑区
白鹿原影视城    4A    陕西    西安市    蓝田县
王顺山国家森林公园    4A    陕西    西安市    蓝田县
西安市黑河景区    4A    陕西    西安市    周至县
周至水街沙沙河    4A    陕西    西安市    周至县
西安半坡博物馆    4A    陕西    西安市    灞桥区
白鹿原白鹿仓    4A    陕西    西安市    灞桥区
陕西自然博物馆    4A    陕西    西安市    雁塔区
陕西历史博物馆    4A    陕西    西安市    雁塔区
西北农林科技大学博览园    4A    陕西    西安市    长安区
杨凌现代农业创新园    4A    陕西    西安市    长安区

4、昆明市风景区分析

        昆明市是云南省的省会城市,彩云之南这首歌脍炙人口,人人都可以哼上以下。彩云之南,确实风景怡人,云贵高原多奇景。不过从昆明市的城市风景区分布来看,整个昆明市的旅游分布比较靠南边,北边的风景区较少。 多集中在昆明市区内,

        相对来说,昆明市的旅游资源略少一丢丢, 西安市的5A和4A风景区一共有16家,其中5A级有2家,14家4A级风景区。但是昆明的气候真的非常好,同时云南的葫芦丝是真好听,傣族舞是真的好看。

 昆明市石林风景名胜区    5A    云南    昆明市    石林彝族自治县
昆明世博园旅游区    5A    云南    昆明市    盘龙区
九乡风景名胜区    4A    云南    昆明市    宜良县
云南民族村景区    4A    云南    昆明市    西山区
昆明滇池国家级风景名胜区西山景区    4A    云南    昆明市    西山区
昆明市大观公园景区    4A    云南    昆明市    西山区
昆明市金殿名胜区    4A    云南    昆明市    盘龙区
昆明官渡古镇景区    4A    云南    昆明市    官渡区
云南野生动物园景区    4A    云南    昆明市    盘龙区
石林杏林大观园景区    4A    云南    昆明市    石林彝族自治县
昆明市翠湖·讲武堂景区    4A    云南    昆明市    五华区
昆明轿子山景区    4A    云南    昆明市    禄劝彝族苗族自治县
昆明市石林县乃古石林景区    4A    云南    昆明市    石林彝族自治县
昆明青龙峡景区    4A    云南    昆明市    安宁市
昆明凤龙湾旅游景区    4A    云南    昆明市    寻甸回族彝族自治县
昆明玉龙湾景区    4A    云南    昆明市    安宁市

四、总结

         以上就是本文的主要内容,本文以全国省会城市风景区分布为例,重点讲解在SpringBoot当中,结合Leaflet框架来进行城市风景区分布分析。首先对如何查询全国各省的省会城市进行SQL的查询管理与实践,然后介绍如何在PostGIS空间数据库中进行城市关联分析,其次结合SpringBoot和Leaflet的实例代码来讲解,最后给出不同省会城市的风景区分布成果展示。通过本文,您可以深入掌握如何在SpringBoot中开发WebGIS应用,深入掌握空间分析的方法。行文仓促,难免有不足之处,如有不足,欢迎各位专家朋友在评论区批评指正,不胜感激。

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

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

相关文章

【6大设计原则】依赖倒置原则:构建灵活软件架构的基石 - 通过代码实例深入解析

1.引言 1.1为什么要学习依赖倒置原则 在软件开发过程中&#xff0c;我们经常需要对代码进行修改和扩展。如果代码之间的耦合度过高&#xff0c;那么在进行修改或扩展时&#xff0c;可能会对其他部分的代码产生影响&#xff0c;甚至引发错误。这就要求我们在编写代码时&#xf…

TransFormer学习的一些重要链接

以下是自己在学习和掌握TransFormer中的一些重要链接: 1. 这篇讲解的我看的最明白和清楚&#xff0c;但是仍要结合代码来加深理解。Transformer模型详解&#xff08;图解最完整版&#xff09;https://zhuanlan.zhihu.com/p/338817680 2. 七月在线-TransFormer的文本分类http…

LabVIEW多协议智能流水线控制与监控系统

在自动化流水线系统&#xff0c;实现对流水线传送带、机械臂、报警系统、扫码机、喷码机等设备的高效控制和实时监控。该系统需要支持多种通信协议&#xff0c;包括UDP、串口、ModbusTCP、HTTP、以及MQTT协议&#xff0c;以确保各个设备间的无缝连接和数据交换。 系统架构与模…

1-安装Elasticsearch

支持一览表 | Elastic 未完待续

postgres.new:在浏览器中构建与AI协作的开源Postgres沙盒

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

海量数据处理商用短链接生成器平台 - 16

第五十四章 DWM层数据处理-Flink异步IO提升性能 第1集 IP解析地理位置问题点和Flink异步IO介绍 简介&#xff1a; IP解析地理位置问题点和Flink异步IO介绍 Flink实时计算处理存在的问题 IP解析地理位置信息&#xff0c;查询是同步查询&#xff0c;存在阻塞&#xff0c;性能不…

Unity(2022.3.38LTS) - 旋转和方向

目录 一. 旋转 二. 方向 三. 总结 四. 扩展-万向锁 一. 旋转 在 Unity 中&#xff0c;物体的旋转可以通过欧拉角和四元数来表示和操作。 欧拉角&#xff1a; 由三个角度值&#xff08;通常表示为 x、y、z &#xff09;来定义旋转。直观易懂&#xff0c;但可能会出现万向…

楼宇控制与智能家居实训室解决方案

一、前言 随着物联网技术、大数据分析以及人工智能技术的不断进步&#xff0c;楼宇自动化和智能家居系统正逐渐改变我们的生活方式和工作方式。这些系统不仅可以提高建筑物的安全性和舒适度&#xff0c;还可以有效降低能耗并提升运营效率。例如&#xff0c;通过智能温控系统可…

无人机视角下的EasyCVR视频汇聚管理:构建全方位、智能化的AI视频监控网络

随着5G、AI、物联网&#xff08;IoT&#xff09;等技术的快速发展&#xff0c;万物互联的时代已经到来&#xff0c;视频技术作为信息传输和交互的重要手段&#xff0c;在多个领域展现出了巨大的应用潜力和价值。其中&#xff0c;EasyCVR视频汇聚平台与无人机结合的AI应用更是为…

快速开发知识付费软件的秘诀:敏捷开发与持续迭代

在竞争激烈的市场环境中&#xff0c;快速推出高质量的知识付费软件是抢占市场先机的关键。敏捷开发与持续迭代作为两种核心的软件开发方法&#xff0c;可以帮助开发团队在短时间内交付功能完善的产品&#xff0c;并通过不断优化来提升用户体验。本文将探讨如何利用敏捷开发与持…

OpenCV的编译(MinGW)

OpenCV的编译&#xff08;MinGW&#xff09; 一、下载opencv 在opencv的官网&#xff08;Releases - OpenCV&#xff09;下载我们需要的opencv的版本&#xff0c;以4.5.4版本为例&#xff1a; 之所以&#xff0c;使用这个4.5.4版本的编译&#xff0c;是因为我使用4.6.0版本的…

2024年8月15日(python管理MySQL数据库 mysql5.7读写分离 配置mycat)

一、pymysql管理数据库 1、搭建主mysql5.7 [rootmysql57 ~]# ls anaconda-ks.cfg mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz [rootmysql57 ~]# tar -xf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz [rootmysql57 ~]# ls anaconda-ks.cfg mysql-5.7.44-linux-glibc2.12-x…

消息驱动Stream---基于SpringCloud

概要&#xff1a;实际开发中&#xff0c;服务与服务之间的通信经常会使用到消息中间件&#xff0c;而以往使用的一些消息中间件&#xff0c;比如RabbitMQ&#xff0c;该中间件和系统的耦合性非常高&#xff0c;如果我们要将RabbitMQ替换为Kafka&#xff0c;那么系统将会有较大的…

垃圾收集器G1ZGC详解

G1收集器(-XX:UseG1GC) G1 (Garbage-First)是一款面向服务器的垃圾收集器,主要针对配备多颗处理器及大容量内存的机器. 以极高概率满足GC停顿时间要求的同时,还具备高吞吐量性能特征. G1将Java堆划分为多个大小相等的独立区域&#xff08;Region&#xff09;&#xff0c;JVM目…

Python教程(十五):IO 编程

目录 专栏列表引言基础概念什么是IO&#xff1f; 同步IO vs 异步IO同步IO&#xff08;Synchronous IO&#xff09;异步IO&#xff08;Asynchronous IO&#xff09; Python中的IO标准IO标准输入和输出 文件IO文件操作的上下文管理器打开文件读取文件 高级文件操作读写二进制文件…

go注册到eureka微服务

// 注册到 Eureka&#xff0c;goeureka会自动30秒发送一次心跳 package mainimport ("fmt""github.com/SimonWang00/goeureka""github.com/gin-gonic/gin""github.com/robfig/cron/v3""time""wbGo/configs" )typ…

【C++小白到大牛】红黑树那些事儿

目录 前言&#xff1a; 一、红黑树的概念 二、红黑树的性质 三、红黑树结点的定义 四、红黑树的插入 情况一&#xff1a;u存在且为红 情况二&#xff1a;u不存在/u存在且为黑 小总结&#xff1a; 原码&#xff1a; 五、红黑树的检验 六、性能比较 前言&#xff1a; …

Linux知识复习第4期

web服务器的基本用法 目录 1、安装 2、启动 3、默认发布目录 1、安装 yum install nginx -y # nginx安装 yum install httpd -y # apache安装 2、启动 systemctl enable --now httpd systemctl enable --now nginx 3、默认发布目录 /usr/www/html/ # …

Python OpenCV 影像处理:影像轮廓

► 前言 上篇介绍使用OpenCV Python对于图像上的二值化操作&#xff0c;二值化主要用途包括图像分割、物体侦测、文字识别等。这种转换可以帮助检测图像中的物体或特定特征&#xff0c;并提取有用的信息&#xff0c;本篇基于二值化操作进行近一步的操作&#xff0c;透过影像梯…

一六七、Linux安装go并部署go项目

Linux 下安装 Golang 获取Golang下载地址 标准官网&#xff1a;https://go.dev/国内镜像官网&#xff1a;https://golang.google.cn/ 安装 1. 进入终端&#xff0c;登入root su - root2. 来到应用安装目录 cd /usr/local3. 使用 wget 下载 如果没有安装 wget 可通过软件…