mdb转gdb实现过程介绍(2)三种方式实现GDB数据库的读、写,并将实现方式与ArcGIS环境共存配置

一、内容提示


        通过解析mdb地理数据库,获取了图层之间的组织结构、空间参考、表字段属性等信息。

        下一步,就是将数据输出到GDB中。

        下面详细介绍python3.9版本,读写GDB数据的方法:

        (1)使用ArcPy创建GDB、读写GDB;

        (2)使用osgeo创建、读写GDB;

        (3)使用fiona、geopandas创建、读写GDB;

        (4)将osgeo或geopandas模块添加到自定义模块,实现其与ArcGIS环境的共存

图片

        MDB转出为GDB,涉及的内容比较多,尤其是需要开源实现。每一篇文章的内容篇幅都很长,希望对大家有帮助。

        (1)mdb(个人地理数据库)转shape file其实并不简单

        (2)mdb转gdb实现过程介绍(1)mdb地理数据库结构解析和gdb库的创建


 

二、FileGDB驱动

        GDB是Esri开发的一种地理数据库格式,它旨在存储和管理地理空间数据。GDB可以包含矢量数据、栅格数据、拓扑数据、地图符号化信息以及数据集之间的关联关系等。

        GDB作为Esri的一种地理数据库格式,并非完全开源,它提供了开放式的文件规范和API,在一定程度上允许与其他软件集成和交互。

        在以往(python<3.9),都是通过配置FileGDB驱动,实现对GDB数据的读写。

        在使用习惯上,一般有两种办法:

        (1)通过安装GDAL的方式添加FileGDB驱动

        一般是通过osgeo中的ogr实现GDB文件的读写,需要拷贝FileGDBAPI.dll至python安装目录下的“\Lib\site-packages\osgeo”;

        FileGDBAPI.dll下载地址:

            https://github.com/Esri/file-geodatabase-api

        GDAL的whl文件下载地址:

            https://github.com/cgohlke/geospatial-wheels/releases

        GDAL 3.x 版本,还需要把gdalplugins\disabled中的ogr_FileGDB.dll移动到gdalplugins目录;

GDAL 2.x版本,修改osgeo/__init__.py文件:注释15行,取消注释17行,如下:

# __init__ for osgeo package.# unofficial Windows binaries: set GDAL environment variables if necessaryimport ostry:    _here = os.path.dirname(__file__)    if _here not in os.environ['PATH']:        os.environ['PATH'] = _here + ';' + os.environ['PATH']    if 'GDAL_DATA' not in os.environ:        os.environ['GDAL_DATA'] = os.path.join(_here, 'data', 'gdal')    if 'PROJ_LIB' not in os.environ:        os.environ['PROJ_LIB'] = os.path.join(_here, 'data', 'proj')    if 'GDAL_DRIVER_PATH' not in os.environ:        #pass        # uncomment the next line to enable plugins        os.environ['GDAL_DRIVER_PATH'] = os.path.join(_here, 'gdalplugins')except Exception:    passdel os

        (2)使用'fiona'引擎实现,一般是通过geopandas完成GDB文件的读写

        为了方便介绍,假设利用conda新建一个geopandas的虚拟环境,复制FileGDBAPI.dll文件,粘贴到利用conda新建的虚拟环境根目录下的Library\bin里。然后将ogr_FileGDB.dll这个文件放置于前面FileGDBAPI.dll同级目录下的gdalplugins目录中即可。

