基于PostGIS的各地级市路网长度统计及Echarts图表可视化实践-以湖南省为例

news2025/6/9 9:01:58

目录

前言

一、路网长度计算

1、地级市列表查询

2、地级市路网长度查询

二、Echarts可视化实现

1、Echarts后端生成

2、引入Colormap配色

3、前端微调

三、总结


前言

        在当今快速发展的社会中,交通路网的建设与布局对于一个地区的经济发展、居民生活以及城市规划都具有至关重要的作用。湖南省作为我国中部地区的重要省份,其内部各地级市的路网发展程度参差不齐,准确掌握各地级市路网的长度信息,不仅有助于交通部门进行合理的规划和优化,还为城市管理者提供了决策依据,同时也为社会各界了解湖南省的交通现状提供了重要的参考。

       通过将湖南省各地级市的路网数据存储于 PostGIS 数据库中,可以利用其丰富的空间函数和工具,实现对路网长度的精确统计,从而摆脱传统人工测量和统计的繁琐与不准确。然而,仅仅得到路网长度的数值数据还不足以直观地呈现其分布和差异情况。此时,数据可视化技术就显得尤为重要。Echarts 作为一款基于 JavaScript 的开源数据可视化工具,以其丰富的图表类型、精美的视觉效果和良好的交互性而被广泛应用于各个领域。通过 Echarts,可以将各地级市路网长度数据以直观易懂的图表形式展示出来,如柱状图、折线图、地图等,使决策者和普通用户能够迅速抓住数据的关键信息,深入了解湖南省各地级市路网发展的整体态势和个体差异。

        本研究以湖南省为例,旨在结合 PostGIS 和 Echarts 这两大技术工具,开展基于 PostGIS 的各地级市路网长度统计及 Echarts 图表可视化实践。通过对湖南省各地级市路网数据的收集、整理和存储,利用 PostGIS 进行路网长度的精确统计分析,并借助 Echarts 的可视化功能,将统计结果以生动、形象的方式呈现出来,为进一步推动湖南省交通事业的发展,优化路网布局,提升城市规划和管理水平提供科学、直观的依据,同时也为类似基于空间数据的统计与可视化研究提供一个具有参考价值的实践案例,探索 GIS 技术与数据可视化技术在实际应用中的深度融合与创新应用模式。

一、路网长度计算

        随着地理信息系统(GIS)技术的不断发展,PostGIS 作为一款强大的开源空间数据库扩展,为处理地理空间数据提供了极大的便利。PostGIS 能够高效地存储、查询和分析地理空间数据,为路网长度统计等空间分析任务提供了坚实的技术支撑。本节将重点讲解如何查询省份对应的地级市列表以及如何查询地级市的路网长度,这里均采用基于PostGIS空间数据库来实现,省域以湖南省为例。

1、地级市列表查询

        想实现指定省份下属地级市查询,这里需要使用到之前提到过的地级市信息表。对应的表结构在此不再赘述,查询的SQL如下:

select * from biz_city t1 where t1.province_code = '430000';

         在客户端软件执行以上SQL,以上sql中430000表示湖南省的省份代码,执行结果如下:

2、地级市路网长度查询

        在查询出湖南省对应的地级市列表之后,接下来需要使用表关联的方式,关联我们之前使用过的路网数据库表,求解该地级市对应的路网长度,这里给出查询SQL的实例,关键代码如下:

select sum(st_length(r.geom :: geography)) / 1000.0 rlength,t1.city_code,
max(t1.city_name) city_name
from biz_road_network r ,biz_city t1
where st_contains(t1.geom, r.geom)
and t1.province_code = '430000'
group by t1.city_code
order by rlength desc;

        这里对上述SQL语句简单解释一下,这里使用了两张空间表进行关联查询即路网数据表和地市数据表,关联查询条件为对应地市区域包含的路网数据,即空间包含函数:st_contains();接着使用st_length();来求解路网的总长度。为了保证对查询结果的的单位是米制,因此需要将geometry数据转为geography后再进行计算,同时为了在展示路网数据长度时,单位显示公里或者千米,在返回的米制结果时除以1000表示千米。在客户端软件执行以上SQL之后,可以在响应窗口中看到以下结果:

        以上就是在PostGIS中使用空间表关联查询的实现过程。 下面我们基于这个查询结合Echarts来做可视化。

