前言
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语句将按照原义进行执行。当然你也可以使用><这种转义字符来表示,为了保持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>"+ + "<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: ,
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 江苏 南京市 浦口区
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应用,深入掌握空间分析的方法。