【AI大模型】深入解析 存储和展示地理数据(.kmz)文件格式:结构、应用与项目实战

news2024/10/27 22:30:42

在这里插入图片描述

文章目录

      • 1. 引言
      • 2. 什么是 .kmz 文件?
        • 2.1 `.kmz` 文件的定义与用途
        • 2.2 `.kmz` 与 `.kml` 的关系
        • 2.3 常见的 `.kmz` 文件使用场景
      • 3. `.kmz` 文件的内部结构
        • 3.1 `.kmz` 文件的压缩格式
        • 3.2 解压缩 `.kmz` 文件的方法
        • 3.3 `.kmz` 文件的典型内容
        • 3.4 `.kml` 文件的结构与主要元素介绍
      • 4. 深入解析 `.kml` 文件格式
        • 4.1 `.kml` 文件的 XML 结构
        • 4.2 常见的 `.kml` 元素及其功能
          • 4.2.1 `<Placemark>`
          • 4.2.2 `<Document>`
          • 4.2.3 `<Point>`
          • 4.2.4 `<coordinates>`
        • 4.3 示例分析:实际 `.kml` 文件的解读
      • 5. 使用 Python 解析 `.kmz` 文件
        • 5.1 使用 `zipfile` 模块解压 `.kmz` 文件
        • 5.2 使用 `xml.etree.ElementTree` 解析 `.kml` 文件
        • 5.3 提取 `.kml` 文件中的地理坐标与描述信息
        • 5.4 处理复杂 `.kml` 文件的技巧
      • 6. `.kmz` 文件的应用场景
        • 6.1 在 Google Earth 中的应用与操作
        • 6.2 GIS 软件中的 `.kmz` 文件处理
        • 6.3 导航系统中的 `.kmz` 数据导入与解析
        • 6.4 3D 模型在 `.kmz` 文件中的使用
      • 7. 高级主题:自定义 `.kmz` 文件
        • 7.1 创建 `.kml` 文件并打包为 `.kmz`
        • 7.2 自定义地理标记与路径
        • 7.3 添加图像、3D 模型和样式
        • 7.4 使用 HTML 与 CDATA 定义复杂的描述信息
        • 7.5 处理与优化大型 `.kmz` 文件
      • 8. `.kmz` 文件的可视化
        • 8.1 在不同平台上展示 `.kmz` 数据
        • 8.2 使用 Python 进行 `.kmz` 数据的可视化
        • 8.3 将 `.kmz` 转换为其他格式(如 GeoJSON)并展示
      • 9. 常见问题与解决方案
        • 9.1 `.kmz` 文件解压失败的常见原因
        • 9.2 `.kml` 文件解析中的命名空间问题
        • 9.3 处理含有多个 `.kml` 文件的 `.kmz` 文件
        • 9.4 优化 `.kmz` 文件体积的技巧
      • 10. 项目实战
        • 10.1 文件格式(关键部分)
        • 10.2 主要代码片段
        • 10.3 保存Excel文件
      • 11. 未来发展与前景
        • 11.1 `.kmz` 文件格式的演变与未来
        • 11.2 在大数据与地理信息分析中的应用潜力
        • 11.3 与其他地理信息格式的比较与整合
      • 12. 结论
      • 13. 参考文献

1. 引言

在现代地理信息系统 (GIS) 和导航应用中,.kmz 文件是一种广泛使用的格式。它通过压缩 .kml 文件,将地理数据、图像、3D 模型和其他资源打包成一个单一文件,方便了数据的传输和共享。本文旨在详细探讨 .kmz 文件的内部结构、应用场景以及如何使用 Python 进行解析和处理,并提供丰富的实践示例和应用指南。

.kmz 文件的出现,使得复杂的地理信息变得易于管理和传递。无论是在 Google Earth 中展示地标,还是在专业导航系统中导入路线,.kmz 文件都起到了关键作用。然而,由于其内部结构相对复杂,许多用户在实际使用中遇到了解析与应用的难题。因此,本文将深入剖析 .kmz 文件的各个组成部分,并提供详尽的代码示例,帮助读者全面掌握 .kmz 文件的解析与应用。

