GIS 文件格式 及 常规应用总结

文章目录

    • GIS 中常见的文件格式 以及 再次打开注意事项
    • 资源网站应用
      • 地图瓦片数据
      • 地形数据
      • 倾斜模型
    • QGS 应用
      • 矢量数据格式
      • 栅格数据格式
      • 数据库格式
      • 更改图层样式
      • 更改图层范围
      • 导出为不同分辨率图片
      • 导出矢量文件
        • 直接保存图层
        • 通过打印布局导出
        • 使用插件导出
    • tiff 图片前端处理方式

GIS 中常见的文件格式 以及 再次打开注意事项

一、Shapefile(.shp)格式

  1. 文件类型
    • Shapefile是一种矢量数据格式,用于存储地理要素的几何形状和属性信息。它实际上是由多个文件组成的文件集,包括主文件(.shp)、索引文件(.shx)和属性文件(.dbf)等。其中,.shp文件存储地理要素的几何形状,如点、线、多边形等;.shx文件包含要素几何形状的索引信息,用于快速定位和读取几何数据;.dbf文件则存储与地理要素相关的属性数据,如地名、面积、人口等。
  2. 再次打开条件
    • 需要使用支持Shapefile格式的GIS软件,如ArcGIS、QGIS等。这些软件能够识别并读取Shapefile文件集的各个组成部分,将几何形状和属性信息正确地显示和关联起来。在打开时,软件会根据索引文件来快速定位几何数据,并结合属性文件展示完整的地理要素信息。

二、GeoJSON(.geojson)格式

  1. 文件类型
    • GeoJSON是一种基于JavaScript Object Notation(JSON)的地理数据交换格式。它可以用来表示各种地理要素,包括点、线、面、多点、多线、多面等几何类型,并且可以方便地存储地理要素的属性信息。例如,一个表示城市位置的GeoJSON文件可以包含城市的坐标(点几何类型)以及城市名称、人口等属性信息。
  2. 再次打开条件
    • 许多现代的GIS软件和Web地图库都支持GeoJSON格式。在打开时,软件会解析JSON结构,提取其中的几何信息和属性信息来显示地理要素。由于GeoJSON是一种文本格式,它的内容相对直观,易于阅读和编辑。一些代码编辑器也可以打开GeoJSON文件,方便用户手动修改其中的数据,但要正确显示地理空间信息,还需要专门的GIS软件或具有地理数据处理功能的工具。

三、KML / KMZ(.kml、.kmz)格式

  1. 文件类型
    • KML(Keyhole Markup Language)是一种用于描述地理数据的XML格式,主要用于在Google Earth等软件中显示地理信息。它可以用来表示点、线、多边形、地标、路径等多种地理要素,并且支持添加样式信息,如颜色、图标等。KMZ是KML的压缩文件格式,将KML文件和相关的资源(如图标文件)打包在一起。
  2. 再次打开条件
    • 要再次打开KML或KMZ文件,需要使用支持KML格式的地理软件,如Google Earth、ArcGIS Earth等。这些软件会解析KML或KMZ文件中的XML结构,根据其中定义的地理要素类型、坐标和样式信息,将地理数据以直观的方式显示在地图上。对于KMZ文件,软件会自动解压其中的内容来获取KML文件和相关资源进行显示。

四、Raster(栅格)文件格式(如.tif、.img等)

  1. 文件类型
    • TIFF(.tif)是一种常用的栅格图像文件格式,在GIS中用于存储遥感影像、数字高程模型(DEM)等数据。它可以存储多波段数据,例如,卫星遥感影像通常包含多个波段,分别对应不同的光谱范围,这些波段可以用于进行植被分析、土地利用分类等操作。IMG文件格式(如Erdas Imagine的. img格式)也是一种栅格数据格式,常用于存储和处理遥感和地理空间数据。
  2. 再次打开条件
    • 再次打开栅格文件需要使用能够处理栅格数据的GIS软件。这些软件需要具备对相应文件格式的解码能力,例如,对于TIFF文件,软件要能够读取其文件头中的元数据信息,包括图像的尺寸、分辨率、波段数量等,然后将每个像素的灰度值或彩色值正确地显示出来。对于多波段的栅格文件,软件还应该提供工具用于选择和处理不同的波段,如进行波段组合、增强等操作。同时,为了准确显示地理空间位置,栅格文件通常还需要与地理坐标系统信息相关联,软件要能够正确读取和应用这些坐标系统信息。