二、Echarts可视化实现

        俗话说,一图胜千言。这句话说的就是图表的魅力,使用图表不仅可以让结果展现得更加直观,同时增加了结果的趣味性,如果大家有看论文的习惯,在很多的科研论文,尤其是SCI等国外期刊对于图表的要求,表达、配色等有更高的要求。这里简单的介绍一下如何在后端使用Echarts来进行省域地级市的报表可视化。本章将分厂三个小节进行,首先讲解如何使用java在后台生成Echarts,然后结合如何在图表组件中使用ColorMap来优化Echarts的颜色配置,最后简单介绍如何对输出的成果进行简单的微调,比如坐标轴标签的展示等。

1、Echarts后端生成

        Echarts不仅可以使用前端的方式进行构建,也可以基于后端工程来实现快速可视化。这里以org.icepear.echarts.echarts-java为例,使用Java语言来介绍如何在后端来生成。在后端生成前,需要引入Maven依赖,Pom.xml的引用如下:

<dependency>
	<groupId>org.icepear.echarts</groupId>
	<artifactId>echarts-java</artifactId>
	<version>1.0.3</version>
</dependency>

         这里引入了echarts-java之后,后台数据查询暂且忽略不计,这里仅演示如何将PostGIS查询出来的数据使用Echarts来进行图表展示,后台生成Echarts页面的关键代码如下:

package com.yelang.test;
import org.icepear.echarts.Bar;
import org.icepear.echarts.render.Engine;
public class HnRoadCalculate {
	public static void main(String[] args) {
		Bar bar = new Bar().setLegend().setTooltip("item")
	              .addXAxis(new String[] { "长沙市", "衡阳市", "岳阳市", "益阳市" ,"常德市","永州市","郴州市","怀化市",
	            		  "邵阳市","株洲市","湘西土家族苗族自治州","娄底市","湘潭市","张家界市"})
	              .addYAxis()
	              .addSeries("路网长度", new Number[] { 17753.22156551351,14434.666394707818,14222.249927994444,13073.7041462314,11931.665375579692,10818.152494340602,10666.092158735342,10115.713304567329,9892.10719298748,7374.936096146714,6795.835819083372,5727.464899432551,4861.742381742725,3836.270296502996 });
	    Engine engine = new Engine();
	    engine.render("D:/java-echarts/hnroadlength-02.html", bar);
	    System.out.println("完成...");
	}
}

        运行以上代码之后就会在本地的机器磁盘中生成目标文件,如下图所示:

        如果在磁盘中出现上述的文件,说明echarts报表生成成功。 默认情况下,生成的效果如下图所示:

2、引入Colormap配色

        如果不要求更多的配色,对X轴的各个地市展示页没有更多的要求,其实以上的需求确实已经基本得到了满足。但是为了让各地市有更明显的区别,这里可以结合之前讲过的colormap的相关知识,根据我们的需要来创建相应的色带,并且可以根据具体的值来生成指定对应的颜色,这样效果就变成渐变,更加符合我们的需求,这里改造如下。首先需要在前端引入ColorMap的js资源,然后自定义色带信息,关键代码如下:

var colorScheme = new MultiColorScheme('', 1000, 18000,
	new Color(0, 0, 255),new Color(0, 255, 255),
	new Color(0, 255, 0),new Color(255,255,0),
	new Color(255,0,0)]);

         然后在Echarts中定义具体值对应的颜色值,代码如下:

itemStyle:{color:function(params){console.log(params.value); return  makeColor(params.value, colorScheme.minValue, colorScheme.maxValue,colorScheme);}}

        这时再运行前面的代码,可以发现颜色的值已经发生了改变,不是之前一成不变的样子了。具体效果如下:

3、前端微调

        从色彩上来说基本已经满足了项目的需求,但是很明显的一个问题是,在生成的报表中,在坐标轴的Y轴上,只有有限的五个地市,如长沙市、益阳市、郴州市、株洲市、湘潭市。如何将这些所有的地级市都展示完整呢?从Echarts的官方文档上可以看到,可以设置y轴的偏转角度,关键代码如下:

axisLabel: {interval: 0,rotate: 30, formatter: function(value) { return value;}}

        再来看一下设置了坐标偏转的实际效果:

 

        到这里,完整的湖南省地级市路网长度空间分析查询以及Echarts图表可视化基本就已经实现了。希望对大家有所帮助。 