三、OpenFileGDB驱动

        前文对python的版本进行了高亮,这个版本的分水岭是3.9,现在对这个版本分界的原因做一个简单的说明。

        在python3.9版本,用前文的方法配置FileGDB驱动已经行不通了,而小编也尝试了多种方法,并没有成功。有成功配置FileGDB驱动的小伙伴,望指导。

        于是,我将方向转为配置OpenFileGDB驱动。

        关于FileGDB驱动与OpenFileGDB驱动的详细介绍,可以通过GDAL社区文档获的相关信息。文档地址为:https://gdal.org/

        (1)FileGDB驱动

  • FileGDB驱动是用于ArcGIS File Geodatabase(FileGDB)格式的驱动程序,允许在GDAL/OGR库中读取和写入FileGDB数据。

  • 这个驱动是专门为ArcGIS FileGDB格式设计的,是Esri提供的官方支持。

        (2) OpenFileGDB驱动

  • OpenFileGDB驱动也是用于ArcGIS File Geodatabase(FileGDB)格式的驱动程序,但是它是GDAL/OGR库的一部分,提供了对FileGDB格式的开源支持。

  • OpenFileGDB驱动允许在GDAL/OGR库中使用FileGDB数据,无需依赖ArcGIS软件。

        在python3.9版本之前,安装的fiona包含了'OpenFileGDB'驱动,OpenFileGDB就是gdal中默认自带的针对gdb文件的驱动,但其对应的值为'r',说明它只能针对gdb文件进行读取。

图片

        ArcGIS Pro 3.1版本,使用的Python版本是3.9.16。克隆的python环境,在安装了fiona后,惊奇的发现,其对OpenFileGDB的支持,已经是“raw”。

图片

        但是,现实总是残酷的。要想通过fiona实现对gdb数据的写入,需要gdal的版本在3.6.0以上,而当前gdal的版本为3.4.0。报错信息如下:

图片

        因此,现在的目标转为升级gdal版本到3.6.0以上。这时候,需要考虑的因素为:

  • 若脚本需要封装为python工具箱,直接使用Pro的python环境或基于Pro克隆的python环境,是不让升级gdal版本的;(得另想办法)
  • 若脚本后续不会使用到arcgis或arcpy模块,则直接安装3.6.0及以上的gdal版本即可;

四、3种GDB的创建、读写方法

4.1  ArcPy 创建、读写GDB数据

        使用ArcPy可以轻松地创建、读取和写入Geodatabase(GDB)数据。下面分别介绍如何创建GDB数据和如何读取/写入GDB数据,并附上示意代码。

        (1)创建GDB数据

        要创建GDB数据,可以使用CreateFileGDB_management函数。

import arcpy# 设置工作空间arcpy.env.workspace = r"C:\path\to\your\workspace"# 定义GDB名称和保存路径gdb_name = "MyGDB.gdb"gdb_path = arcpy.env.workspace# 创建GDBarcpy.CreateFileGDB_management(gdb_path, gdb_name)

        (2)读取GDB数据

        要读取GDB数据,可以使用ListFeatureClasses和ListTables函数来列出GDB中的要素类和表。

import arcpy# 设置工作空间arcpy.env.workspace = r"C:\path\to\your\workspace\MyGDB.gdb"# 获取要素类列表feature_classes = arcpy.ListFeatureClasses()# 获取表列表tables = arcpy.ListTables()# 打印要素类和表名print("Feature Classes:")for fc in feature_classes:    print(fc)print("\nTables:")for table in tables:    print(table)

        (3)写入GDB数据

        要写入GDB数据,可以使用相应的InsertCursor来插入新的要素或记录到要素类或表中。

import arcpy# 设置工作空间arcpy.env.workspace = r"C:\path\to\your\workspace\MyGDB.gdb"# 要素类路径fc_path = "MyFeatureClass"# 字段列表fields = ["Field1", "Field2"]# 创建InsertCursorwith arcpy.da.InsertCursor(fc_path, fields) as cursor:    # 插入新要素    cursor.insertRow(("Value1", "Value2"))

4.2  osgeo 创建、读写GDB数据

     安装gdal,使用osgeo的ogr实现GDB的创建、读写。

    步骤:

  • 在python3.9版本中安装gdal3.8.4;
  •  使用org创建、读写GDB数据;

        (1)安装GDAL3.8.4

        为了便于后续osgeo及其依赖迁移到自定义模块中,使用conda新建一个虚机环境。

        01 在python3.9中安装gdal