五、Geodatabase(.gdb)格式

  1. 文件类型
    • Geodatabase是ArcGIS软件体系中的一种数据存储格式,它是一种高级的、面向对象的数据模型,用于存储和管理各种地理数据,包括矢量数据(如要素类)、栅格数据、拓扑关系、网络数据等。它提供了强大的数据组织和管理功能,例如,可以定义数据的完整性规则、建立要素之间的关联关系等。
  2. 再次打开条件
    • 主要由ArcGIS系列软件打开,如ArcMap、ArcGIS Pro等。这些软件可以识别Geodatabase的内部结构,包括其包含的不同类型的数据对象,如要素数据集、表等。在打开时,软件会根据Geodatabase中定义的规则和关系,正确加载和显示地理数据,并且可以利用其管理功能进行数据编辑、查询等操作。

资源网站应用

以下是一些可以免费下载地图瓦片数据、地形、倾斜模型的网站:

地图瓦片数据

  • OpenStreetMap:网址为https://www.openstreetmap.org/,是全球性开源地图项目,可在官网下载所选区域矢量数据,也可通过API获取.
  • 天地图:网址是https://t{s}.tianditu.gov.cn/dataserver?t=img_w&x={x}&y={y}&l={z}&tk={tk},可根据范围、层级等参数下载影像底图瓦片.
  • 谷歌地图:可通过非官方搭建瓦片服务下载,如https://bgn1.gpstool.com/maps/vt?lyrs=s&v=982&gl=cn&x={x}&y={y}&z={z},但需注意其地址可能变更.
  • MapTileGenerator:项目地址为https://gitcode.com/gh_mirrors/ma/MapTileGenerator,支持TMS、WMTS标准瓦片下载及百度、高德等地图瓦片下载.

地形数据

  • OpenTopography:网址http://www.opentopography.org,提供高空间分辨率地形数据及操作工具,可下载LiDAR数据等.
  • USGS Earth Explorer:网址https://earthexplorer.usgs.gov/,能找到卫星影像、地形高程等多种数据.
  • ETOPO:由美国地球物理中心打造,涵盖陆地和海底地形数据.
  • SRTM15:数据集分辨率为15弧秒,精度达0.5公里,兼顾陆地和海洋深度.
  • GMTED:是USGS与NGA合作成果,精度为250米,对GTOPO30的升级版本.

倾斜模型

  • 倾斜摄影数据下载仓库:项目地址https://gitcode.com/open-source-toolkit/49b96,提供约2GB的倾斜摄影数据,适用于多领域.
  • 四维轻云:地理空间数据云管理平台,可在线预览和管理倾斜摄影模型、正射影像和激光点云等数据.
  • LocaSpace Viewer:网址https://m.onlinedown.net/soft/10009088.htm,支持倾斜摄影三维模型格式如*.osgb、*.dae等的浏览.

QGS 应用

QGIS软件格式转换:

矢量数据格式

  • Shapefile(.shp):可与MapInfo Tab格式相互转换,通过“添加矢量图层”加载数据后,选择“另存为”来转换.
  • GeoJSON(.geojson):能和Shapefile等格式转换,导入GeoJSON文件后,使用“另存为”功能可保存为其他支持的矢量格式.
  • KML / KMZ(.kml、.kmz):可与其他矢量格式互转,QGIS支持读取KML、KMZ文件并转换为如Shapefile等格式,反之亦然.
  • GPX(.gpx):能转换为Shapefile等格式,导入GPX文件后,借助“另存为”操作实现格式转换.

栅格数据格式

  • GeoTIFF(.tif):可与其他栅格格式或矢量格式相互转换,如将其转换为JPEG格式的图片,或依据其生成Shapefile格式的矢量数据.
  • JPEG(.jpg):能转换为GeoTIFF等格式,在QGIS中打开JPEG图像后,通过“另存为”并选择相应格式来转换.