三、总结

        以上就是本文的主要内容。本研究以湖南省为例,旨在结合 PostGIS 和 Echarts 这两大技术工具,开展基于 PostGIS 的各地级市路网长度统计及 Echarts 图表可视化实践。通过对湖南省各地级市路网数据的收集、整理和存储,利用 PostGIS 进行路网长度的精确统计分析,并借助 Echarts 的可视化功能,将统计结果以生动、形象的方式呈现出来,为进一步推动湖南省交通事业的发展,优化路网布局,提升城市规划和管理水平提供科学、直观的依据,同时也为类似基于空间数据的统计与可视化研究提供一个具有参考价值的实践案例,探索 GIS 技术与数据可视化技术在实际应用中的深度融合与创新应用模式。行文仓促,难免有许多不足之处,如有不足,还恳请各位专家博主在评论区批评指出,不胜感激。

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

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

相关文章

mac版excel如何制作时长版环形图

设置辅助列 创建簇状柱形图 将辅助列绘制在次坐标轴 工作时长在主坐标轴&#xff0c;右键分别更改图表类型为圆环。 辅助列圆环全部为灰色&#xff0c;边框为白色 辅助列设置透明度100% 设置辅助列和工作时长列同样的圆环大小 可得 核心&#xff1a;只要辅助列边框不透明…

【MySQL系列】MySQL 执行 SQL 文件

博客目录 一、MySQL 执行 SQL 文件的常见场景二、MySQL 执行 SQL 文件的主要方法1. 使用 MySQL 命令行客户端2. 在 MySQL 交互界面中使用 source 命令3. 使用 MySQL Workbench 等图形化工具4. 使用编程语言接口 三、执行 SQL 文件时的注意事项1. 字符集问题2. 事务处理3. 错误处…

论文MR-SVD

每个像素 7 个 FLOPs意思&#xff1a; FLOPs&#xff08;浮点运算次数&#xff09;&#xff1a;衡量算法计算复杂度的指标&#xff0c;数值越小表示运算越高效。含义&#xff1a;对图像中每个像素进行处理时&#xff0c;仅需执行7 次浮点运算&#xff08;如加减乘除等&#xf…

Java 日期时间类全面解析

Java 日期时间类全面解析&#xff1a;从传统到现代的演进 一、发展历程概览 二、传统日期类&#xff08;Java 8前&#xff09; 1. java.util.Date - 日期表示类 Date now new Date(); // 当前日期时间 System.out.println(now); // Wed May 15 09:30:45 CST 2023// 特定时间…

【工具-Wireshark 抓包工具】

工具-Wireshark 抓包工具 ■ Wireshark 抓包工具■ 通过IP指定查看■■ ■ Wireshark 抓包工具 抓包工具】win 10 / win 11&#xff1a;WireShark 下载、安装、使用 Wireshark下载 阿里云镜像 ■ 通过IP指定查看 ■ ■

设备驱动与文件系统:06 目录与文件

磁盘使用的最后一层抽象&#xff1a;文件系统 今天我们讲第31讲&#xff0c;这一讲将完成磁盘对磁盘使用的最后一层抽象。对此板使用最后一层抽象&#xff0c;抽象出来的是什么呢&#xff1f; 实际上我们使用过磁盘&#xff0c;大家应该有这样的认识&#xff0c;最后不管这个磁…

Linux 系统中的算法技巧与性能优化

引言​ Linux 系统以其开源、稳定和高度可定制的特性&#xff0c;在服务器端、嵌入式设备以及开发环境中得到了极为广泛的应用。对于开发者而言&#xff0c;不仅要掌握在 Linux 环境下实现各类算法的方法&#xff0c;更要知晓如何利用系统特性对算法进行优化&#xff0c;以提升…

【C++系列】模板类型特例化

1. C模板类型特例化介绍 ​​定义​​&#xff1a;模板类型特例化&#xff08;Template Specialization&#xff09;是C中为模板的特定类型提供定制实现的机制&#xff0c;允许开发者对通用模板无法处理的特殊类型进行优化或特殊处理。 ​​产生标准​​&#xff1a; C98/03…

K8S认证|CKS题库+答案| 7. Dockerfile 检测

目录 7. Dockerfile 检测 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作&#xff1a; 1&#xff09;、切换集群 2&#xff09;、修改 Dockerfile 3&#xff09;、 修改 deployment.yaml 7. Dockerfile 检测 免费获取并激活 CKA_v1.31_模拟系统 题目 您必须在以…

基于Scala实现Flink的三种基本时间窗口操作

目录 代码结构 代码解析 (1) 主程序入口 (2) 窗口联结&#xff08;Window Join&#xff09; (3) 间隔联结&#xff08;Interval Join&#xff09; (4) 窗口同组联结&#xff08;CoGroup&#xff09; (5) 执行任务 代码优化 (1) 时间戳分配 (2) 窗口大小 (3) 输出格式…