#在conda默认envs目录下创建虚拟环境osgeo-write-gdb-testconda create -n osgeo-write-gdb-test python=3.9 -c https://mirrors.sjtug.sjtu.edu.cn/anaconda/pkgs/main -y#conda在指定目录下创建虚拟环境osgeo-write-gdb-testconda create --prefix C:\ProgramData\Miniconda3\envs\osgeo-write-gdb-test python=3.9.16

        下载GDAL-3.8.4-cp39-cp39-win_amd64.whl,我们知道,https://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml网站已经打不开了,而GDAL在CSDN上下载,又需要会员或积分,需要GDAL的,可到https://github.com/cgohlke/geospatial-wheels/releases中下载。

        安装gdal:GDAL-3.8.4-cp39-cp39-win_amd64.whl

pip install GDAL-3.8.4-cp39-cp39-win_amd64.whl

图片

        (2) osgeo创建、读写gdb

        在解释器osgeo-write-gdb-test下,新建GDB和图层。

from osgeo import ogr, osr, gdal# 设置新的GDB文件路径gdb_file_path = './new_demo.gdb'# 创建数据驱动driver = ogr.GetDriverByName("OpenFileGDB")data_source = driver.CreateDataSource(gdb_file_path)if data_source is not None:    print("Successfully created GDB:", gdb_file_path)else:    print("Failed to create GDB:", gdb_file_path)# 获取并打印 GDAL 的版本信息print("GDAL Version:", gdal.__version__)# 创建数据驱动driver = ogr.GetDriverByName("OpenFileGDB")data_source = driver.Open(gdb_file_path, 1)  # 1 表示以写入模式打开数据源,如果数据源不存在则创建新的# 创建坐标系和图层if data_source is not None:    srs = osr.SpatialReference()    srs.ImportFromEPSG(4490)  # 你所需的 EPSG 编码    outLayer = data_source.CreateLayer("ds", srs=srs, geom_type=ogr.wkbPolygon)  # 创建图层    if outLayer is None:        print("Layer creation failed!")else:    print("OpenFileGDB driver is not available.")

        上述代码,在当前目录创建一个名为“new_demo”的gdb,并在该gdb中新建一个图层“ds”,执行结果如下:

图片

4.3  fiona、geopandas 创建、读写GDB数据

        安装geopandas,分别使用geopandas和fiona实现GDB的创建、读写。

        步骤:

  • 在python3.9版本中安装geopandas;
  • 创建、读写GDB数据;

        (1) 安装geopandas

        为了便于后续geopandas及其依赖迁移到自定义模块中,使用conda新建一个虚机环境。

        01 在python3.9中安装geopandas

#在conda默认envs目录下创建虚拟环境geopandas-write-gdb-testconda create -n geopandas-write-gdb-test python=3.9 -c https://mirrors.sjtug.sjtu.edu.cn/anaconda/pkgs/main -y#conda在指定目录下创建虚拟环境geopandas-write-gdb-testconda create --prefix C:\ProgramData\Miniconda3\envs\geopandas-write-gdb-test python=3.9.16#安装geopandasconda install geopandas -c https://mirrors.sjtug.sjtu.edu.cn/anaconda/cloud/conda-forge -y

        (2) 创建、读写GDB数据

        01 使用geopandas创建、读写gdb

        在解释器geopandas-write-gdb-test下,新建GDB和图层。

import geopandas as gpdfrom shapely.geometry import Point, LineString, Polygondemo_point_layer = gpd.GeoDataFrame(    {        '数据字段测试': ['点要素测试数据字段测试'],        'geometry': [Point(0, 0)]    },    crs='EPSG:4326')demo_linestring_layer = gpd.GeoDataFrame(    {        '数据字段测试': ['线要素测试数据字段测试'],        'geometry': [LineString([(0, 0), (1, 1)])]    },    crs='EPSG:4326')demo_polygon_layer = gpd.GeoDataFrame(    {        '数据字段测试': ['面要素测试数据字段测试'],        'geometry': [Polygon([(0, 0), (1, 1), (1, 0)])]    },    crs='EPSG:4326')# 写出到示例gdb文件中demo_point_layer.to_file('./demo1.gdb', layer='点图层测试', driver='OpenFileGDB')demo_linestring_layer.to_file('./demo1.gdb', layer='线图层测试', driver='OpenFileGDB')demo_polygon_layer.to_file('./demo1.gdb', layer='面图层测试', driver='OpenFileGDB')

        上述代码,在当前目录创建一个名为“demo1”的gdb,并在该gdb中新建一个图层三个图层,执行结果如下:

图片

        02 使用fiona创建、读写gdb

import fiona# 创建示例数据demo_polygon = {    'type': 'Polygon',    'coordinates': [[(0, 0), (1, 1), (1, 0), (0, 0)]]}# 设置文件路径gdb_file = './demo2.gdb'# 将投影数据文件添加到环境变量中# import os# os.environ["PROJ_LIB"] = "C:/proj"# 创建GDB文件和图层with fiona.open(gdb_file, 'w', driver='OpenFileGDB', crs='EPSG:4326', layer='polygon_layer', schema={'geometry': 'Polygon', 'properties': {}}) as layer:    layer.write({'geometry': demo_polygon, 'properties': {}})# 读取GDB数据with fiona.open(gdb_file, 'r', driver='OpenFileGDB') as layer:    for feature in layer:        print(feature)

        执行上述代码,会报错“fiona.errors.CRSError: The WKT could not be parsed. PROJ: proj_create_from_database: Cannot find proj.db”,如下所示:

图片

        这个错误是fiona缺失投影数据的定义文件(通常是 proj 文件)引起的。可通过将proj文件夹添加到环境变量中解决。

        注意:

  • 通过直接安装geopandas,不能获得proj 文件。需要安装GDAL后,在‘\Lib\site-packages\osgeo\data\proj’处获得,可在代码执行中自动将其添加到环境变量中解决;
  • os.environ["PROJ_LIB"] 添加的proj路径,不能包含中文;
import osos.environ["PROJ_LIB"] = "C:/proj"

图片

        生成的gdb如下:

图片

 

五、osgeo、fiona、geopandas 开源读、写gdb,如何与Arcpy环境共存?

        前面我们通过开源的方式实现了对GDB的创建和读写,但是都是在原生安装GDAL和Geopandas的虚机环境中。

        如果我们需要调用arcpy或arcgis模块,或后期将脚本封装为工具,就需要将实现gdb读、写实现的模块放到自定义模块中,并实现其与ArcGIS环境的共存。

        步骤:

        (1)创建自定义模块,将开源读写gdb的模块置于其中;

        (2)使用ogr创建gdb,并使用arcpy获取图层列表;

        (3)使用fiona创建gdb,并使用arcpy获取图层列表;

        (4)使用geopandas创建gdb,并使用arcpy获取图层列表。

5.1  将开源实现读、写gdb,组织到自定义模块中

        这部分非常重要。我们知道,ArcGIS Pro的python环境是不允许我们添加包的,而我们为了添加包,就需要克隆python环境,再在克隆环境中添加包。但是我们会碰到非常尴尬的两个问题:

        (1)安装的包可能与克隆环境内的包版本冲突,导致无法正常安装或后续莫名其妙的错误;

        (2)当我们基于Pro自定义python工具箱后,那些我们定义的工具,可能在克隆环境中添加了第三方包,这在部署和推广使用时,带来了很大的不便。

        01 将gdal添加到自定义模块

        我们在通过conda创建的虚拟环境osgeo-write-gdb-test中,安装GDAL-3.8.4-cp39-cp39-win_amd64.whl,在site-packages文件夹下,能看到我们已经安装的包或模块。如下图:

图片

        我们将上图中绿框中的三个文件夹,拷贝至我们自定义的文件夹“myosgeo”中,并在myosgeo文件夹下创建__init__.py。如下图:

图片

在__init__.py文件夹中添加如下代码:​​​​​​


import os
import sys

# 获取当前模块所在目录的路径
module_dir = os.path.dirname(__file__)

# 将当前模块所在目录添加到sys.path中
sys.path.insert(0, module_dir)
 

        02 将geopandas添加到自定义模块

import osimport sys
# 获取当前模块所在目录的路径module_dir = os.path.dirname(__file__)
# 将当前模块所在目录添加到sys.path中sys.path.insert(0, module_dir)

        03 将geopandas添加到自定义模块

        我们在通过conda创建的虚拟环境geopandas-write-gdb-test中,site-packages文件夹下,将geopandas及其依赖的模块拷贝到“myenv"文件夹中,并添加__init__.py,__init__.py内的内容相同。

        拷贝的内容如下:

图片

 

5.2  使用自定义模块中的ogr创建gdb,使用arcpy读取gdb

        测试示例代码如下:

from mygeos.osgeo import ogr, osr, gdalimport arcpy# 设置新的GDB文件路径gdb_file_path = './new_demo_arcpy.gdb'# 创建数据驱动driver = ogr.GetDriverByName("OpenFileGDB")data_source = driver.CreateDataSource(gdb_file_path)if data_source is not None:    print("Successfully created GDB:", gdb_file_path)else:    print("Failed to create GDB:", gdb_file_path)# 获取并打印 GDAL 的版本信息print("GDAL Version:", gdal.__version__)# 创建数据驱动driver = ogr.GetDriverByName("OpenFileGDB")data_source = driver.Open(gdb_file_path, 1)  # 1 表示以写入模式打开数据源,如果数据源不存在则创建新的# 创建坐标系和图层if data_source is not None:    srs = osr.SpatialReference()    srs.ImportFromEPSG(4490)  # 你所需的 EPSG 编码    outLayer = data_source.CreateLayer("使用自定义ogr创建的测试图层", srs=srs, geom_type=ogr.wkbPolygon)  # 创建图层    if outLayer is None:        print("Layer creation failed!")else:    print("OpenFileGDB driver is not available.")data_source = Nonearcpy.env.workspace = gdb_file_pathprint(arcpy.ListFeatureClasses())

        输出如下:

图片

5.3  使用自定义模块中的geopandas创建gdb,使用arcpy读取gdb

        测试示例代码如下:

# -*-coding:utf-8-*-import arcpyfrom myenv import geopandas as gpdfrom myenv.shapely.geometry import Point, LineString, Polygondemo_point_layer = gpd.GeoDataFrame(    {        '数据字段测试': ['点要素测试数据字段测试'],        'geometry': [Point(0, 0)]    },    crs='EPSG:4326')demo_linestring_layer = gpd.GeoDataFrame(    {        '数据字段测试': ['线要素测试数据字段测试'],        'geometry': [LineString([(0, 0), (1, 1)])]    },    crs='EPSG:4326')demo_polygon_layer = gpd.GeoDataFrame(    {        '数据字段测试': ['面要素测试数据字段测试'],        'geometry': [Polygon([(0, 0), (1, 1), (1, 0)])]    },    crs='EPSG:4326')# 写出到示例gdb文件中demo_point_layer.to_file('./demo_geopandas.gdb', layer='gdf点图层自定义模块测试', driver='OpenFileGDB')demo_linestring_layer.to_file('./demo_geopandas.gdb', layer='gdf线图层自定义模块测试', driver='OpenFileGDB')demo_polygon_layer.to_file('./demo_geopandas.gdb', layer='gdf面图层自定义模块测试', driver='OpenFileGDB')data_source = Nonearcpy.env.workspace = './demo_geopandas.gdb'print(arcpy.ListFeatureClasses())

        输出如下:

图片

5.4  使用自定义模块中的fiona创建gdb,使用arcpy读取gdb

        测试示例代码如下:

from myenv import fionaimport arcpy# 创建示例数据demo_polygon = {    'type': 'Polygon',    'coordinates': [[(0, 0), (1, 1), (1, 0), (0, 0)]]}# 设置文件路径gdb_file = './demo_fiona.gdb'import osos.environ["PROJ_LIB"] = "C:/proj"# 创建GDB文件和图层with fiona.open(gdb_file, 'w', driver='OpenFileGDB', crs='EPSG:4326', layer='fiona开源自定义模块测试', schema={'geometry': 'Polygon', 'properties': {}}) as layer:    layer.write({'geometry': demo_polygon, 'properties': {}})# 读取GDB数据with fiona.open(gdb_file, 'r', driver='OpenFileGDB') as layer:    for feature in layer:        print(feature)data_source = Nonearcpy.env.workspace = './demo_fiona.gdb'print(arcpy.ListFeatureClasses())

        输出如下:

图片

图片

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

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

相关文章

【MySQL基础篇】函数及约束