数据库格式

  • PostGIS:QGIS可连接PostGIS数据库,将其中的数据转换为如Shapefile等格式输出,也可将其他格式数据导入到PostGIS数据库.
  • Spatialite:可与Shapefile等矢量数据格式相互转换,QGIS能读取Spatialite数据库中的数据并另存为其他格式,也可将数据导入到Spatialite数据库.

更改图层样式

  • 在QGIS项目内更改:在QGIS中打开工程并加载图层后,可直接双击图层打开“属性”对话框,切换到“符号系统”页面进行样式设置,如对矢量图层可选择渐变渲染等方式,并按需调整参数,调整完毕后点击“应用”即可查看效果,最后点击“样式”下的“保存样式”可将其保存下来供后续使用.
  • 结合GeoServer更改:先在QGIS中打开矢量或栅格数据集,进入图层“属性”的“符号系统”页面设置好样式并以SLD格式保存样式文件。然后登录GeoServer,在“样式”部分点击“添加新样式”,上传之前导出的SLD文件,验证无误后点击“保存”。最后在GeoServer的“图层”页面找到相应图层,进入“发布”页面,将样式设置为默认样式并保存,即可在图层预览中查看更改后的样式.

更改图层范围

  • 手动编辑顶点:将需要修改的图层添加进QGIS后,选中图层并右键选择“切换编辑模式”,再点击工具栏中的“顶点工具”,将鼠标移到需修改的多边形上,选中顶点后右键拖拽即可修改范围,若修改位置无顶点,可选中线上的“x号”再右键拖拽来改变范围.
  • 使用裁剪工具:例如要按特定区域裁剪路网数据,先准备好裁剪范围的数据,如湖南省的shp数据。然后打开QGIS的矢量叠加分析工具中的“裁剪”按钮,在弹出窗口中依次选择输入图层、叠加图层及裁剪结果图层的保存位置,点击“保存”和“运行”按钮执行裁切操作,即可得到按指定范围裁剪后的图层.

导出为不同分辨率图片

  1. 点击菜单栏的【Projects】-【Import/Export】-【Export Map to Image】,打开导出图片界面。
  2. 在导出图片界面的“分辨率”部分,通过输入不同的DPI值来设置所需的分辨率,DPI即每英寸点数,数值越大,分辨率越高,图片越清晰。
  3. 在“出图范围”中选择合适的界定方式,如按照工程文件坐标系四至范围、根据图层范围、以布局中地图范围、以书签范围导出、以当前地图区域显示窗口为界或画一个临时窗口为界等。
  4. 在QGIS状态栏调整比例尺,或直接缩放地图窗口至合适的尺度,再拾取到【出图设置】中,以确保导出的图片比例符合预期。
  5. 点击“输出图片的图片高宽值”旁的箭头,选择合适的图片格式,QGIS支持jpg、png等多种主流格式,然后点击“保存”即可导出不同分辨率的地图图片 。

导出矢量文件

直接保存图层

在图层列表中找到需要导出的矢量图层,右键点击该图层,选择“另存为”,在弹出的“另存为”对话框中,选择要保存的矢量文件格式,如Shapefile、GeoJSON、KML等,还可以设置文件的编码和坐标参考系统等参数,最后点击“确定”即可.

通过打印布局导出

先选择菜单栏的“工程”,点击“新建打印布局”,为新建的布局命名后会弹出新界面,点击“添加地图”,将地图添加到布局中。还可以根据需要添加指北针、比例尺等组件,调整好布局后,点击菜单栏“布局”中的“导出为图像”,在弹出的对话框中选择“SVG”格式进行导出,SVG是一种矢量图形格式.

使用插件导出

安装mapflow插件后,在菜单栏上点击插件按钮启动,输入申请到的key登录插件,在设置界面中设置相关参数,如项目名称、使用的模型、处理的范围、影像的来源等,点击“开始处理”按钮,插件会自动识别并生成矢量数据,最后可将其导出.