c++对halcon的动态链接库dll封装及调用(细细讲)

七个部分(是个大工程) 一,halcon封装函数导出cpp的内容介绍 二,c++中对halcon环境的配置 三,在配置环境下验证halcon代码 四,dll项目创建+环境配置 五,编辑dll及导出 六,调用打包好的动态链接库的配置 七,进行测试 一,halcon的封装及导出cpp的介绍 1,我这里…

【优选算法】分治

一&#xff1a;颜色分类 class Solution { public:void sortColors(vector<int>& nums) {// 三指针法int n nums.size();int left -1, right n, i 0;while(i < right){if(nums[i] 0) swap(nums[left], nums[i]);else if(nums[i] 2) swap(nums[--right], num…

【图片识别改名】如何批量将图片按图片上文字重命名?自动批量识别图片文字并命名,基于图片文字内容改名,WPF和京东ocr识别的解决方案

应用场景 在日常工作和生活中&#xff0c;我们经常会遇到需要对大量图片进行重命名的情况。例如&#xff0c;设计师可能需要根据图片内容为设计素材命名&#xff0c;文档管理人员可能需要根据扫描文档中的文字对图片进行分类命名。传统的手动重命名方式效率低下且容易出错&…

RabbitMQ 的高可用性

RabbitMQ 是比较有代表性的&#xff0c;因为是基于主从&#xff08;非分布式&#xff09;做高可用的RabbitMQ 有三种模式&#xff1a;单机模式、普通集群模式、镜像集群模式。 单机模式 单机模式,生产几乎不用。 普通集群模式&#xff08;无高可用性&#xff09; 普通集群模…

AI架构师修炼之道

1 AI时代的架构革命 与传统软件开发和软件架构师相比&#xff0c;AI架构师面临着三重范式转换&#xff1a; 1.1 技术维度&#xff0c;需处理异构算力调度与模型生命周期管理的复杂性&#xff1b; 1.2 系统维度&#xff0c;需平衡实时性与资源约束的矛盾&#xff1b; 1.3 价…

iview组件库:当后台返回到的数据与使用官网组件指定的字段不匹配时,进行修改某个属性名再将response数据渲染到页面上的处理

1、需求导入 当存在前端需要的数据的字段渲染到表格或者是一些公共的表格组件展示数据时的某个字段名与后台返回的字段不一致时&#xff0c;那么需要前端进行稍加处理&#xff0c;而不能直接this.list res.data;这样数据是渲染不出来的。 2、后台返回的数据类型 Datalist(pn) …

服务器 | Centos 9 系统中,如何部署SpringBoot后端项目?

系列文章目录 虚拟机 | Ubuntu 安装流程以及界面太小问题解决 虚拟机 | Ubuntu图形化系统&#xff1a; open-vm-tools安装失败以及实现文件拖放 虚拟机 | Ubuntu操作系统&#xff1a;su和sudo理解及如何处理忘记root密码 文章目录 系列文章目录前言一、环境介绍二、 使用syst…

(2025)Windows修改JupyterNotebook的字体,使用JetBrains Mono

(JetBrains Mono字体未下载就配置,这种情况我不知道能不能行,没做过实验,因为我电脑已经下载了,不可能删了那么多字体做实验,我的建议是下载JetBrains Mono字体,当你使用VsCode配置里面的JetBrains字体也很有用) 首先参考该文章下载字体到电脑上 VSCode 修改字体为JetBrains …

小番茄C盘清理:专业高效的电脑磁盘清理工具

在使用电脑的过程中&#xff0c;我们常常会遇到系统盘空间不足、磁盘碎片过多、垃圾文件堆积等问题&#xff0c;这些问题不仅会导致电脑运行缓慢&#xff0c;还可能引发系统崩溃。为了解决这些问题&#xff0c;小番茄C盘清理应运而生。它是一款专业的C盘清理软件&#xff0c;能…

AUTOSAR实战教程--标准协议栈实现DoIP转DoCAN的方法

目录 软件架构 关键知识点 第一:PDUR的缓存作用 第二:CANTP的组包拆包功能 第三:流控帧的意义 配置过程 步骤0:ECUC模块中PDU创建 步骤1:SoAD模块维持不变 步骤2:DoIP模块为Gateway功能添加Connection ​步骤3:DoIP模块为Gateway新增LA/TA/SA ​步骤4:PDUR模…