1、函数 函数是指一段可以直接被另一段程序程序调用的程序或代码。 函数 - 字符串函数 MySQL中内置了很多字符串函数&#xff0c;常用的几个如下&#xff1a; 函数功能CONCAT(S1,S2,...,Sn)字符串拼接&#xff0c;将S1,S2,...,Sn拼接成一个字符串LOWER(str)将字符串str全部…

STM32第十二课:ADC检测烟雾浓度(MQ2)

文章目录 需求一、MQ-2 气体传感器特点应用电路及引脚 二、实现流程1.开时钟&#xff0c;分频&#xff0c;配IO2.配置ADC的工作模式3.配置通道4.复位&#xff0c;AD校准5.数值的获取 需求实现总结 需求 使用ADC将MQ2模块检测到的烟雾浓度模拟量转化为数字量。 最后&#xff0c…

【ElementPlus源码】Button 按钮

文章目录 准备工作属性方法模板使用到的hooksuse-propuseDeprecated 看源码时候做的笔记。 准备工作 本地开发 | Element Plus (element-plus.org) 文档与源码对应&#xff1a;docs/examples/button 组件源码位置&#xff1a; packages/components/button/src 属性 定义在 …

C++面试宝典30题丨第一题:开灯

专栏导读 见得题目越多&#xff0c;考试时抽中的概率也越大。每一题都有详细的解答思路和独有的视频讲解。 本文收录于&#xff1a;C面试宝典&#xff08;送视频讲解&#xff09; ☆☆☆购买专栏后&#xff0c;请加微信会私发讲解视频&#xff01; 题目描述 一条名叫Mango的街…

图书管理系统(持久化存储数据以及增添新功能)

目录 一、数据库表设计 二、引入MyBatis 和MySQL 驱动依赖 三、配置数据库 & 日志 四、Model创建 五、枚举类 常量类用户登录 六、用户登录 七、添加图书 八、图书列表 九、修改图书 十、删除图书 十一、批量删除 十二、强制登录 十三、前端代码 &#xff0…

使用 HBuilder X 进行 uniapp 小程序开发遇到的问题合集

文章目录 背景介绍问题集锦1. 在 HBuilderX 点击浏览器运行时&#xff0c;报 uni-app vue3编译器下载失败 安装错误2.在 HBuilderX 点击微信小程序运行时&#xff0c;报 微信开发者工具打开项目失败&#xff0c;请参阅启动日志错误 背景介绍 HBuilder X 版本&#xff1a;HBui…

餐饮界的新传奇:沃可趣员工社区,让品牌关怀在指尖流淌

咖啡师与顾客发生肢体冲突、员工用咖啡粉泼顾客……某精品咖啡一天爆出两个大瓜&#xff01; 很快有网友指出咖啡店员工长期遭受重压&#xff0c;与品牌之间存在根本矛盾。 同样做餐饮的老牌快餐&#xff0c;门店密度与之不相上下&#xff0c;却很少发生这样的暴雷。 不仅因…

六.核心动画 - 特殊图层①

引言 本专栏到目前为止已经介绍了CALayer&#xff0c;了解了它的绘画和动画功能。但是Core Animation图层不仅仅能够用于图片和颜色&#xff0c;本篇博客就来介绍一下一些CALayer的子类特殊图层&#xff0c;来进一步扩展Core Animation的绘图能力。 特殊图层 Core Animation…

Vue实现金钱输入框组件自动带千位逗号

新建PriceInput.vue <template><div id"bord"><el-inputv-model"inputValue"v-bind"$attrs":maxlength"maxlength"input"handleInput"focus"handleFocus"blur"handleBlur"change"h…

自闭症儿童:探索症状背后的多彩内心世界

在星启帆自闭症康复中心&#xff0c;我们每天与一群独特而珍贵的孩子相遇——他们&#xff0c;是自闭症谱系障碍的患儿。自闭症&#xff0c;这一复杂的神经发育障碍&#xff0c;以其多样化的症状表现&#xff0c;为每个孩子的生活轨迹绘上了不同的色彩。 自闭症孩子的症状各异…