2. 什么是 .kmz 文件?

2.1 .kmz 文件的定义与用途

.kmz 文件是 Keyhole Markup Language (KML) 的压缩版本,用于存储和展示地理数据。.kml 文件使用 XML 格式来定义地标、路径、图形覆盖和其他地理信息。通过将 .kml 文件及其关联资源(如图像和模型)压缩成 .kmz 文件,用户可以更方便地分享这些数据。

2.2 .kmz.kml 的关系

.kml 文件是 .kmz 文件的核心部分,所有的地理信息都以 XML 标签的形式定义在 .kml 文件中。.kmz 文件不仅仅是压缩了 .kml 文件,它还可以包含其他文件,如图像和 3D 模型。这使得 .kmz 文件更为强大,因为它可以在一个文件中包含完整的地理数据及其关联资源。

2.3 常见的 .kmz 文件使用场景
  • Google Earth:用户可以通过 .kmz 文件在 Google Earth 中展示自定义地图、地标和路径。
  • 导航系统:导航设备和软件通常使用 .kmz 文件导入预定义的路线和兴趣点。
  • GIS 软件:许多 GIS 应用程序支持导入和导出 .kmz 文件,用于数据分析和可视化。

3. .kmz 文件的内部结构

3.1 .kmz 文件的压缩格式

.kmz 文件实际上是一个使用 ZIP 格式压缩的文件。因此,.kmz 文件可以通过任何支持 ZIP 的工具(如 7-Zip、WinRAR 等)进行解压缩。解压缩后,可以看到 .kml 文件及其相关的图像、3D 模型等资源。

3.2 解压缩 .kmz 文件的方法

你可以使用以下方式解压缩 .kmz 文件:

  • 使用解压工具:直接将 .kmz 文件重命名为 .zip,然后使用解压工具解压。
  • 使用 Python:使用 Python 的 zipfile 模块进行解压缩。

例如,使用 Python 解压缩 .kmz 文件的代码如下:

import zipfile

def extract_kmz(kmz_file, output_dir):
    with zipfile.ZipFile(kmz_file, 'r') as kmz:
        kmz.extractall(output_dir)

# 示例
extract_kmz('example.kmz', 'output_directory')
3.3 .kmz 文件的典型内容

一个 .kmz 文件通常包含以下内容:

  • doc.kml 文件:主要的 .kml 文件,包含地理数据和描述信息。
  • 图像文件:支持 .kml 文件中使用的图像,通常用于地面覆盖(GroundOverlay)或地标图标。
  • 3D 模型文件:如 COLLADA (.dae) 文件,用于展示三维建筑或地形。
3.4 .kml 文件的结构与主要元素介绍

.kml 文件是一个基于 XML 的文件,包含描述地理数据的标签。常见的元素包括:

  • <kml>:根元素,定义命名空间。
  • <Document>:包含一个或多个地理数据的集合。
  • <Placemark>:定义一个地标或路径。
  • <Point>:定义地理位置(经纬度)。
  • <coordinates>:包含经度、纬度和高度信息。
  • <Style><StyleMap>:定义地标的样式和外观。
  • <GroundOverlay>:在地图上覆盖图像。
  • <TimeStamp><TimeSpan>:定义时间信息。

4. 深入解析 .kml 文件格式

4.1 .kml 文件的 XML 结构

.kml 文件使用 XML 语法,包含一系列定义地理信息的标签。每个标签对应一个地理元素,如地标、路径或图像覆盖。

4.2 常见的 .kml 元素及其功能
4.2.1 <Placemark>

<Placemark>.kml 文件中最常见的元素之一,表示地图上的一个地标。它通常包含以下子元素:

  • <name>:地标的名称。
  • <description>:地标的描述信息,可以包含 HTML 或 CDATA。
  • <Point>:地标的位置。
  • <coordinates>:地标的地理坐标。
