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

使用Geotools读取DEM地形数据实战-以湖南省30米数据为例

目录

前言

一、DEM地形数据介绍

1、DEM数据简介

2、DEM应用领域

3、QGIS中读取DEM数据

二、GeoTools解析地形

1、Maven中依赖引用

2、获取数据基本信息

三、总结


前言

        随着全球数字化进程的加速,各类地理空间数据呈爆炸式增长,DEM 数据作为其中的核心组成部分,其数据量也在不断攀升。从卫星遥感获取的全球范围 DEM 数据,到针对特定区域高精度测绘所产生的 DEM 数据,这些海量的数据蕴含着丰富的地形信息等待我们去挖掘和利用。然而,如何高效、准确地读取这些 DEM 数据,将其转化为可进行进一步分析和可视化的形式,成为了 GIS 开发者和研究人员面临的一项重要任务。

       在地理信息系统(GIS)领域,数字高程模型(DEM)数据承载着关于地球表面地形起伏的关键信息,对于地形分析、水文模拟、城市规划以及众多与空间地理相关的研究和应用都有着不可替代的重要作用。而 Geotools 作为一个强大的、开源的 Java GIS 工具库,为开发者们提供了便捷且高效的操作地理空间数据的方式,其中就包括对 DEM 地形数据的读取与处理。Geotools 凭借其丰富的功能模块和良好的社区支持,在 GIS 开发领域备受青睐。它提供了对多种地理数据格式的读写支持,包括常见的 DEM 格式,如 GeoTIFF 等。通过使用 Geotools,开发者能够以简洁的代码实现对 DEM 数据的访问,无需深入了解底层复杂的数据存储结构和读取机制,大大降低了开发难度和时间成本。在实战过程中,我们将深入了解 Geotools 中与 DEM 数据读取相关的类和方法,例如如何利用 CoverageReader 来读取 DEM 数据文件,如何获取 DEM 数据的地理参考信息、高程值等关键数据内容,以及如何对读取到的数据进行初步的处理和转换,为后续的地形分析应用做好准备。

        本文将开启一场使用 Geotools 读取 DEM 地形数据的实战之旅,深入探索这一过程中的技术要点、实践技巧以及可能遇到的挑战与解决方案。这场实战之旅不仅是一次技术的探索,更是一次对 GIS 数据处理流程的深刻理解过程,掌握使用 Geotools 读取 DEM 地形数据的技能具有重要的现实意义。无论是在科研领域,为环境变化研究、自然灾害预测等提供数据支持;还是在商业领域,助力城市规划、工程建设、资源勘探等项目的顺利开展,这一技能都将成为我们手中有力的工具。让我们一同踏上这场使用 Geotools 读取 DEM 地形数据的实战征程,开启地理空间数据处理的精彩篇章。

一、DEM地形数据介绍

        本节将对DEM地形数据进行简单介绍,主要介绍Dem数据的概念,结构以及使用QGIS来读取DEM数据的基本信息。

1、DEM数据简介

        数字高程模型(DEM)是地球表面地形地貌的数字化表达方式,它以数值形式精确地记录了地表每个点的高程信息,在地理信息系统(GIS)、测绘、水利、交通、环境科学等诸多领域都有着极为广泛且关键的应用。

        数据结构与形式:DEM 数据主要有规则格网和不规则三角网(TIN)两种常见结构。规则格网 DEM 将地表划分为大小相等的正方形网格,每个网格单元对应一个高程值,这种结构简单、易于处理和可视化,适用于大面积、相对平坦或规则地形的表示;而不规则三角网 DEM 则是根据地形特征点(如山脊线、山谷线、陡坡等处的点)通过构建三角形来逼近地表形态,它能更灵活、精确地描述复杂地形,尤其在地形变化剧烈的区域,如山区、峡谷等地,能有效减少数据冗余,提高数据精度。获取 DEM 数据的途径多样。航空摄影测量是一种传统且有效的方法,通过在飞机上搭载航空相机对地面进行拍摄,利用立体像对和摄影测量原理,解算出地面点的三维坐标,进而生成 DEM 数据。卫星遥感也是重要的数据来源,如今高分辨率卫星影像层出不穷,通过对卫星影像进行几何校正、辐射校正以及立体匹配等处理,可快速获取大面积的 DEM 数据,像 SRTM( Shuttle Radar Topography Mission)数据就是利用卫星雷达技术获取的全球范围高精度 DEM 数据,在全球地形研究中广泛应用。