Websocket通信实战项目(js)(图片互传应用)(下)客户端H5+css+js实现

Rqtz : 个人主页 ​ 共享IT之美&#xff0c;共创机器未来 Sharing the Beauty of IT and Creating the Future of Machines Together 目录 起始 客户端GUI Javascripts连接websocket 使用localStorage保存用户输入的IP Websocket连接成功 Websocket接收数据 解析…

【Linux】正确的关机方法

1. Linux正确的关机方式 如何关机呢&#xff1f;我想&#xff0c;很多朋友在DOS年代已经有在玩计算机了。在当时我们关闭DOS的系统时&#xff0c;常常是直接关闭电源开关&#xff0c;而Windows 在你不爽的时候&#xff0c;按着电源开关四秒也可以关机&#xff0c;但是在Linux则…

旧衣回收小程序:减少资源浪费,提高回收效率

当下&#xff0c;旧衣服回收成为了大众热衷的事&#xff0c;不少居民都会把闲置的衣物进行回收&#xff0c;旧衣回收行业逐渐火爆。不过&#xff0c;传统的旧衣回收模式已经不符合当下时代发展&#xff0c;具有较大的不便利性。 因此&#xff0c;为解决这一问题&#xff0c;线…

PG实践|内置函数之GENERATE_SERIES之深入理解(二)

&#x1f4eb; 作者简介&#xff1a;「六月暴雪飞梨花」&#xff0c;专注于研究Java&#xff0c;就职于科技型公司后端工程师 &#x1f3c6; 近期荣誉&#xff1a;华为云云享专家、阿里云专家博主、腾讯云优秀创作者、ACDU成员 &#x1f525; 三连支持&#xff1a;欢迎 ❤️关注…

使用Vue CLI方式创建Vue3.0应用程序

Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统。新版本的 Vue CLI 的包名由原来的 vue-cli 改成了 vue/cli。 在开发大型项目时&#xff0c;需要考虑项目的组织结构、项目构建和部署等问题。如果手动完成这些配置工作&#xff0c;工作效率会非常低。为此&#xff0c;Vue.…

Rocky Linux 9 快速安装docker 教程

前述 CentOS 7系统将于2024年06月30日停止维护服务。CentOS官方不再提供CentOS 及后续版本&#xff0c;不再支持新的软件和补丁更新。CentOS用户现有业务随时面临宕机和安全风险&#xff0c;并无法确保及时恢复。由于 CentOS Stream 相对不稳定&#xff0c;刚好在寻找平替系统…

Python学生信息管理系统(完整代码)

引言&#xff1a;&#xff08;假装不是一个大学生课设&#xff09;在现代教育管理中&#xff0c;学生管理系统显得尤为重要。这种系统能够帮助教育机构有效地管理学生资料、成绩、出勤以及其他教育相关活动&#xff0c;从而提高管理效率并减少人为错误。通过使用Python&#xf…

IDEA版本推荐

推荐版本&#xff1a; IDEA 2024.1.4 下载链接&#xff1a;IDEA下载 &#xff08;下载时可以往下拖&#xff0c;选到自己想要的版本哦&#xff09; 本人由于项目开发需要&#xff0c;陆续用过几个版本的IDEA&#xff0c;包括&#xff1a; IDEA 2020.2.4 。这是在看韩顺平老师…

昇思25天学习打卡营第9天|CycleGAN图像风格迁移互换

文章目录 昇思MindSpore应用实践基于MindSpore的CycleGAN图像风格迁移互换1、CycleGAN 概述2、生成器部分3、判别器部分4、优化器和损失函数5、模型训练6、模型推理 Reference 昇思MindSpore应用实践 本系列文章主要用于记录昇思25天学习打卡营的学习心得。 基于MindSpore的C…

打造商贸物流“产-供-销”、“仓-运-配”全流程供应链

在当今全球化的商业环境中&#xff0c;商贸物流平台的搭建成为企业提升效率、降低成本并增强市场竞争力的关键因素。在现代商业环境中&#xff0c;商贸与物流之间的紧密协作是业务成功的关键因素。然而&#xff0c;许多组织面临着信息不对称、资源配套不足、以及系统间隔离等痛…