4.2.2 <Document>

<Document> 是一个容器元素,包含多个 <Placemark> 元素以及其他相关元素。

4.2.3 <Point>

<Point> 元素用于定义一个点的地理位置,通常包含一个 <coordinates> 子元素。

4.2.4 <coordinates>

<coordinates> 元素定义经度、纬度和高度,格式为:<longitude>,<latitude>,<altitude>

4.3 示例分析:实际 .kml 文件的解读

以下是一个简单的 .kml 文件示例:

<kml xmlns="http://www.opengis.net/kml/2.2">
  <Document>
    <name>Example KML</name>
    <Placemark>
      <name>Example Placemark</name>
      <Point>
        <coordinates>-122.0822035425683,37.42228990140251,0</coordinates>
      </Point>
    </Placemark>
  </Document>
</kml>

在这个示例中,<Placemark> 定义了一个名为 “Example Placemark” 的地标,位于西经 122.0822035425683 度、北纬 37.42228990140251 度的地点,高度为 0 米。

5. 使用 Python 解析 .kmz 文件

5.1 使用 zipfile 模块解压 .kmz 文件

在 Python 中,可以使用 zipfile 模块来解压缩 .kmz 文件。解压缩后,我们可以访问其中的 .kml 文件及其他资源。

以下是一个解压缩 .kmz 文件的示例:

import zipfile

def extract_kmz(kmz_file, output_dir):
    with zipfile.ZipFile(kmz_file, 'r') as kmz:
        kmz.extractall(output_dir)

# 示例
extract_kmz('example.kmz', 'output_directory')
5.2 使用 xml.etree.ElementTree 解析 .kml 文件

解压缩 .kmz 文件后,我们可以使用 xml.etree.ElementTree 模块来解析 .kml 文件的内容。以下是一个简单的解析示例:

import xml.etree.ElementTree as ET

def parse_kml(kml_file):
    tree = ET.parse(kml_file)
    root = tree.getroot()
    namespace = {'kml': 'http://www.opengis.net/kml/2.2'}

    # 查找所有的 Placemark 元素
    placemarks = root.findall('.//kml:Placemark', namespace)
    for placemark in placemarks:
        name = placemark.find('kml:name', namespace).text
        coordinates = placemark.find('.//kml:coordinates', namespace).text
        print(f'Name: {name}, Coordinates: {coordinates}')

# 示例
parse_kml('output_directory/doc.kml')
5.3 提取 .kml 文件中的地理坐标与描述信息

在解析 .kml 文件时,我们可以提取特定的地理坐标和描述信息。以下代码展示了如何提取地

标名称和坐标:

import xml.etree.ElementTree as ET

def extract_coordinates(kml_file):
    tree = ET.parse(kml_file)
    root = tree.getroot()
    namespace = {'kml': 'http://www.opengis.net/kml/2.2'}

    # 提取所有地标的名称和坐标
    for placemark in root.findall('.//kml:Placemark', namespace):
        name = placemark.find('kml:name', namespace).text
        coords = placemark.find('.//kml:coordinates', namespace).text
        print(f'地标名称: {name}, 坐标: {coords}')

# 示例
extract_coordinates('output_directory/doc.kml')
5.4 处理复杂 .kml 文件的技巧

在实际应用中,.kml 文件可能包含多种元素和嵌套结构。处理这些复杂结构时,使用命名空间和 XPath 进行精确查找是非常重要的。

6. .kmz 文件的应用场景

6.1 在 Google Earth 中的应用与操作

Google Earth 是 .kmz 文件的主要应用平台之一。用户可以通过 .kmz 文件创建和展示自定义地图、地标、路径和图形覆盖。

6.2 GIS 软件中的 .kmz 文件处理

在专业 GIS 软件中,.kmz 文件被广泛用于地理数据的存储和传输。GIS 专家可以通过 .kmz 文件分析地理信息,并将结果导出为其他格式。

6.3 导航系统中的 .kmz 数据导入与解析