tiff 图片前端处理方式

  1. 使用JavaScript库 - Tiff.js
    • 安装与引入
      • 首先,你可以通过npm安装Tiff.js(npm install tiff.js),或者在HTML文件中直接引入在线版本(<script src="https://unpkg.com/tiff.js@0.4.0/dist/tiff.min.js"></script>)。
    • 加载并显示TIFF图像
      • 假设你有一个TIFF图像文件(例如image.tif),你可以使用以下代码加载并显示它。
      <!DOCTYPE html>
      <html lang="en">
      <head>
        <meta charset="UTF - 8">
        <title>TIFF Image Processing</title>
        <script src="https://unpkg.com/tiff.js@0.4.0/dist/tiff.min.js"></script>
      </head>
      <body>
        <canvas id="tiffCanvas"></canvas>
        <script>
          // 创建一个XMLHttpRequest对象来加载TIFF文件
          var xhr = new XMLHttpRequest();
          xhr.open('GET', 'image.tif', true);
          xhr.responseType = 'arraybuffer';
          xhr.onload = function (e) {
            if (this.status === 200) {
              // 将加载的数组缓冲区数据传递给Tiff.js的Tiff构造函数
              var tiff = new Tiff({ buffer: this.response });
              var canvas = document.getElementById('tiffCanvas');
              var ctx = canvas.getContext('2d');
              // 获取TIFF图像的第一页(如果有多个页面)
              var imgData = tiff.getImageData();
              canvas.width = imgData.width;
              canvas.height = imgData.height;
              // 将图像数据绘制到Canvas上
              ctx.putImageData(imgData, 0, 0);
            }
          };
          xhr.send();
        </script>
      </body>
      </html>
      
      • 在这个例子中,首先使用XMLHttpRequest对象以arraybuffer类型加载TIFF文件。然后,通过Tiff构造函数创建一个Tiff对象,使用getImageData方法获取图像数据,设置canvas的大小,并将图像数据绘制到canvas上。
  2. 使用HTML5 Canvas进行简单处理(假设已经将TIFF转换为Canvas可处理的格式)
    • 图像缩放
      • 假设你已经将TIFF图像显示在一个canvas元素(id="tiffCanvas")上,以下代码可以实现图像的缩放。
      <!DOCTYPE html>
      <html lang="en">
      <head>
        <meta charset="UTF - 8">
        <title>TIFF Image Scaling</title>
      </head>
      <body>
        <canvas id="tiffCanvas"></canvas>
        <button onclick="scaleImage(0.5)">Scale to 50%</button>
        <script>
          function scaleImage(scaleFactor) {
            var canvas = document.getElementById('tiffCanvas');
            var ctx = canvas.getContext('2d');
            var newWidth = canvas.width * scaleFactor;
            var newHeight = canvas.height * scaleFactor;
            var scaledCanvas = document.createElement('canvas');
            scaledCanvas.width = newWidth;
            scaledCanvas.height = newHeight;
            var scaledCtx = scaledCanvas.getContext('2d');
            scaledCtx.drawImage(canvas, 0, 0, newWidth, newHeight);
            canvas.width = newWidth;
            canvas.height = newHeight;
            ctx.drawImage(scaledCanvas, 0, 0);
          }
        </script>
      </body>
      </html>
      
      • 当点击Scale to 50%按钮时,scaleImage函数会被调用。它首先计算缩放后的宽度和高度,创建一个新的canvas用于绘制缩放后的图像,然后使用drawImage方法将原始图像绘制到新canvas上进行缩放,最后将缩放后的图像更新到原始canvas中。
    • 图像裁剪
      • 以下代码可以实现对已经显示在canvasid="tiffCanvas")上的图像进行裁剪。
      <!DOCTYPE html>
      <html lang="en">
      <head>
        <meta charset="UTF - 8">
        <title>TIFF Image Cropping</title>
      </head>
      <body>
        <canvas id="tiffCanvas"></canvas>
        <button onclick="cropImage(50, 50, 200, 200)">Crop Image</button>
        <script>
          function cropImage(x, y, width, height) {
            var canvas = document.getElementById('tiffCanvas');
            var ctx = canvas.getContext('2d');
            var croppedCanvas = document.createElement('canvas');
            croppedCanvas.width = width;
            croppedCanvas.height = height;
            var croppedCtx = croppedCanvas.getContext('2d');
            croppedCtx.drawImage(canvas, x, y, width, height);
            canvas.width = width;
            canvas.height = height;
            ctx.drawImage(croppedCanvas, 0, 0);
          }
        </script>
      </body>
      </html>
      
      • 当点击Crop Image按钮时,cropImage函数会被调用。它根据传入的坐标(xy)以及宽度和高度创建一个新的canvas用于绘制裁剪后的图像,使用drawImage方法将原始图像的指定部分绘制到新canvas上,最后将裁剪后的图像更新到原始canvas中。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LabVIEW软件开发的未来趋势