2、DEM应用领域

        在 GIS 领域,DEM 数据是进行地形分析的基础,如计算坡度、坡向、地形起伏度等基本地形因子,这些地形因子在土地利用规划、生态环境评估、自然灾害预测等方面有着重要应用。在水利水电工程中,DEM 数据用于水库淹没分析、流域水文模拟、河道演变研究等,为水利工程设计和水资源管理提供关键依据。在交通规划方面,DEM 数据可辅助进行道路选线、桥梁隧道选址等,通过分析地形对交通线路建设的影响,优化交通网络布局,降低工程建设成本和风险。在环境科学中,DEM 数据有助于研究地形对气候、植被分布、土壤侵蚀等环境要素的影响,为生态环境保护和修复提供科学支撑。总之,DEM 数据作为一种重要的空间信息数据,在现代社会的众多领域发挥着不可或缺的作用,随着技术的不断进步,其应用范围和深度还将不断拓展。

3、QGIS中读取DEM数据

        本小节将重点介绍如何使用QGIS来展示DEM数据以及查看DEM数据的基本信息,比如空间参考,高度和宽度,波段信息。实例使用的DEM数据来源于互联网。本次使用的DEM数据为湖南省30米精度地形数据。使用QGIS打开下载好的DEM数据,加载后如下所示:

        第二步,为了让地形有一些变化,我们设置DEM的样式,右键属性,点击符号化。在下面的界面中调整,如下所示:

        这里的渲染类型,我们使用山体阴影模式。 同时勾选色相,就是加上色彩信息,色彩浓度设置在100%。其它的参数保持不变,接下来点击“apply”将当前样式进行应用。经过我们的样式美化后的效果如下:

        可以局部放大地形数据后,可以看到如下的效果,这种效果看起来就已经开始有山体的棱角等信息了。

        使用信息查看工具来进行数据识别,可以看到当前坐标点的坐标和波段信息值,如下图所示:

        到此,使用QGIS来查看Dem地形数据就已经完成,接下来看一下在Qgis中查看基本的数据信息。依然在属性窗口中,点击“信息” tab页,可以看到以下信息:

序号参数名
1名称    湖南省_DEM_30m分辨率_NASA数据
2路径C:\BaiduDownload\湖南省_DEM_30m分辨率_NASA数据.tif
3坐标参照系(CRS)EPSG:4326 - WGS 84 - 地理的
4范围108.7862500000000097,24.6429166666666717 : 114.2570833333333411,30.1290277777777753
5单位
6宽度19695
7高度19750
8数据类型Int16 - 16位有符号整型
9GDAL驱动GeoTIFF
10波段1STATISTICS_MAXIMUM=2095
STATISTICS_MEAN=355.64031618431
STATISTICS_MINIMUM=-35
STATISTICS_STDDEV=297.91063586873
STATISTICS_VALID_PERCENT=64.56
11维度横坐标:19695 纵坐标:19750 波段:1
12起点108.786,30.129
13像素大小0.0002777777777777773439,-0.0002777777777777773439

        以上就是使用QGIS来读取的一些关于DEM的基本信息。下一节我们将使用GeoTools组件来进行相应参数的获取。

二、GeoTools解析地形

        本节将使用重点介绍如何使用GeoTools来对DEM数据进行解析。包括在Maven中定义相关的依赖。以及如何使用GeoTools获取数据的基本信息两个方面来进行说明。

1、Maven中依赖引用

本文使用的Dem数据是tif格式的,在Geotools中要想实现tif格式的数据解析,首先要在Maven配置中引入相应的依赖,这里直接给出pom.xml的关键性信息:

<!-- 增加geotools 引用 begin --><dependency><groupId>org.geotools</groupId><artifactId>gt-shapefile</artifactId><version>${geotools.version}</version></dependency><dependency><groupId>org.geotools</groupId><artifactId>gt-swing</artifactId><version>${geotools.version}</version></dependency><dependency><groupId>org.geotools</groupId><artifactId>gt-main</artifactId><version>${geotools.version}</version></dependency><!-- 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></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><!-- https://mvnrepository.com/artifact/org.geotools/gt-xml --><dependency><groupId>org.geotools</groupId><artifactId>gt-xml</artifactId><version>${geotools.version}</version></dependency><!--  增加epsg支持 --><dependency><groupId>org.geotools</groupId><artifactId>gt-epsg-hsql</artifactId><version>${geotools.version}</version></dependency> <!--  增加geojson支持 --><dependency><groupId>org.geotools</groupId><artifactId>gt-geojson</artifactId><version>${geotools.version}</version></dependency> <!--  增加gt-geotiff支持 --><dependency><groupId>org.geotools</groupId><artifactId>gt-geotiff</artifactId><version>${geotools.version}</version></dependency><dependency><groupId>org.geotools</groupId><artifactId>gt-process-raster</artifactId><version>${geotools.version}</version></dependency><dependency><groupId>org.geotools</groupId><artifactId>gt-process</artifactId><version>${geotools.version}</version></dependency><dependency><groupId>org.geotools</groupId><artifactId>gt-coverage</artifactId><version>${geotools.version}</version></dependency><dependency><groupId>org.geotools</groupId><artifactId>gt-swing</artifactId><version>${geotools.version}</version></dependency>
<!-- 增加geotools 引用 end -->

        请注意,本文使用的jdk版本是jdk1.8,对应的Geotools的版本是28.2。如果您的相关环境是更高的版本,可以根据不同的版本选择适配的geotools。 