许多导航系统支持 .kmz 文件格式,用户可以导入预定义的路线和兴趣点,从而提高导航的准确性和用户体验。

6.4 3D 模型在 .kmz 文件中的使用

.kmz 文件不仅可以存储二维地理信息,还可以包含 3D 模型,使其在虚拟现实和三维地图中具有广泛的应用。

7. 高级主题:自定义 .kmz 文件

7.1 创建 .kml 文件并打包为 .kmz

用户可以通过文本编辑器创建 .kml 文件,然后使用 ZIP 工具将其与相关资源压缩成 .kmz 文件。例如:

  1. 创建 example.kml 文件。
  2. 创建相关的图像或模型文件夹。
  3. .kml 文件和资源文件夹压缩为 example.kmz
7.2 自定义地理标记与路径

.kml 文件中,用户可以自定义地理标记和路径。例如,使用 <Placemark><LineString> 元素定义路径:

<Placemark>
  <name>Example Path</name>
  <LineString>
    <coordinates>
      -122.084,37.421,0 -122.084,37.422,0 -122.084,37.423,0
    </coordinates>
  </LineString>
</Placemark>
7.3 添加图像、3D 模型和样式

用户可以通过 <GroundOverlay> 添加图像覆盖,通过 <Model> 添加 3D 模型,并使用 <Style> 元素定义样式。例如:

<Style id="exampleStyle">
  <IconStyle>
    <Icon>
      <href>http://example.com/icon.png</href>
    </Icon>
  </IconStyle>
</Style>
7.4 使用 HTML 与 CDATA 定义复杂的描述信息

.kml 文件中,描述信息可以使用 HTML 进行格式化,并通过 CDATA 区块嵌入复杂的内容。例如:

<description><![CDATA[
  <h1>地标标题</h1>
  <p>详细描述内容,可以包含 <b>HTML</b> 标签。</p>
]]></description>
7.5 处理与优化大型 .kmz 文件

处理大型 .kmz 文件时,用户应注意优化文件大小和加载性能。可以通过减少资源文件的分辨率和压缩比来优化 .kmz 文件。

8. .kmz 文件的可视化

8.1 在不同平台上展示 .kmz 数据

.kmz 文件可以在多个平台上进行展示,如 Google Earth、ArcGIS 等。用户可以通过这些平台直观地查看 .kmz 文件的内容。

8.2 使用 Python 进行 .kmz 数据的可视化

通过 Python 的地理可视化库(如 foliumgeopandas),用户可以将 .kmz 文件中的地理数据可视化。例如,使用 folium 库展示地标:

import folium

def visualize_kml(kml_file):
    m = folium.Map(location=[37.422, -122.084], zoom_start=13)
    folium.GeoJson(kml_file).add_to(m)
    m.save('kml_map.html')

# 示例
visualize_kml('output_directory/doc.kml')
8.3 将 .kmz 转换为其他格式(如 GeoJSON)并展示

用户可以将 .kmz 文件中的 .kml 数据转换为其他地理数据格式,如 GeoJSON,然后在 Web 地图应用中展示。

9. 常见问题与解决方案

9.1 .kmz 文件解压失败的常见原因
  • 压缩格式错误:确保 .kmz 文件使用标准 ZIP 格式压缩。
  • 文件损坏:如果 .kmz 文件损坏,可能需要重新下载或重新生成。
9.2 .kml 文件解析中的命名空间问题

在解析 .kml 文件时,命名空间可能会导致元素查找失败。用户应使用正确的命名空间前缀进行查找。

9.3 处理含有多个 .kml 文件的 .kmz 文件

如果 .kmz 文件中包含多个 .kml 文件,用户需要分别提取和解析每个文件,确保所有地理信息都能正确加载。

9.4 优化 .kmz 文件体积的技巧
  • 图像压缩:使用更高效的图像压缩格式,如 JPEG。
  • 减少冗余数据:删除不必要的 <Placemark> 或其他冗余元素。

10. 项目实战

10.1 文件格式(关键部分)

