Geotools自动识别SLD并生成图例图片实战-以Polygon数据为例
目录
前言
一、Geotools与SLD制图基础
1、SLD是什么
2、SLD有什么用
二、SLD文件的解析与读取
1、SLD结构介绍
2、SLD实例展示
3、SLD读取方法
三、图例生成与展示
1、图例生成流程
2、图例生成实战
3、图例生成展示
四、结论
前言
在地理信息系统(GIS)开发领域,Geotools作为一款功能强大的开源Java库,为开发者提供了丰富的工具和API,用于处理和可视化地理空间数据。其中,样式描述文档(Styled Layer Descriptor,SLD)在地理数据的可视化过程中扮演着至关重要的角色。SLD不仅能够精确地定义地理要素的显示样式,如颜色、线型、填充模式等,还能确保不同GIS平台和客户端之间样式的一致性,极大地提升了地图展示的专业性和美观度。
对于多边形(Polygon)数据而言,其在地理信息系统中有着广泛的应用,如土地利用分类、行政区划边界、生态区域划分等。通过合理地设置多边形的样式,可以直观地展现不同区域的特征和属性差异。然而,在实际开发过程中,手动为每个多边形数据设置样式不仅耗时费力,而且难以保证样式的规范性和一致性。因此,实现Geotools自动识别SLD并生成图例的功能,对于提高开发效率、提升用户体验具有重要意义。
本实战案例将深入探讨如何利用Geotools实现自动识别SLD文件,通过提取SLD文件中的Rule自动提取分类的标题和颜色,并针对Polygon数据生成相应的图例,最终输出为标准图片。我们将从以下几个方面展开:
-
Geotools与SLD的基础知识:介绍Geotools的核心功能和架构,以及SLD的结构和作用,为后续实战奠定理论基础。详细讲解如何创建一个Java项目,并引入必要的Geotools依赖和相关库,确保开发环境的正确搭建。
-
SLD文件的解析与读取:通过代码示例,展示如何使用Geotools解析SLD文件,提取其中的样式规则和参数,实现对SLD内容的自动识别。基于读取的SLD信息,为Polygon数据动态设置样式,包括填充颜色、边框颜色、线宽等,确保地图渲染效果符合预期。
-
图例生成与展示:探讨如何根据SLD样式生成对应的图例,并将其集成到地图界面中,以便用户能够清晰地理解地图中各要素的含义。
通过本实战案例的学习,读者将能够掌握Geotools自动识别SLD并生成图例的核心技术和实现步骤,从而在实际项目中更加高效地处理多边形数据的可视化需求,提升地理信息系统的开发水平和用户体验。
一、Geotools与SLD制图基础
本节将重点介绍Geotools与SLD的制图基础知识,让第一次接触的朋友对Geotools和SLD也有一个简单的认识。
1、SLD是什么
在地理信息系统(GIS)领域,Geotools和SLD(Styled Layer Descriptor)是实现专业地图制图的两大关键要素。Geotools作为一款功能强大的开源Java库,为开发者提供了丰富的工具和API,用于处理和可视化地理空间数据。它支持多种数据格式的读取与写入,包括Shapefile、GeoTIFF、PostGIS等,能够满足不同项目的数据处理需求。同时,Geotools具备强大的地图渲染能力,可以将地理数据以直观的图形形式展示出来。
2、SLD有什么用
SLD则是一种基于XML的标准样式描述语言,用于定义地理数据的可视化样式。通过SLD,开发者可以精确控制地图图层的外观,如点要素的符号、大小和颜色,线要素的线型、宽度和颜色,以及面要素的填充颜色、边框样式等。SLD的优势在于其跨平台性和通用性,使得在不同的GIS软件和平台之间共享和应用样式成为可能。
在地图制图过程中,Geotools与SLD的结合使用能够极大地提高工作效率和地图质量。开发者可以利用Geotools读取地理数据,并根据业务需求编写SLD文件来定义数据的显示样式。Geotools能够解析SLD文件中的样式规则,并将其应用到相应的地理数据图层上,从而实现自动化的地图渲染。这种方式不仅保证了样式的规范性和一致性,还能根据数据属性进行动态样式调整,使得地图能够更直观地反映地理信息的特征和差异。
二、SLD文件的解析与读取
本节重点讲解对SLD文件的解析与读取,分别从以下三个方面来深入讲解。第一是结合一个面状数据来进行结构介绍。第二个是对SLD的示例进行展示,最后介绍SLD的Java解析方法。通过本节可以掌握SLD的更近一步的支持,了解结构以及读取方法。
1、SLD结构介绍
SLD(Styled Layer Descriptor)文件是一种基于XML的样式描述文件,用于定义地理数据在地图上的显示样式,例如点、线、面的颜色、线宽、填充、标签等。SLD文件的结构如下:
1. 根元素:<StyledLayerDescriptor>
-
作用:作为SLD文件的根元素,包含整个样式描述文档。
-
属性:
-
version
:指定SLD文件的版本号,通常是"1.0.0"。 -
xsi:schemaLocation
:指定XML Schema的位置,用于验证SLD文件的结构。
-
-
子元素:可以包含多个
<NamedLayer>
和<UserLayer>
元素。
2. 命名图层:<NamedLayer>
-
作用:定义一个命名图层,与GeoServer中的图层相关联。
-
子元素:
-
<Name>
:指定图层的名称。 -
<UserStyle>
:定义用户样式,包含样式元数据和具体的样式规则。
-
3. 用户样式:<UserStyle>
-
作用:定义用户样式,包含样式元数据和具体的样式规则。
-
子元素:
-
<Title>
:样式的标题,用于显示。 -
<Abstract>
:样式的详细描述。 -
<FeatureTypeStyle>
:定义要素类型的样式。
-
4. 要素类型样式:<FeatureTypeStyle>
-
作用:定义特定要素类型的样式,如点、线、面等。
-
子元素:
-
<Rule>
:定义样式规则,可以根据属性值、比例尺等条件来设置不同的样式。
-
5. 规则:<Rule>
-
作用:定义样式规则,用于选择符合特定条件的要素并应用相应的样式。
-
子元素:
-
<Name>
:规则的名称。 -
<Title>
:规则的标题。 -
<ogc:Filter>
:定义过滤条件,使用OGC(开放地理空间联盟)过滤器语言来指定逻辑条件。 -
符号器(
<Symbolizer>
):定义要素的具体样式。
-
6. 符号器:<Symbolizer>
-
作用:定义要素的具体样式,包括点、线、面等。
-
类型:
-
<PointSymbolizer>
:定义点要素的样式。 -
<LineSymbolizer>
:定义线要素的样式。 -
<PolygonSymbolizer>
:定义面要素的样式。 -
<TextSymbolizer>
:定义文本标签的样式。 -
<RasterSymbolizer>
:定义栅格数据的样式。
-
-
子元素:
-
<Graphic>
:定义符号的图形属性,如形状、大小、颜色等。 -
<Fill>
:定义填充样式,如颜色、不透明度等。 -
<Stroke>
:定义边框样式,如颜色、线宽等。 -
<Label>
:定义文本标签的内容。
-
本例将主要实现对Rule标签的自动解析,根据Rule标签识别出对应的分类名称也就是图例名称和具体的分类颜色。这个解析非常重要,解析的结果最终会直接应用到图例的颜色上。关于SLD的更加详细的知识,会在后续的内容板块中进行阐述和说明,这里暂且不表。
2、SLD实例展示
本节将重点展示一份具体的SLD示例,结合实例和前面一节进行内容的提取。这里直接用一个实际的例子进行介绍。由于不涉及数据,这里将贴出一个实战SLD文件,目的是分析出湖南省各地市与其的相邻地市信息。
3、SLD读取方法
要使用Java语言实现SLD的读取,需要依赖Geotools工具包。这里我们使用Maven进行相应的配置管理,通过Maven来引入Geotools的SLD数据的解析,配置如下:
<!-- https://mvnrepository.com/artifact/org.geotools.xsd/gt-xsd-sld -->
<dependency><groupId>org.geotools.xsd</groupId><artifactId>gt-xsd-sld</artifactId><version>${geotools.version}</version><!-- <version>31.3</version> <scope>test</scope> -->
</dependency><!-- https://mvnrepository.com/artifact/org.geotools.xsd/gt-xsd-core -->
<dependency><groupId>org.geotools.xsd</groupId><artifactId>gt-xsd-core</artifactId><version>${geotools.version}</version>
</dependency>
从SLD中提取图例,一般是通过分类规则,在进行样式分类时,自动解析Rule规则的标题以及其对应的颜色信息,详细的解析代码如下:
String xzsldPath = "F:/wzh_workspace_20210320/geotools-fx/src/main/resources/maps/hunan_range.sld";
// SLD的方式
Style style = null;
try {style = SldUtils.createStyleFromSld(xzsldPath);System.out.println(style.getDescription());System.out.println(style.getName());// 遍历所有规则生成图例项for (FeatureTypeStyle fts : style.featureTypeStyles()) {System.out.println(fts.rules().size());for (Rule rule : fts.rules()) {System.out.println(rule);System.out.println(rule.getLegend());String title = rule.getDescription().getTitle().toString();String color = extractColorFromSymbolizer(rule);System.out.println("标题: " + title + ", 颜色: " + color);}}
} catch (Exception e) {
}
运行以上的代码后,可以在IDE的控制台中输出如下,说明解析成果:
三、图例生成与展示
本节将重点介绍在Java中如何使用Geotools来进行图例的生成与展示的过程。通过学习本节的知识就可以熟悉图例的生成流程,图例生成的具体实践过程以及之中的图例生成展示。
1、图例生成流程
以上就是在Java中使用Geotools来读取SLD文件,自动解析其Rule信息来提取中文描述和标绘颜色信息的主要流程。下面将集合工程代码来进行讲解。
2、图例生成实战
首先第一步,就是要解析SLD,然后调用Geotools的相关接口转换成Style对象,关键方法代码如下:
//step1、第一步获取Style对象
String xzsldPath = "F:/wzh_workspace_20210320/geotools-fx/src/main/resources/maps/hunan_range.sld";
Style style = getStyleByPath(xzsldPath);
第二步、创建缓冲图片对象,并设置生成图片的大小,代码如下:
//step2、2 生成绘制对象
BufferedImage image = new BufferedImage(LEGEND_WIDTH, LEGEND_HEIGHT, BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = image.createGraphics();
g2d.setColor(Color.WHITE);
g2d.fillRect(0, 0, LEGEND_WIDTH, LEGEND_HEIGHT);
第三步、获取Style对象的Rule规则列表,通过自动提取标题和分类的颜色,并绘制具体的图例图像,代码如下:
int y = START_Y;// step3、遍历所有规则生成图例项,并进行图像绘制
for (FeatureTypeStyle fts : style.featureTypeStyles()) {for (Rule rule : fts.rules()) {if(null == rule.getDescription() || null == rule.getDescription().getTitle()) {continue;}drawLegend(g2d,rule,START_X,y);//需要预留垂直的间距y += VERTICAL_PADDING;}
}
第四、五步就是清理资源,图片输出并罗盘,代码如下:
// step4、保存图像
ImageIO.write(image, "PNG", new File("D:/SLD生成图例实战0324.png"));
// step5、清理资源
g2d.dispose();
System.out.println("完成");
示例代码中,比较重要的静态属性和图例绘制方法的源码如下:
//图例宽度
private final static int LEGEND_WIDTH = 260;
//图例高度
private final static int LEGEND_HEIGHT = 630;
//起始X值(垂直方向)
private final static int START_X = 10;
//起始Y值(垂直方向)
private final static int START_Y = 10;
//图例文本起始X值
private final static int TITLE_LEGEND_START_X = 100;
//颜色文本起始X值
private final static int COLOR_LEGEND_START_X = 40;
//图例填充色块宽度
private final static int FILL_RECT_WIDTH = 30;
//垂直间距(用于设置不同行间距)
private final static int VERTICAL_PADDING = 20;
//文本大小
private final static int FONT_SIZE = 12;
图例绘制方法如下:
/**
* - 绘制图例信息
* @param g2d
* @param rule
* @param x
* @param y
*/
private static void drawLegend(Graphics2D g2d, Rule rule, int x, int y) {// step1、从rule中获取图例名和解析颜色值String title = rule.getDescription().getTitle().toString();String color = extractColorFromSymbolizer(rule);System.out.println("图例名: " + title + ", 颜色: " + color);//step2、设置图例名的字体颜色//g2d.setColor(Color.BLACK);g2d.setColor(Color.decode(color));g2d.setFont(new Font("宋体", Font.BOLD, FONT_SIZE));//step3、绘制图例名g2d.drawString(title, x + TITLE_LEGEND_START_X, y + 12);//step4、设置填充块的颜色以及颜色编码颜色,高度自动为宽度的一半g2d.fillRect(x, y, FILL_RECT_WIDTH, FILL_RECT_WIDTH / 2);g2d.drawRect(x, y, FILL_RECT_WIDTH, FILL_RECT_WIDTH / 2);//输出颜色编码值g2d.drawString(color, x + COLOR_LEGEND_START_X, y + 12);
}
3、图例生成展示
经过以上的步骤,最终生成的图例成果如下:
当然,以上的图例是采用一种垂直的布局方式,而且是预设高度和宽度,在实际情况下我们可能需要指定一行展示几个,同时为了比较好的展示图例,我将图例的颜色和色块的填充色设置成一样的。大家可以根据自己的喜好进行统一设置。
四、结论
以上就是本文的主要内容,本实战案例将深入探讨如何利用Geotools实现自动识别SLD文件,通过提取SLD文件中的Rule自动提取分类的标题和颜色,并针对Polygon数据生成相应的图例,最终输出为标准图片。通过本实战案例的学习,读者将能够掌握Geotools自动识别SLD并生成图例的核心技术和实现步骤,从而在实际项目中更加高效地处理多边形数据的可视化需求,提升地理信息系统的开发水平和用户体验。行文仓促,难免有许多不足之处,如有不足,在此恳请各位专家朋友在评论区不吝指出,不才不胜感激。
参考内容:1、使用Java和Geotools自动解析SLD输出图例源码。
相关文章:
Geotools自动识别SLD并生成图例图片实战-以Polygon数据为例
目录 前言 一、Geotools与SLD制图基础 1、SLD是什么 2、SLD有什么用 二、SLD文件的解析与读取 1、SLD结构介绍 2、SLD实例展示 3、SLD读取方法 三、图例生成与展示 1、图例生成流程 2、图例生成实战 3、图例生成展示 四、结论 前言 在地理信息系统(GIS&…...
windows docker如何修改 默认的Container memory usage
参考:https://forums.docker.com/t/docker-on-windows-11-with-wsl2-does-not-use-the-memory-i-set-in-wslconfig/144404/3 参考:https://learn.microsoft.com/en-us/windows/wsl/wsl-config...
LabVIEW液压传动系统教学仿真平台
本文介绍了一种基于LabVIEW的液压传动系统教学仿真平台,该平台采用“老师讲解、线上仿真、线下操作”的复合实验模式,旨在提高实验教学的效率与安全性。通过实例验证,展示了该平台在教学和实际操作中的应用效果,同时也为液压传动系…...
Java实习生面试题(2025.3.23 be)
一、v-if与v-show的区别 v-show 和 v-if 都是 Vue 中的条件渲染指令,它们的主要区别在于渲染策略:v-if 会根据条件决定是否编译元素,而 v-show 则始终编译元素,只是通过改变 CSS 的 display 属性来控制显示与隐藏。 二、mybatis-…...
OpenCV第2课 OpenCV的组成结构与图片/视频的加载及展示
1.OpenCV 的组成结构 2.OpenCV 的具体模块 3. 图像的读取 4. 视频的读取 1.OpenCV 的组成结构 OpenCV 是由很多模块组成的,这些模块可以分成很多层: 最底层是基于硬件加速层(HAL)的各种硬件优化。再上一层是opencv_contrib 模块所包含的OpenCV 由其他开发人员所贡献的代…...
Blender导出fbx到Unity找不到贴图的问题
fbx导入Unity材质能不能找到贴图是一件玄学的事情。常见的情况是有些材质能找到,有些找不到: 可能有用的方法 解决方法1:把贴图文件复制过去,模型reimport; 解决方法2:导出时路径模式选复制,内…...
kafka的文章
1.面试的问题 要点 至多一次、恰好一次数据一致性超时重试、幂等消息顺序消息挤压延时消息 1.1 kafaka 生产消息的过程。 在消息发送的过程中,涉及到了两个线程,一个是main 线程,一个是sender 线程。在main 线程中创建了一个双端队列 Reco…...
Go常见问题与回答(下)
文章目录 1、通过指针变量 p 访问其成员变量 name,有哪几种方式?2、代码,说出结果3、扩容提,代码,说出结果4、指出下面这段代码的错误之处5、是否通过编译6、关于字符串连接,下面语法正确的是7、关于iota&a…...
vue3中如何缓存路由组件
在 Vue3 中缓存路由组件,主要借助<keep-alive>组件来实现,具体方法如下: 1. 全局缓存路由组件 在 App.vue 等根组件中,直接将<router-view>包裹在<keep-alive>标签内,这样所有的路由组件都会被缓存…...
云服务器怎么防御ddos攻击呢?
防御DDoS攻击是保障云服务器稳定运行的关键措施,以下是综合多种防护策略的详细方案: 1. 启用云服务商提供的DDoS防护服务 高防IP/流量清洗: 将业务流量接入云服务商的高防IP,由专业清洗中心过滤恶意流量,仅放行正常请求…...
Log4j2 的核心实现和源码分析
Log4j2 的核心实现和源码分析 1. 核心组件 1.1 Logger 功能:负责记录日志信息。实现:org.apache.logging.log4j.Logger 接口,org.apache.logging.log4j.core.Logger 类。1.2 Appender 功能:负责将日志信息输出到不同的目的地,如文件、控制台等。实现:org.apache.loggin…...
【深度学习】【目标检测】【OnnxRuntime】【C++】YOLOV3模型部署
【深度学习】【目标检测】【OnnxRuntime】【C】YOLOV3模型部署 提示:博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论 文章目录 【深度学习】【目标检测】【OnnxRuntime】【C】YOLOV3模型部署前言Windows平台搭建依赖环境模型转换--pytorch转onnxONNXRuntime推…...
四种跨模态行人重识别可视化方法
1.Gradcam 2.检索可视化 3.tsne图 4.距离分布 需要的私聊,代码需要付费...
8个DeepSeek文章润色指令
今天道叔给各位文字工作者安利DeepSeek的8个神仙级润色指令(附真实案例拆解),建议搭配冰美式食用更佳↓↓↓ 一、【学术黑话翻译器】 适用场景:给投资人看的BP/行业白皮书/专家访谈实录 指令公式:"将以下内容转化为通俗易懂的行业洞察…...
解决PowerShell下Git中文乱码问题
解决PowerShell下Git中文乱码问题 在使用Git进行版本控制时,许多开发者可能会遇到中文乱码的问题,尤其是在Windows环境下使用PowerShell时。这不仅影响代码的阅读和提交,还可能导致一些不可预见的错误。本文将详细探讨如何在PowerShell下解决…...
oracle数据库(数据库启动关闭/sqlplus登录及基本操作/设置字符集/distinct去重)
目录 1. Oracle数据库启动 2. Oracle数据库关闭 3. sqlplus登录Oracle数据库 3.1 使用sqlplus登录Oracle数据库 3.2 使用sqlplus登录Oracle数据库 3.3 远程登录 3.4 解锁用户 3.5 修改用户密码 3.6 查看当前语言环境 4. sqlplus基本操作 4.1 显示当前用户 4.2 查看当前用户…...
mapreduce时,客户端做哪些事
在MapReduce过程中,客户端(Client)是用户提交作业的入口,负责作业的初始化、配置、资源提交和作业监控。以下是客户端在整个流程中的具体职责和操作步骤: 1. 作业配置与参数解析 设置作业属性: 定义MapRed…...
DeepBI:重构流量逻辑,助力亚马逊广告实现高效流量增长
在日益激烈的跨境电商竞争环境中,广告投放早已从“粗放撒网”走向“精细化运营”。尤其是在亚马逊这样一个成熟且竞争白热化的平台,如何在广告预算有限的前提下实现高效曝光、精准触达、稳定转化,成为众多卖家和运营团队面临的核心挑战。 De…...
Linux内核的页面错误:原因与解决方案
当程序访问虚拟内存中的一个页面时,如果该页面当前不在物理内存中,就会触发一个称为"page fault"(页异常)的异常。操作系统需要处理这个异常,并将所需页面从磁盘加载到内存中。实现虚存管理的一个关键是page…...
LORA 中的 梯度外积是什么意思; 方差和协方差的实际含义:衡量变量的离散程度和变量间的线性相关性
LORA 中的 梯度外积是什么意思 目录 LORA 中的 梯度外积是什么意思**一、梯度外积的定义****二、示例说明****步骤1:计算单样本梯度****步骤2:计算梯度外积****三、梯度外积的作用****四、总结**方差和协方差的实际含义:衡量变量的离散程度和变量间的线性相关性**一、方差(…...
XSS复现漏洞简单前八关靶场
靶场不需要安装任意环境 链接如下:XSS Game - Learning XSS Made Simple! | Created by PwnFunction 目录 XSS Game 第一关:Ma Spaghet! 第二关:Jefff 第三关:Ugandan Knuckles 第四关:Ricardo Milos 第五关&am…...
3.24-3 接口测试断言
一.postman 断言 1.断言再test中 #状态码是否等于200 tests["Status code is 200"] responseCode.code 200; #断言响应时间小于200ms tests["Response time is less than 200ms"] responseTime < 200; #断言响应体包含内容 tests["Body…...
《鸿蒙携手AI:解锁智慧出行底层逻辑》
在科技飞速发展的当下,智慧出行成为人们对未来交通的美好期许,而鸿蒙系统与人工智能的深度融合,正为这一愿景的实现提供强大助力。从技术原理角度深入剖析,鸿蒙系统究竟如何支撑人工智能在智慧出行场景中的应用呢?这背…...
【AVRCP】探寻AVRCP控制互操作性:连接、命令与设备交互
目录 一、AVCTP连接管理 1.1 AVCTP连接建立 1.2 AVCTP连接释放 二、AV/C命令的操作流程 2.1 AV/C命令交换流程 2.2 AV/C命令类型 三、AVRCP特定命令 四、AVRCP浏览命令 五、OBEX连接管理 5.1 OBEX连接建立 5.2 OBEX连接释放 六、总结 七、参考资料 AVRCP对于实现设…...
Mybatis-Plus知识点详解
Mybatis-plus(简称MP),基于Mybatis的增强工具,保留了Mybatis的所有功能,同时增加了通用的CRUD,条件构造器,分页插件等等实用工具 特性 即拿即用:通过通用Mapper和Service,无需编写XML既可以完成单表CURE操作 Lambda支持:使用Lambda表达式构建查询条件,避免硬编码字段名,提升代…...
紧凑交叉引用表
嗯,用户问的是“compact xref table”,也就是紧凑型交叉引用表。我之前在回答中提到过交叉引用流(XRef Stream),但可能需要更详细地解释两者的区别和联系。根据搜索结果中的网页1,传统的Xref表以文本形式存…...
CMake 详解:跨平台构建系统的入门与进阶
目录 一、相关知识点 1. 什么是cmake,为什么使用? 2. 构建过程 二、CMake使用流程 1. 创建 CMakeLists.txt 文件 2. 配置构建目录 3. 运行cmake 4. 运行make编译 一、相关知识点 1. 什么是cmake,为什么使用? CMake 是一个开…...
【架构设计】学习路径
掌握前置知识后,学习架构设计需要从理论认知到实践落地逐步推进。以下是系统化的学习路径,结合具体案例与实操建议,帮助你快速进阶: 一、构建架构思维基础 1. 理解架构设计的核心目标 关键问题驱动设计: 每个架构决策…...
14、Python 枚举与类型注解进阶
Python 枚举与类型注解进阶 文章概述 本文深入探讨Python中枚举(Enum)与类型注解的高级应用场景。通过剖析Enum类的核心特性、dataclass装饰器的工程实践、静态类型检查工具mypy的集成使用,结合状态机等实际案例,系统性地提升代…...
C语言 【实现电脑关机小游戏】非常好玩
引言 在时间限制内做出正确的回答,时间一到,电脑自动关机,听起来是不是很有意思,下面来看看怎么实现吧。 注意:该游戏只在windows系统下可以玩, 一、游戏原理: 在Windows系统下,通…...
【蓝桥杯速成】| 11.回溯 之 子集问题
题目一:子集 问题描述 78. 子集 - 力扣(LeetCode) 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例…...
统计矩的高阶推广:经验还是理论推导?
矩的发展既是经验总结的结果,也是数学理论推导的产物。研究者们在分析数据、描述物理现象的过程中,发现了低阶矩与日常物理概念(如质心、惯性)之间的紧密联系,而高阶矩的应用往往出现在更复杂的数学体系中,…...
SpringBoot2集成Elasticsearch8(使用spring-boot-starter-data-elasticsearch)
写在前面 使用spring-boot-starter-data-elasticsearch集成Elasticsearch8? What? 官方写的不支持啊?让我们来看下官方给出的版本建议。 官方地址: https://docs.spring.io/spring-data/elasticsearch/reference/elasticsearch/versions.…...
Postgresql源码(142)子查询提升pull_up_sublinks
1 案例 drop table t_fun01; create table t_fun01 (image_id numeric primary key, content_id varchar(50), file_code varchar(20)); create index idx3 on t_fun01(content_id); create index idx4 on t_fun01(file_code); insert into t_fun01 select t.i, t.i%10, t.i%1…...
sonar代码检测研究及平台搭建
为了实现提交代码自动检测代码缺陷,本文介绍了一种将jenkins与gitlab集成的自动检测机制,如需应用于生产级开发流程,可在此基础上进行功能丰富和扩展,本文仅进行了原理性搭建。 一、基础环境准备 与sonar配合使用的jenkins和gitlab基础软件…...
清华大学:DeepSeek从入门到精通系列教程1-9讲(持续更新中)|大礼包免费下载
导 读INTRODUCTION 今天分享由清华大学新闻与传播学院、人工智能学院双聘教授沈阳老师团队倾力打造的《DeepSeek从入门到精通系列教程1-9讲(持续更新中)》,包含:《DeepSeek:从入门到精通》《DeepSeek如何赋能职场应用》…...
使用Python可视化图结构:从GraphML文件生成节点关系图(lightrag 生成)
引言 在数据可视化领域,图结构(Graph)常用于展示实体间的复杂关系。例如,文学分析中的角色关系、社交网络中的用户互动等。本文将通过一个实际案例,演示如何使用 NetworkX 和 Matplotlib 从 GraphML 文件生成节点关系…...
排序复习_代码纯享
头文件 #pragma once #include<iostream> #include<vector> #include<utility> using std::vector; using std::cout; using std::cin; using std::endl; using std::swap;//插入排序 //1、直接插入排序(稳定) void InsertSort(vecto…...
Docker Hub Mirror 终极解决方案——0成本,超高速!
CNB Docker Mirror (cdm) CNB Docker Mirror 是一个基于 CNB 的 Docker 镜像加速工具,提供本地镜像加速功能。 功能特性 镜像加速:在本地启动连接到 CNB 环境的 Docker 镜像加速服务,然后通过配置 Docker 客户端实现镜像加速下载自动重连&…...
2000-2019年各省地方财政车船税数据
2000-2019年各省地方财政车船税数据 1、时间:2000-2019年 2、来源:国家统计局、统计年鉴 3、指标:行政区划代码、地区、年份、地方财政车船税 4、范围:31省 5、指标说明:车船税作为地方财政的重要组成部分&#x…...
c#处理算数溢出的情况
在C#中,算术运算的溢出处理可以通过 checked 和 unchecked 关键字控制,默认行为是 静默截断(unchecked模式),但可以通过配置或代码块显式调整。以下是详细说明: 1. 默认行为(unchecked模式&…...
Java「Deque」 方法详解:从入门到实战
Java Deque 各种方法解析:从入门到实战 在 Java 编程中,Deque(双端队列)是一个功能强大的数据结构,允许开发者从队列的两端高效地添加、删除和检查元素。作为 java.util 包中的一部分,Deque 接口继承自 Qu…...
简记_FPGA 硬件最小系统设计
一、FPGA板级设计的五要素 1.1、电源电路 核心电压:一般为固定值 IO电压:FPGA的IO分为多个bank,同一个bank的不同IO引脚电压相同,不同bank的电压可以不同 辅助电压:除了核心电压和IO电压,FPGA工作所需的…...
C++题目
1、内存管理 1.内存模型 栈:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。 堆:就是那些由new分配的内存块,其释放由程序员控制(一个new对应一个delete)…...
Vulhub-jangow-01-1.0.1通关攻略
第0步: 打开靶机,按下shift,出现下图界面 在此页面按下e键,进入如下界面, 将ro 替换为 rw signie init/bin/bash 替换完毕后,按下Ctrl键X键,进入如下页面 ip a查看网卡信息 编辑配置文件网卡信…...
入剖析 Android Compose 框架的关键帧动画(keyframes、Animatable)(二十三)
深入剖析 Android Compose 框架的关键帧动画(keyframes、Animatable) 引言 在当今的 Android 应用开发领域,用户体验已成为衡量一款应用成功与否的关键因素之一。而动画作为提升用户体验的重要手段,能够为应用增添生动性和交互性…...
java中的枚举类型和c,c++的有区别吗?c,c++的枚举,结构体,联合体,三种数据有什么区别和联系
Java 枚举类型与 C、C 枚举类型的区别 1. 类型安全 Java:Java 的枚举类型是类型安全的。枚举常量是枚举类型的实例,编译器会严格检查传递的参数是否为该枚举类型的有效常量。例如: java Apply enum Color { RED, GREEN, BLUE } // 编译器会检…...
详解Redis的持久化与数据可靠性
Redis持久化与数据可靠性详解(结合实例) Redis作为内存数据库,持久化是保证数据不丢失的核心机制。它通过将内存数据保存到磁盘,确保服务器重启后能恢复数据。Redis提供RDB、AOF和混合持久化三种方式,下面通过实例和操…...
1、mysql基础篇--概述
关系型数据库(RDBMS) 概念特点:数据模型: 概念 建立在关系模型基础上,有多张表相互连接的二维表组成的数据库 特点: 1、使用表存储,格式统一,便于维护 2、使用sql语言操作&#…...
【Tiny RDM】Redis客户端工具
Tiny RDM Tiny RDM是一款现代化、轻量级、跨平台的Redis客户端,支持Mac、Windows和Linux,目前在Github上已有10kStar。 Github 项目地址: https://github.com/tiny-craft/tiny-rdm 功能特性 极度轻量,基于Webview2,…...