2、获取数据基本信息

        要想获取Dem数据的基本信息,首先需要来读取dem数据,在geotools中,读取dem的类是GeoTiffReader,使用GeoTiffReader将tif读取之后,转成GridCoverage2D,然后从GridCoverage2D对象就能获取我们需要的基本信息。关键代码如下:

@Test
public void ReadHunanDem() {try {// DEM 文件路径File demFile = new File("C:/BaiduDownload/湖南省_DEM_30m分辨率_NASA数据.tif");// 创建 GeoTiffReaderGeoTiffReader reader = new GeoTiffReader(demFile);// 读取 GridCoverage2DGridCoverage2D coverage = reader.read(null);printMetadata(coverage);// 关闭 readerreader.dispose();} catch (IOException | MismatchedDimensionException e) {e.printStackTrace();} catch (FactoryException e) {e.printStackTrace();} catch (TransformException e) {e.printStackTrace();}
}

        接下来看一下如何获取基本数据信息,代码如下:

private static void printMetadata(GridCoverage2D coverage) throws FactoryException, TransformException {// 获取坐标参考系统CoordinateReferenceSystem crs = coverage.getCoordinateReferenceSystem2D();System.out.println("Coordinate Reference System: " + crs.getName().toString());// 获取数据范围Envelope2D envelope = coverage.getEnvelope2D();System.out.println("Envelope: " + envelope);// 获取影像宽度和高度int width = coverage.getRenderedImage().getWidth();int height = coverage.getRenderedImage().getHeight();System.out.println("Width: " + width + ", Height: " + height);// 获取数据类型int dataType = coverage.getRenderedImage().getSampleModel().getDataType();System.out.println("Data Type: " + dataType);GridGeometry2D gridGeometry = coverage.getGridGeometry();System.out.println(gridGeometry);// 获取图斑名称//String[] names = coverage.getGridGeometry().getGridSetName();//System.out.println("Grid Set Name: " + names[0]);// 获取样本维度名称int numSampleDimensions = coverage.getNumSampleDimensions();String[] sampleDimensionNames = new String[numSampleDimensions];for (int i = 0; i < numSampleDimensions; i++) {sampleDimensionNames[i] = coverage.getSampleDimension(i).getDescription().toString();}System.out.println("Sample Dimension Names: " + String.join(", ", sampleDimensionNames));}

        最后来看一下最终的输出结果,可以读取的信息如下:

        当然这里仅表示geotools可以用来进行数据的读取,没有读取所有的数据,基本可以看包括外包框和空间参考以及宽度和高度的基本信息都时可以通过geotools来进行获取的。 跟着本教程,您也可以实现对DEM数据的读取,为下一步的应用做进一步的分析使用。

三、总结

        以上就是本文的主要内容,本文将开启一场使用 Geotools 读取 DEM 地形数据的实战之旅,深入探索这一过程中的技术要点、实践技巧以及可能遇到的挑战与解决方案。这场实战之旅不仅是一次技术的探索,更是一次对 GIS 数据处理流程的深刻理解过程,掌握使用 Geotools 读取 DEM 地形数据的技能具有重要的现实意义。无论是在科研领域,为环境变化研究、自然灾害预测等提供数据支持;还是在商业领域,助力城市规划、工程建设、资源勘探等项目的顺利开展,这一技能都将成为我们手中有力的工具。行文仓促,难免有许多不足之处,如有不足,在此恳请各位专家博主在评论区不吝留言指出,不胜感激。

相关文章:

使用Geotools读取DEM地形数据实战-以湖南省30米数据为例

目录 前言 一、DEM地形数据介绍 1、DEM数据简介 2、DEM应用领域 3、QGIS中读取DEM数据 二、GeoTools解析地形 1、Maven中依赖引用 2、获取数据基本信息 三、总结 前言 随着全球数字化进程的加速&#xff0c;各类地理空间数据呈爆炸式增长&#xff0c;DEM 数据作为其中的…...

基于WebGIS技术的校园地图导航系统架构与核心功能设计

本文专为IT技术人员、地理信息系统&#xff08;GIS&#xff09;开发者、智慧校园解决方案架构师及相关领域的专业人士撰写。本文提出了一套基于WebGIS技术的校园地图导航系统构建与优化方案&#xff0c;旨在为用户提供高效、智能、个性化的导航体验。如需获取校园地图导航系统技…...

《养生方法》(一)

一、基础生活习惯 ‌饮食管理‌ ‌均衡营养‌&#xff1a;每日摄入多彩蔬果&#xff08;如胡萝卜、西兰花、柑橘类&#xff09;补充维生素C/E及膳食纤维&#xff1b;搭配鱼类、豆制品等优质蛋白质&#xff0c;保障免疫系统正常运作‌ ‌清淡规律‌&#xff1a;减少高油盐食物…...

Python常见面试题的详解9

1. 如何找出整数数组中第二大的数 要点 定义一个函数用于在整数数组里找出第二大的数。 若数组元素少于 2 个&#xff0c;则返回 None。 借助两个变量 first 和 second 来跟踪最大数和第二大数。 可以添加异常处理&#xff0c;以应对输入非整数数组的情况。 若数组包含重复…...

MAVSDK - Custom Mavlink处理

编译命令中开启 Custom Mavlink 编译 cmake -DCMAKE_BUILD_TYPERelease -DMAVLINK_DIALECTcustom -DBUILD_CUSTOM_MAVLINKON -DCUSTOM_MAVLINK_PATH"G:/Custom_Mavlink" -DBUILD_CUSTOM_PLUGINSON -DENABLED_CUSTOM_PLUGINS"speaker" -DENABLED_PLUGINS&qu…...

java每日精进 2.13 MySql迁移人大金仓

1.迁移数据库 1. 数据库创建语句 MySQL&#xff1a; CREATE DATABASE dbname; 人大金仓&#xff08;Kingbase&#xff09;&#xff1a; 在人大金仓中&#xff0c;CREATE DATABASE 的语法通常相同&#xff0c;但可能需要特别注意字符集的指定&#xff08;如果涉及到多语言支持…...

【R语言】回归分析与判别分析

一、线性回归分析 1、lm()函数 lm()函数是用于拟合线性模型&#xff08;Linear Models&#xff09;的主要函数。线性模型是一种统计方法&#xff0c;用于描述一个或多个自变量&#xff08;预测变量、解释变量&#xff09;与因变量&#xff08;响应变量&#xff09;之间的关系…...

ES6中Object.defineProperty 的详细用法和使用场景以及例子

ES6 Object.defineProperty() 用法总结 Object.defineProperty() 是 ES5 引入的一个方法&#xff0c;ES6 继续强化了该方法的使用&#xff0c;它允许我们为对象的属性定义或修改 属性描述符。它能够控制对象属性的行为&#xff0c;如读写权限、可枚举性和可配置性。 1. Objec…...

揭秘云计算 | 5、关于云计算效率的讨论

一、 公有云效率更高&#xff1f; 解&#xff1a;公有云具有更高的效率。首先我们需要知道效率到底指的是什么。这是个亟须澄清的概念。在这里效率是指云数据中心&#xff08;我们将在后文中介绍其定义&#xff09;中的IT设备资源利用率&#xff0c;其中最具有代表性的指标就是…...

【Linux探索学习】第二十七弹——信号(上):Linux 信号基础详解

Linux学习笔记&#xff1a; https://blog.csdn.net/2301_80220607/category_12805278.html?spm1001.2014.3001.5482 前言&#xff1a; 前面我们已经将进程通信部分讲完了&#xff0c;现在我们来讲一个进程部分也非常重要的知识点——信号&#xff0c;信号也是进程间通信的一…...

如何查询网站是否被百度蜘蛛收录?

一、使用site命令查询 这是最直接的方法。在百度搜索框中输入“site:你的网站域名”&#xff0c;例如“site:example.com”&#xff08;请将“example.com”替换为你实际的网站域名&#xff09;。如果搜索结果显示了你的网站页面&#xff0c;并且显示了收录的页面数量&#xf…...

什么是网络安全审计?网络安全审计的作用...

网络安全审计通过对网络数据的采集、分析、识别&#xff0c;实时动态监测通信内容、网络行为和网络流量&#xff0c;发现和捕获各种敏感信息、违规行为&#xff0c;实时报警响应&#xff0c;全面记录网络系统中的各种会话和事件&#xff0c;实现对网络信息的智能关联分析、评估…...

EasyExcel实现excel导入(模版上传)

目录 效果pom.xmlapplication.ymlcontrollerservice依赖类前台vue代码某个功能如果需要添加大量的数据,通过一条条的方式添加的方式,肯定不合理,本文通过excel导入的方式来实现该功能,100条数据导入成功85条,失败15条,肯定需要返回一个表格给前台或者返回1个错误excel给前…...

Vue 3最新组件解析与实践指南:提升开发效率的利器

目录 引言 一、Vue 3核心组件特性解析 1. Composition API与组件逻辑复用 2. 内置组件与生命周期优化 3. 新一代UI组件库推荐 二、高级组件开发技巧 1. 插件化架构设计 2. 跨层级组件通信 三、性能优化实战 1. 惰性计算与缓存策略 2. 虚拟滚动与列表优化 3. Tree S…...

【前端】如何安装配置WebStorm软件?

文章目录 前言一、前端开发工具WebStorm和VS Code对比二、官网下载三、安装1、开始安装2、选择安装路径3、安装选项4、选择开始菜单文件夹5、安装成功 四、启动WebStorm五、登录授权六、开始使用 前言 WebStorm 是一款由 JetBrains 公司开发的专业集成开发环境&#xff08;IDE…...

vllm专题(一):安装-GPU

vLLM 是一个 Python 库,支持以下 GPU 变体。选择您的 GPU 类型以查看供应商特定的说明: 1. NVIDIA CUDA vLLM 包含预编译的 C++ 和 CUDA(12.1)二进制文件。 2. AMD ROCm vLLM 支持配备 ROCm 6.3 的 AMD GPU。 注意 此设备没有预构建的 wheel 包,因此您必须使用预构建的 Do…...

php文件包含

文章目录 基础概念php伪协议什么是协议协议的格式php中的协议file协议http协议ftp协议php://input协议php://filter协议php://data协议 php文件上传机制高级文件包含nginx文件日志包含临时文件包含session文件包含pear文件包含远程文件包含 基础概念 文件包含&#xff0c;相当…...

升级 SpringBoot3 全项目讲解 — Spring Boot 3 中如何发Http请求?

随着 Spring Boot 3 的发布&#xff0c;许多开发者开始考虑将他们的项目升级到这个新版本。Spring Boot 3 带来了许多新特性和改进&#xff0c;尤其是在 HTTP 请求处理方面。本文将详细介绍如何在 Spring Boot 3 中发送 HTTP 请求&#xff0c;并通过代码示例帮助你快速上手。 …...

分类预测 | MFO-LSSVM飞蛾扑火算法优化最小二乘支持向量机多特征分类预测Matlab实现

分类预测 | MFO-LSSVM飞蛾扑火算法优化最小二乘支持向量机多特征分类预测Matlab实现 目录 分类预测 | MFO-LSSVM飞蛾扑火算法优化最小二乘支持向量机多特征分类预测Matlab实现分类效果基本介绍程序设计参考资料 分类效果 基本介绍 1.Matlab实现MFO-LSSVM飞蛾扑火算法优化最小二…...

MyBatis Plus核心功能

一、条件构造器 1.为什么要学&#xff1f; 用于方便地构建SQL查询条件 2.如何使用&#xff1f; 3.实战案例 例&#xff1a;查询出名字中带o的&#xff0c;存款大于等于1000元的人的id,username,info,balance字段 数据库如图&#xff1a; 示例&#xff1a; Test void testL…...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码&#xff0c;写上注释 当然可以&#xff01;这段代码是 Qt …...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

React19源码系列之 事件插件系统

事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

【配置 YOLOX 用于按目录分类的图片数据集】

现在的图标点选越来越多&#xff0c;如何一步解决&#xff0c;采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集&#xff08;每个目录代表一个类别&#xff0c;目录下是该类别的所有图片&#xff09;&#xff0c;你需要进行以下配置步骤&#x…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点&#xff0c;但无自动故障转移能力&#xff0c;Master宕机后需人工切换&#xff0c;期间消息可能无法读取。Slave仅存储数据&#xff0c;无法主动升级为Master响应请求&#xff…...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控&#xff0c;故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令&#xff1a;jps [options] [hostid] 功能&#xff1a;本地虚拟机进程显示进程ID&#xff08;与ps相同&#xff09;&#xff0c;可同时显示主类&#x…...

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作&#xff1a;ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等&#xff08;ArcGIS出图图例8大技巧&#xff09;&#xff0c;那这次我们看看ArcGIS Pro如何更加快捷的操作。…...