在这里插入图片描述
在这里插入图片描述

10.2 主要代码片段

在这里插入图片描述

def extract_kmz_info(self, kmz_file_path):
        all_timestamps = []
        all_coordinates = []

        with zipfile.ZipFile(kmz_file_path, 'r') as kmz:
            # 查找 .kml 或 .KML 文件
            kml_files = [name for name in kmz.namelist() if name.lower().endswith('.kml')]
            if not kml_files:
                print(f"Warning: {kmz_file_path} does not contain any .kml files.")
                return [], []
            
            for kml_filename in kml_files:
                with kmz.open(kml_filename) as kml_file:
                    print(f'打开: {kml_filename}')
                    kml_content = kml_file.read()
                    soup = BeautifulSoup(kml_content, 'xml')

                    # 打印XML结构以调试
                    # print(soup.prettify())

                    timestamps = []
                    coordinates = []

                    for placemark in soup.find_all('Placemark'):
                        timestamp = placemark.find('TimeStamp')
                        coordinate = placemark.find('coordinates')
                        
                        if timestamp and coordinate:
                            timestamp_text = timestamp.find('when').text if timestamp.find('when') else None
                            if timestamp_text:
                                # 解析时间字符串为 datetime 对象
                                utc_datetime = datetime.strptime(timestamp_text, '%Y-%m-%dT%H:%M:%SZ')
                                
                                # 转换为北京时间(东八区)
                                beijing_datetime = utc_datetime + timedelta(hours=8)

                                # 格式化为可读的日期时间字符串,保留到毫秒
                                datetime_str = beijing_datetime.strftime('%Y-%m-%d %H:%M:%S.%f')[:-4]
                                timestamps.append(datetime_str)
                            coordinates.append(coordinate.text.strip())
                        else:
                            # print(f"在 Placemark 中缺少时间戳或坐标: {placemark.prettify()}")
                            pass

                    all_timestamps.extend(timestamps)
                    all_coordinates.extend(coordinates)
        
        # 打印提取到的时间戳和坐标
        # print('提取到的时间戳:', all_timestamps)
        # print('提取到的坐标:', all_coordinates)

        return all_timestamps, all_coordinates
10.3 保存Excel文件

在这里插入图片描述

11. 未来发展与前景

11.1 .kmz 文件格式的演变与未来

随着 GIS 技术的不断发展,.kmz 文件格式可能会继续演变,以支持更多的功能和更高效的数据存储。

11.2 在大数据与地理信息分析中的应用潜力

.kmz 文件格式在大数据和地理信息分析中有着巨大的应用潜力。未来,随着数据处理能力的增强,.kmz 文件将能够更好地支持复杂的地理数据集分析。

11.3 与其他地理信息格式的比较与整合

.kmz 文件格式将继续与其他地理信息格式(如 GeoJSON、Shapefile)竞争和整合,为用户提供更广泛的数据交换和分析能力。

12. 结论

通过本次深入解析 .kmz 文件格式,我们了解了其结构、应用场景以及使用 Python 进行解析和处理的方法。.kmz 文件作为一种灵活而强大的地理数据格式,在 GIS 和导航系统中具有广泛的应用。通过掌握 .kmz 文件的解析与应用技能,用户可以更有效地处理地理数据,并在实践中更好地利用这一重要的文件格式。

13. 参考文献

  • Google Developers. “KML Documentation”. https://developers.google.com/kml/documentation
  • Open Geospatial Consortium. “KML Standard”. http://www.opengeospatial.org/standards/kml/
  • Python 官方文档. “zipfile — Work with ZIP archives”. https://docs.python.org/3/library/zipfile.html
  • ArcGIS 文档. “Working with KML”. https://pro.arcgis.com/en/pro-app/help/sharing/overview/working-with-kml.htm

以上内容完整覆盖了 .kmz 文件解析的各个方面,并提供了详细的实践和应用指导,旨在为读者在 GIS 和导航领域的实际应用中提供有力的支持和帮助。