LabVIEW软件开发的未来趋势可以从以下几个方面来分析&#xff1a; ​ 1. 与AI和机器学习的深度结合 趋势&#xff1a;LabVIEW正在向集成AI和机器学习方向发展&#xff0c;尤其是在数据处理、预测性维护和自动化控制领域。 原因&#xff1a;AI技术的普及使得实验和工业场景中的…

H3C MPLS跨域optionB

实验拓扑 实验需求 如图,VPN1 和 VPN2 分别通过运营商 MPLS VPN 连接各自分支机构按照图示配置 IP 地址,VPN1 和 VPN2 连接同一个 PE 设备的私网 IP 网段存在地址复用,使用多 VRF 技术来防止 IP 冲突AS 100 和 AS 200 内部的公共网络中各自运行 OSPF 使 AS 内各设备的 Loo…

【数据结构练习题】链表与LinkedList

顺序表与链表LinkedList 选择题链表面试题1. 删除链表中等于给定值 val 的所有节点。2. 反转一个单链表。3. 给定一个带有头结点 head 的非空单链表&#xff0c;返回链表的中间结点。如果有两个中间结点&#xff0c;则返回第二个中间结点。4. 输入一个链表&#xff0c;输出该链…

细说STM32F407单片机轮询方式读写SPI FLASH W25Q16BV

目录 一、工程配置 1、时钟、DEBUG 2、GPIO 3、SPI2 4、USART6 5、NVIC 二、软件设计 1、FALSH &#xff08;1&#xff09;w25flash.h &#xff08;2&#xff09; w25flash.c 1&#xff09;W25Q16基本操作指令 2&#xff09;计算地址的辅助功能函数 3&#xff09;器…

框架程序设计-简答以及论述

目录 maven的pom作用&#xff1a; Pointcut("execution(*com.example.dome.*.*(……))") 缓存的作用&#xff0c;redis配置过程 Redis配置过程&#xff1a; SpringBoot缓存配置过程&#xff1a; AOP的五种增强注解&#xff1a; 论述题&#xff1a;包结构作用、…

如何在谷歌浏览器中启用语音搜索

想象一下&#xff0c;你正在拥挤的地铁上&#xff0c;双手都拿着沉重的购物袋&#xff0c;突然你想搜索附近的咖啡馆。此时如果你能通过语音而不是打字来进行搜索&#xff0c;那将多么的便利&#xff01;在谷歌浏览器中&#xff0c;启用语音搜索功能就是这么简单而高效&#xf…

C语言从入门到放弃教程

C语言从入门到放弃 1. 介绍1.1 特点1.2 历史与发展1.3 应用领域 2. 安装2.1 编译器安装2.2 编辑器安装 3. 第一个程序1. 包含头文件2. 主函数定义3. 打印语句4. 返回值 4. 基础语法4.1 注释4.1.1 单行注释4.1.2 多行注释 4.2 关键字4.2.1 C语言标准4.2.2 C89/C90关键字&#xf…

实力认可 | 通付盾入选《ISC.AI 2024创新能力全景图谱》五项领域

近日&#xff0c;ISC.AI 2024创新能力百强&#xff08;以下简称“创新百强”&#xff09;正式发布《ISC.AI 2024创新能力全景图谱》。该全景图谱是由政企、资本、高校、行业力量共同完成了领域划分、综合创新等标准的制定&#xff0c;整合梳理了参评的300余家数字安全厂商、120…

Vue3项目中引入TailwindCSS(图文详情)

Vue3项目中引入TailwindCSS&#xff08;图文详细&#xff09; Tailwind CSS 是一个实用工具优先的 CSS 框架&#xff0c;提供丰富的低级类&#xff08;如 text-center、bg-blue-500&#xff09;&#xff0c;允许开发者通过组合这些类快速构建自定义设计&#xff0c;而无需编写…

WordPress File Upload 插件 任意文件读取漏洞复现(CVE-2024-9047)