欢迎点赞|关注|收藏|评论,您的肯定是我创作的动力

在这里插入图片描述

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

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

相关文章

豆包MarsCode Agent 登顶 SWE-bench Lite 评测集

大语言模型&#xff08;LLM&#xff09;能力正在迅速提升&#xff0c;对包括软件工程在内的诸多行业产生了深远影响。GPT-4o、Claude3.5 等 LLM 已经逐步展现出胜任复杂任务的能力&#xff0c;例如文本总结、智能客服、代码生成&#xff0c;甚至能够分析和解决数学问题。在这一…

为什么在网络中不能直接传输数据

为什么在网络中不能直接传输数据 原因 在网络中不能直接传输原始数据形式&#xff0c;主要有以下几方面原因&#xff1a; 数据表示的多样性&#xff1a;不同的计算机系统、编程语言和应用程序对数据的表示方式可能各不相同。例如&#xff0c;整数在不同的编程语言中可能有不同…

了解Java开发中的会话层

在现代Web应用开发中&#xff0c;会话管理是一个至关重要的概念。它涉及到如何在客户端和服务器之间保持用户状态信息&#xff0c;从而提供个性化、连续的用户体验。Java作为一种广泛使用的编程语言&#xff0c;在Web开发中扮演着重要角色&#xff0c;特别是在企业级应用中。了…

基于neo4j的课程资源生成性知识图谱

你是不是还在为毕业设计苦恼&#xff1f;又或者想在课堂中进行知识的高效管理&#xff1f;今天给大家分享一个你一定会感兴趣的技术项目——基于Neo4j的课程资源生成性知识图谱&#xff01;&#x1f4a1; 这套系统通过知识图谱的形式&#xff0c;将课程资源、知识点和学习路径…

一文掌握异步web框架FastAPI(五)-- 中间件(测试环境、访问速率限制、请求体解析、自定义认证、重试机制、请求频率统计、路径重写)

接上篇:一文掌握异步web框架FastAPI(四)-CSDN博客 目录 七、中间件 15、测试环境中间件 16、访问速率限制中间件,即限制每个IP特定时间内的请求数(基于内存,生产上要使用数据库) 1)限制单ip访问速率 2)增加限制单ip并发(跟上面的一样,也是限制每个IP特定时间内的请…

vue2结合echarts实现数据排名列表——前端柱状进度条排行榜

写在前面&#xff0c;博主是个在北京打拼的码农&#xff0c;工作多年做过各类项目&#xff0c;最近心血来潮在这儿写点东西&#xff0c;欢迎大家多多指教。 数据排名列表——图表开发&#xff0c;动态柱状图表&#xff0c;排名图 UI 直接搜到类似在线代码&#xff08;数据列表…

事务的原理、MVCC的原理

事务特性 数据库事务具有以下四个基本特性&#xff0c;通常被称为 ACID 特性&#xff1a; 原子性&#xff08;Atomicity&#xff09;&#xff1a;事务被视为不可分割的最小工作单元&#xff0c;要么全部执行成功&#xff0c;要么全部失败回滚。这意味着如果事务执行过程中发生…

交换机:端口安全与访问控制指南

为了实现端口安全和访问控制&#xff0c;交换机通常通过以下几种机制和配置来保护网络&#xff0c;防止未经授权的访问和恶意攻击。 01-端口安全 定义及功能 端口安全功能允许管理员限制每个交换机端口可以学习的MAC地址数量。 通过绑定特定的MAC地址到交换机的某一端口上&a…

二十二、Python基础语法(模块)

模块(module)&#xff1a;在python中&#xff0c;每个代码文件就是一个模块&#xff0c;在模块中定义的变量、函数、类别人都可以直接使用&#xff0c;如果想要使用别人写好的模块&#xff0c;就必须先导入别人的模块&#xff0c;模块名须满足标识符规则&#xff08;由字母、数…

MFC七段码显示实例

在MFC中添加iSenvenSegmentAnalogX控件&#xff0c;添加编辑框和按钮实现在编辑框中输入数字点击按钮后数字用七段码显示 1、在对话框中点击右键如下图添加控件和变量 2、在sevenDlg.h中添加代码 public: void ShowInd(int,double);3、在sevenDlg.cpp中添加代码 void CSe…

将 el-date-picker获取的时间数据转换成时间戳

在Vue.js中使用Element UI的el-date-picker组件时&#xff0c;你可以获取用户选择的日期并将其转换为时间戳。el-date-picker通常返回的是一个Date对象或一个格式化后的字符串&#xff08;取决于你如何配置它&#xff09;。下面是一个示例&#xff0c;展示了如何将el-date-pick…

攻防世界的新手web题解

攻防世界引导模式 1、disabled_button 好&#xff0c;给了一个按钮&#xff0c;第一道题目就不会做 看的wp<input disabled class"btn btn-default" style"height:50px;width:200px;" type"submit" value"flag" name"auth&q…

来源爬虫程序调研报告

来源爬虫程序调研报告 一、什么是爬虫 爬虫&#xff1a;就是抓取网页数据的程序。从网站某一个页面&#xff08;通常是首页&#xff09;开始&#xff0c;读取网页的内容&#xff0c;找到在网页中的其它链接地址&#xff0c;然后通过这些链接地址寻找下一个网页&#xff0c;这…

植物健康,Spring Boot来保障

5系统详细实现 5.1 系统首页 植物健康系统需要登录才可以看到首页。具体界面的展示如图5.1所示。 图5.1 系统首页界面 5.2 咨询专家 可以在咨询专家栏目发布消息。具体界面如图5.2所示。 图5.2 咨询专家界面 5.3 普通植物检查登记 普通员工可以对普通植物检查登记信息进行添…

07 设计模式-结构型模式-桥接模式

桥接&#xff08;Bridge&#xff09;是用于把抽象化与实现化解耦&#xff0c;使得二者可以独立变化。这种类型的设计模式属于结构型模式&#xff0c;它通过提供抽象化和实现化之间的桥接结构&#xff0c;来实现二者的解耦。 这种模式涉及到一个作为桥接的接口&#xff0c;使得…

入门 | Prometheus+Grafana 普罗米修斯

#1024程序员节&#xff5c;征文# 一、prometheus介绍 1、监控系统组成 一个完整的监控系统需要包括如下功能&#xff1a;数据产生、数据采集、数据存储、数据处理、数据展示、分析、告警等。 &#xff08;1&#xff09;、数据来源 数据来源&#xff0c;也就是需要监控的数据…

VS Code 自动生成代码

1. 在vs code中的左下角&#xff0c;点击设置中的snippets。 2. 输入你需要生成的代码种类&#xff0c;这边以JS为例 打开后可以看到下面这样 从Example看起&#xff0c; 1.Print to console 这个是提升信息&#xff0c;就是当你输入代码的时候的提升。 2.prefix是缩写。 3.b…

python爬虫——Selenium的基本使用

目录 一、Selenium的介绍 二、环境准备 1.安装Selenium 2.安装WebDriver 三、元素定位 1.常用定位元素的方法 2. 通过指定方式定位元素 四、窗口操作 1.最大化浏览器窗口 2.设置浏览器窗口大小 3.切换窗口或标签页 切换回主窗口 4. 关闭窗口 关闭当前窗口 关闭所…

由于找不到mfc140u.dll,无法继续执行代码怎么办,总有6个解决方法

在软件开发和程序运行过程中&#xff0c;许多用户可能会遇到“找不到mfc140u.dll&#xff0c;无法继续执行代码”的问题。本文将对该问题进行详细解读&#xff0c;分析其产生原因&#xff0c;并提供相应的解决方案。 一、mfc140u.dll是什么 mfc140u.dll是Microsoft Visual C 2…

apache poi导出excel

简介 常见的使用场景 入门 导入maven依赖 <!-- poi --> <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId> </dependency> <dependency><groupId>org.apache.poi</groupId><arti…