0x01 产品简介 WordPress File Upload插件是一款功能强大的WordPress站点文件上传插件,它允许用户在WordPress站点中的文章、页面、侧边栏或表单中轻松上传文件到wp-contents目录中的任何位置。该插件使用最新的HTML5技术,确保在现代浏览器和移动设备上都能流畅运行,同时也…

GFPS扩展技术原理(七)-音频切换消息流

音频切换消息流 Seeker和Provider通过消息流来同步音频切换能力&#xff0c;触发连接做切换&#xff0c;获取或设置音频切换偏好&#xff0c;通知连接状态等等。为此专门定义了音频切换消息流Message Group 为0x07&#xff0c;Message codes如下&#xff1a; MAC of Audio s…

Java开发经验——系统迁移经验

摘要 本文全面介绍了系统迁移的各个关键步骤和策略&#xff0c;包括需求分析、数据迁移、系统集成、功能优化、业务连续性保障、用户迁移、性能测试、切换与回滚机制、文档转移等。同时&#xff0c;探讨了通用迁移方案、挑战应对措施、不同规模系统的迁移策略&#xff0c;以及…

JavaWeb - ⭐ AOP 面相切面编程原理及用户校验功能实战

一、概述 定义&#xff1a; AOP (Aspect Oriented Programming 面向切面编程) &#xff0c;一种面向方法编程的思想 功能&#xff1a;管理 bean 对象的过程中&#xff0c;通过底层的动态代理机制对特定方法进行功能的增强或改变 实现方式&#xff1a;动态代理技术&#xff0c…

MFC案例:图片文件转图标(ico)格式

本案例程序目的是将一般图像文件转换成图标格式(ico)。实现起来不是很复杂&#xff0c;这里为了介绍MFC的具体使用方法&#xff0c;在程序界面上分成几个功能块&#xff0c;包括&#xff1a;打开图像文件、选择ICON大小、转换、预览、保存等。相关具体步骤如下&#xff1a; 一、…

Scala_【2】变量和数据类型

第二章 注释标识符的命名规范命名规则关键字 变量字符串输出数据类型关系变量和数据类型整数类型&#xff08;Byte、Short、Int、Long&#xff09;浮点类型&#xff08;Float、Double&#xff09;字符类型&#xff08;Char&#xff09;布尔类型&#xff08;Boolean&#xff09;…

R语言数据分析案例46-不同区域教育情况回归分析和探索

一、研究背景 教育是社会发展的基石&#xff0c;对国家和地区的经济、文化以及社会进步起着至关重要的作用。在全球一体化进程加速的今天&#xff0c;不同区域的教育发展水平呈现出多样化的态势。这种差异不仅体现在教育资源的分配上&#xff0c;还表现在教育成果、教育投入与…

8086汇编(16位汇编)学习笔记03.汇编指令

8086汇编(16位汇编)学习笔记03.汇编指令-C/C基础-断点社区-专业的老牌游戏安全技术交流社区 - BpSend.net 指令种类 数据传送指令算数运算类指令位操作类指令串操作类指令控制转移类指令处理器控制类指令 数据传送类指令 **传送类指令不影响标志位&#xff0c;**除了标志位传…

Antd react上传图片格式限制

限制分辨率&#xff08;像素&#xff09; <a-upload :before-upload"beforeUpload">// 上传图片宽高比例限制const beforeUpload file > {return new Promise((resolve, reject) > {// // 图片类型限制// let isJpgOrPng file.type image/png || fil…

Confluent Cloud Kafka 可观测性最佳实践

Confluent Cloud 介绍 Confluent Cloud 是一个完全托管的 Apache Kafka 服务&#xff0c;提供高可用性和可扩展性&#xff0c;旨在简化数据流处理和实时数据集成。用户可以轻松创建和管理 Kafka 集群&#xff0c;而无需担心基础设施的维护和管理。Confluent Cloud 支持多种数据…

StartAI图生图局部重绘,让画面细节焕发新生!!

在设计的世界里&#xff0c;每一个细节都承载着我们的创意与心血。然而&#xff0c;有时我们总会遇到一些不尽如人意的画面细节&#xff0c;它们如同瑕疵般破坏了整体的和谐与美感。今天&#xff0c;我要向大家推荐一款强大的工具——StartAI的局部重绘功能&#xff0c;它正是我…