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

基于 GEE 的 GWCCI 指数大豆识别与制图研究

目录

一、前言

二、代码整体框架与设计逻辑

三、参数设置模块:定制化配置核心参数

四、Sentinel-2 数据加载与预处理模块:获取高质量光谱数据

1. 数据加载:筛选符合条件的影像集合

2. 云掩膜函数:去除影像中的云干扰

3. 影像合成:生成研究区连续影像

五、可视化参数模块:定义图层显示样式

六、植被指数计算模块:构建大豆识别关键指数

1. NDVI(归一化植被指数)计算

2. SWIR1 波段提取

3. GWCCI(NDVI-SWIR1 乘积指数)计算

七、大豆制图模块:基于阈值提取大豆区域

1. 大豆掩膜提取

2. 二值影像生成

八、地图图层添加模块:展示与交互

九、结果导出模块:保存数据到 Google Drive

1. 导出大豆分布图

2. 导出 GWCCI 指数影像

3. 导出 Sentinel-2 真彩色合成影像

4. 结果提示

十、代码使用注意事项与优化建议

1. 使用前必备条件

2. 优化建议

十一、运行结果

十二、总结

1. 数据基础与核心逻辑

2. 关键步骤与功能模块


若觉得代码对您的研究 / 项目有帮助,欢迎点击打赏支持!需要完整代码的朋友,打赏后可在后台私信(复制文章标题发给我),我会尽快发您完整可运行代码,感谢支持!

一、前言

参考文献:

Chen H, Li H, Liu Z, et al. A novel Greenness and Water Content Composite Index (GWCCI) for soybean mapping from single remotely sensed multispectral images[J]. Remote Sensing of Environment, 2023, 295: 113679.

参考文献论文截图

Highlights:

  • 提出了一种基于新指数的方法(GWCCI)来区分大豆与其他作物。
  • GWCCI 仅从单幅哨兵 -2 影像中就能自动识别大豆。
  • 与基准方法相比,GWCCI 始终能达到最高的准确率。
  • 经证明,GWCCI 很容易推广应用到不同的农业区域。

摘要:

大豆作为重要的粮食来源以及全球最具经济意义的作物之一,在保障粮食安全方面发挥着重要作用。长期以来,大面积精准绘制大豆分布图一直是遥感领域至关重要但又颇具挑战性的问题,这在很大程度上依赖于大量且具代表性的训练样本,而收集这些样本十分耗时且效率低下,尤其是针对大面积区域(如全国范围)。因此,需要能够从单期遥感影像中自动且精准绘制大豆分布图的方法。

在本研究中,提出了一种全新的绿度与含水量复合指数(GWCCI),旨在仅通过单幅哨兵 -2 多光谱影像,以端到端的方式绘制大豆分布图,且无需使用训练样本。通过利用归一化植被指数(NDVI,与绿度相关)和短波红外(SWIR)波段(与冠层含水量相关)的乘积,GWCCI 提供了区分大豆与其他土地覆盖类型所需的信息。

在全球四个主要大豆生产国(即中国、美国、巴西和阿根廷)的七个典型大豆种植区,对所提出的 GWCCI 的有效性进行了研究,这些地区具有不同的气候、种植制度和农业景观。在实验中,GWCCI 在 2021 年的第一个研究区域(S1)估计并采用了 0.17 的最优阈值,随后将其推广到其他研究区域,用于多年的大豆制图。与两种传统的对比分类器(支持向量机(SVM)和随机森林(RF))相比,2021 年 GWCCI 方法始终能达到更高的准确率,平均总体准确率(OA)为 88.30%,卡帕系数(k)为 0.77;显著高于 RF(OA:80.92%,k:0.62)和 SVM(OA:80.29%,k:0.60)。此外,对于研究区域 S2 到 S7,延伸年份的 OA 与 2021 年的 OA 高度一致,这表明所提出的方法在多年间具有出色的泛化能力和稳健性。

所提出的 GWCCI 方法简单直接、可靠且稳健,为绘制全球最重要的作物之一 —— 大豆的分布图迈出了重要的一步。

二、代码整体框架与设计逻辑

本代码基于 Google Earth Engine(GEE)平台,参考 Chen et al. (2023) 论文方法,利用 Sentinel-2 卫星数据,通过计算 GWCCI(NDVI 与 SWIR1 的乘积)指数并结合阈值法实现大豆分布制图,核心流程涵盖参数设置、数据预处理、指数计算、分类提取与结果导出,以下从 8 个核心模块展开详细解析。

代码遵循 “参数配置→数据加载→预处理→指数计算→分类制图→可视化→结果导出” 的遥感图像处理标准流程,针对大豆作物的物候特征(不同半球生长期差异)和光谱特性(NDVI 高、SWIR1 有特定响应)设计关键参数,最终通过 GWCCI 阈值实现大豆与其他地物的区分,整体逻辑可总结为:

  1. 按区域物候设置时间窗口,确保获取大豆关键生长期数据;
  2. 加载高分辨率 Sentinel-2 数据并去除云干扰,保证数据质量;
  3. 计算对植被敏感的 NDVI 和对水分 / 结构敏感的 SWIR1,构建 GWCCI 指数;
  4. 用论文优化的 GWCCI 阈值提取大豆区域,完成制图与结果导出。

三、参数设置模块:定制化配置核心参数

该模块是代码的 “控制中心”,根据论文方法和研究区域特性,定义时间、阈值、研究区等关键参数,直接影响后续数据加载和分类精度。

参数名称代码变量取值 / 设置作用与依据
研究区tablegeometry关联 GEE 中已导入的研究区矢量边界(需提前上传或绘制,如中国某大豆主产区),后续数据加载和结果裁剪均基于此边界
年份YEAR2025定义目标研究年份,用于动态生成时间范围(可修改为 2020-2024 等其他年份)
时间窗口START_DATE/END_DATE2025-07-15/2025-08-30对应北半球大豆关键生长期(开花 - 结荚期),参考论文:- 北半球(中国、美国):DOY 200-240(7 月 19 日 - 8 月 28 日),此处稍放宽至 7 月 15 日 - 8 月 30 日,避免遗漏数据;- 南半球(巴西)需改为 DOY 40-70(2 月 9 日 - 3 月 11 日),阿根廷改为 DOY 40-60(2 月 9 日 - 3 月 1 日)
GWCCI 阈值GWCCI_THRESHOLD0.17论文优化的大豆识别阈值:当 GWCCI≥0.17 时,判定为大豆(该值基于大量样本验证,是区分大豆与玉米、水稻等其他作物的关键)
云覆盖阈值CLOUD_COVER_THRESHOLD20筛选云覆盖度<20% 的 Sentinel-2 影像(代码注释 “10% 以下” 可能为笔误),去除云量过多的影像,减少云对光谱数据的干扰
研究区简写roitable简化变量名,后续数据加载、裁剪均使用roi,提高代码可读性

四、Sentinel-2 数据加载与预处理模块:获取高质量光谱数据

该模块是代码的 “数据源头”,完成 Sentinel-2 L2A(表面反射率产品)的筛选、云掩膜和合成,为后续指数计算提供干净、连续的影像数据。

1. 数据加载:筛选符合条件的影像集合

var s2Collection = ee.ImageCollection('COPERNICUS/S2_SR_HARMONIZED').filterBounds(roi)  // 空间筛选:仅保留研究区内的影像.filterDate(START_DATE, END_DATE)  // 时间筛选:仅保留目标时间窗口内的影像.filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', CLOUD_COVER_THRESHOLD))  // 云量筛选:去除云量≥20%的影像.select(['B2', 'B3', 'B4', 'B5', 'B6', 'B7', 'B8', 'B8A', 'B11', 'B12', 'QA60']);  // 波段筛选:选择所需光谱波段和质量控制波段
  • 数据产品说明COPERNICUS/S2_SR_HARMONIZED是 Sentinel-2 全球 Harmonized 表面反射率产品,已进行大气校正(去除大气散射 / 吸收影响),直接输出地表反射率,无需额外预处理;
  • 关键波段作用
    • 可见光波段:B2(蓝,490nm)、B3(绿,560nm)、B4(红,665nm)—— 用于真彩色合成;
    • 近红外波段:B8(NIR,842nm)、B8A(窄 NIR,865nm)—— 用于计算 NDVI;
    • 短波红外波段:B11(SWIR1,1610nm)、B12(SWIR2,2190nm)——B11 用于计算 GWCCI,对植被水分和细胞壁结构敏感;
    • 质量控制波段:QA60(60m 分辨率质量波段)—— 用于云掩膜,标记云、卷云位置。

2. 云掩膜函数:去除影像中的云干扰

云会显著改变地表反射率(如云的高反射率会导致 NDVI 虚高),因此必须通过 QA60 波段进行云掩膜,代码中定义maskS2clouds函数实现:

function maskS2clouds(image) {var qa = image.select('QA60');  // 提取QA60质量波段var cloudBitMask = 1 << 10;  // 云的位掩码:将1左移10位,得到二进制10000000000,对应QA60中“云”的标记位var cirrusBitMask = 1 << 11; // 卷云的位掩码:将1左移11位,得到二进制100000000000,对应QA60中“卷云”的标记位// 构建掩膜:QA60中“云”和“卷云”标记位均为0的区域保留(即无云区域)var mask = qa.bitwiseAnd(cloudBitMask).eq(0).and(qa.bitwiseAnd(cirrusBitMask).eq(0));// 返回掩膜后的影像,并将反射率从“0-10000”缩放为“0-1”(S2 SR产品原始值为反射率×10000,需除以10000还原真实反射率)return image.updateMask(mask).divide(10000);
}
  • 位运算原理:QA60 波段通过 “位”(bit)记录地物质量信息,第 10 位标记 “云”,第 11 位标记 “卷云”;bitwiseAnd(按位与)操作可判断目标位是否为 1,eq(0)则筛选出无云的像素。

3. 影像合成:生成研究区连续影像

var s2Masked = s2Collection.map(maskS2clouds);  // 对影像集合中每幅影像应用云掩膜
var s2Composite = s2Masked.median().clip(roi);  // 计算中位数合成影像,并裁剪到研究区
  • 中位数合成优势:相比均值合成,中位数能更好地抑制异常值(如未完全掩膜的云阴影、大气残留干扰),保留更真实的地表反射率;
  • 裁剪操作clip(roi)确保合成影像仅包含研究区范围,减少后续计算的数据量。

五、可视化参数模块:定义图层显示样式

该模块为后续地图添加图层定义显示规则,便于在 GEE 地图界面直观查看数据结果,主要包括真彩色、假彩色、植被指数和大豆分布的可视化配置。

可视化类型代码变量关键配置显示效果与作用
真彩色rgbVisbands: ['B4','B3','B2'](红→红、绿→绿、蓝→蓝),min:0max:0.3gamma:1.4模拟人眼看到的真实色彩,用于直观判断研究区土地覆盖类型(如植被呈绿色、水体呈蓝色)
假彩色falseColorVisbands: ['B8','B4','B3'](NIR→红、红→绿、绿→蓝)突出植被:植被因 NIR 反射率高呈鲜红色,水体呈黑色,裸地呈灰色,便于快速识别植被分布范围
NDVIndviVismin:0max:1palette: ['red','yellow','green']植被覆盖度越高,NDVI 值越大,颜色从红色(裸地 / 枯萎植被)→黄色(低覆盖)→绿色(高覆盖)过渡,直观展示植被生长状况
SWIR1swirVismin:0max:0.3palette: ['blue','white','red']SWIR1 反射率越低(蓝色),可能代表植被水分含量高;反射率越高(红色),可能代表裸地或干旱植被,辅助判断植被水分状况
GWCCIgwcciVismin:0max:0.3palette: ['blue','cyan','yellow','red']GWCCI 值越高(红色),越可能是大豆;值越低(蓝色),越可能是非大豆地物,为分类结果提供参考
大豆分布soybeanVismin:0max:1palette: ['yellow']仅显示大豆区域(值为 1),呈黄色,非大豆区域(值为 0)透明,清晰展示大豆空间分布

六、植被指数计算模块:构建大豆识别关键指数

该模块是代码的 “核心算法”,通过计算 NDVI(反映植被生长)和 SWIR1(反映植被水分 / 结构),构建 GWCCI 指数(NDVI×SWIR1),利用大豆在这两个波段的独特光谱响应实现与其他地物的区分。

1. NDVI(归一化植被指数)计算

var ndvi = s2Composite.normalizedDifference(['B8', 'B4']).rename('NDVI');
  • 计算公式NDVI = (NIR - Red) / (NIR + Red),其中 NIR 为 B8 波段,Red 为 B4 波段;
  • 物理意义:NDVI 取值范围为[-1,1],负值通常为水体、裸地,正值为植被,值越大表示植被覆盖度越高、生长越旺盛;大豆在关键生长期 NDVI 通常较高(0.6-0.8),是区分植被与非植被的基础。

2. SWIR1 波段提取

var swir = s2Composite.select('B11').rename('SWIR');
  • 物理意义:SWIR1(1610nm)对植被细胞壁结构和叶片水分含量敏感 —— 大豆因叶片结构和水分含量特定,在该波段有稳定的反射率(通常 0.1-0.2),而其他作物(如玉米)或裸地的 SWIR1 反射率与大豆存在差异,是区分作物类型的关键补充。

3. GWCCI(NDVI-SWIR1 乘积指数)计算

var gwcci = ndvi.multiply(swir).rename('GWCCI');
  • 计算公式GWCCI = NDVI × SWIR1
  • 论文依据:Chen et al. (2023) 通过大量样本验证发现,大豆的 NDVI 和 SWIR1 组合(乘积)具有独特的阈值范围(≥0.17),而其他作物(如玉米、水稻)或地物的 GWCCI 值通常低于 0.17,因此 GWCCI 能有效区分大豆与其他地物,解决单一 NDVI 无法区分作物类型的问题。

七、大豆制图模块:基于阈值提取大豆区域

该模块通过 GWCCI 阈值实现大豆的 “二分类”,将连续的 GWCCI 指数影像转换为离散的大豆 / 非大豆二值影像,完成核心制图功能。

1. 大豆掩膜提取

var soybeanMask = gwcci.gte(GWCCI_THRESHOLD).rename('soybean');
  • 核心逻辑gte(GWCCI_THRESHOLD)表示 “大于等于阈值(0.17)”,即 GWCCI≥0.17 的像素标记为true(后续转为 1,代表大豆),GWCCI<0.17 的像素标记为false(后续转为 0,代表非大豆);
  • 数据类型:此时soybeanMask为布尔型影像(true/false),需进一步处理为二值影像。

2. 二值影像生成

var soybeanBinary = soybeanMask.updateMask(soybeanMask);
  • 掩膜操作updateMask(soybeanMask)false(非大豆)的像素设为 “透明”,true(大豆)的像素保留原值(后续显示为黄色);
  • 最终效果:生成二值影像soybeanBinary,仅显示大豆区域,非大豆区域透明,直观呈现大豆空间分布。

八、地图图层添加模块:展示与交互

该模块将预处理后的影像、计算的指数和大豆分布图添加到 GEE 地图界面,便于用户实时查看和交互验证结果。

Map.centerObject(roi, 8);  // 设置地图中心为研究区,缩放级别为8(1=全球,20=米级,8适合区域尺度查看)
// 添加图层,最后一个参数为“是否默认显示”(true=默认显示,false=默认隐藏)
Map.addLayer(s2Composite, rgbVis, 'Sentinel-2 RGB', false);  // 真彩色影像(默认隐藏,需手动勾选显示)
Map.addLayer(s2Composite, falseColorVis, 'Sentinel-2 False Color', false);  // 假彩色影像(默认隐藏)
Map.addLayer(ndvi, ndviVis, 'NDVI', false);  // NDVI指数(默认隐藏)
Map.addLayer(swir, swirVis, 'SWIR1', false);  // SWIR1波段(默认隐藏)
Map.addLayer(gwcci, gwcciVis, 'GWCCI', true);  // GWCCI指数(默认显示)
Map.addLayer(soybeanBinary, soybeanVis, 'Soybean Distribution', true);  // 大豆分布(默认显示)
Map.addLayer(roi, {color: 'red'}, 'ROI Boundary', true);  // 研究区边界(红色,默认显示,便于定位)
  • 交互作用:用户可在 GEE 地图界面勾选 / 取消勾选图层,对比不同指数(如 NDVI 与 GWCCI)和大豆分布的关系,初步验证分类结果的合理性(如大豆分布应与高 NDVI、中等 SWIR1 区域重合)。

九、结果导出模块:保存数据到 Google Drive

该模块将关键结果(大豆分布图、GWCCI 指数、Sentinel-2 真彩色影像)导出到用户的 Google Drive,便于后续离线分析(如在 ArcGIS、QGIS 中进一步处理)或论文制图。

1. 导出大豆分布图

Export.image.toDrive({image: soybeanBinary,  // 待导出的影像:大豆二值影像description: 'Soybean_Distribution_GWCCI',  // 导出文件名称前缀folder: 'GEE_Exports',  // 保存到Google Drive中的文件夹(需提前创建,或自动生成)region: roi,  // 导出范围:仅研究区scale: 10,  // 空间分辨率:10m(Sentinel-2原始分辨率,保证精度)crs: 'EPSG:4326',  // 坐标系:WGS84(全球通用坐标系,便于后续空间叠加分析)maxPixels: 1e9  // 最大像素数:10亿(避免因研究区过大导致导出失败,1e9足够覆盖上千平方公里)
});

2. 导出 GWCCI 指数影像

Export.image.toDrive({image: gwcci,description: 'GWCCI_Index',folder: 'GEE_Exports',region: roi,scale: 10,crs: 'EPSG:4326',maxPixels: 1e9
});
  • 作用:导出连续的 GWCCI 指数影像,可用于后续阈值优化(如根据实地样本调整GWCCI_THRESHOLD)或其他分析(如 GWCCI 与大豆产量的相关性)。

3. 导出 Sentinel-2 真彩色合成影像

Export.image.toDrive({image: s2Composite.select(['B4', 'B3', 'B2']),description: 'Sentinel2_RGB_Composite',folder: 'GEE_Exports',region: roi,scale: 10,crs: 'EPSG:4326',maxPixels: 1e9
});
  • 作用:导出研究区真彩色影像,作为大豆分布的背景图,便于直观对比大豆与其他地物(如农田、林地、建筑)的空间关系。

4. 结果提示

print('===============================');
print('GWCCI大豆制图完成!');
print('请查看图层面板中的结果');
print('===============================');
  • 作用:在 GEE 代码编辑器的 “Console” 面板输出提示信息,告知用户代码运行完成,引导用户查看地图图层和启动导出任务。

十、代码使用注意事项与优化建议

1. 使用前必备条件

  • 需拥有 Google 账号并登录 GEE 平台(earthengine.google.com);
  • 需在 GEE 中上传研究区矢量边界(geometry),格式支持 SHP、KML 等;
  • 若研究区为南半球(巴西、阿根廷),需修改START_DATEEND_DATE为对应物候期(如巴西设为YEAR+'-02-09'YEAR+'-03-11')。

2. 优化建议

  • 云掩膜优化:当前仅用 QA60 进行云掩膜,可结合 Sentinel-2 的 SCL(场景分类)波段进一步去除云阴影、雪等干扰;
  • 时间窗口细化:可根据研究区具体省份 / 市县的大豆物候,查询当地农业部门的物候历,进一步缩小时间窗口,提高数据针对性;
  • 阈值本地化:若研究区与论文区域(如东北大豆主产区)差异较大,建议通过实地采样数据(大豆地块 GPS 坐标)计算当地最优 GWCCI 阈值,替代默认的 0.17;
  • 精度验证:导出大豆分布图后,可结合高分辨率卫星影像(如 Google Earth 高清影像)或实地调查数据,计算分类精度(总体精度、Kappa 系数),验证结果可靠性。

十一、运行结果

控制台输出的提示信息
点击RUN即可下载数据
研究区(中国东北地区某地块)
研究区哨兵二号真彩色遥感影像数据
研究区哨兵二号假彩色合成遥感影像数据
研究区归一化植被指数(NDVI)计算结果
研究区哨兵二号短波红外1波段的反射率数据
研究区GWCCI指数(用于识别大豆分布的关键中间数据)计算结果
研究区大豆分布遥感制图结果

十二、总结

1. 数据基础与核心逻辑

本代码依托 Google Earth Engine(GEE)平台,以 Sentinel - 2 卫星影像为数据基础,通过一系列专业的遥感数据处理与分析操作,实现了研究区域内大豆分布的精准制图。

代码采用 Sentinel - 2 卫星的多光谱影像数据,这类数据具备较高的空间分辨率与光谱分辨率,能精准捕捉地表信息。核心逻辑是依据大豆在特定生长阶段独特的光谱特征,借助计算归一化植被指数(NDVI)、短波红外 1 波段(SWIR1)反射率,进而构建 GWCCI 指数,再结合阈值法来区分大豆与其他地物,最终生成大豆分布图层。

2. 关键步骤与功能模块

(1)数据预处理:

首先对 Sentinel - 2 影像进行筛选,按照研究区域(ROI)的边界、特定的时间范围以及云量阈值,挑选出符合要求的影像。接着进行云掩膜操作,去除云及云阴影对影像的干扰,保障后续分析所用数据的质量。最后通过影像合成,得到研究区域内连续且高质量的影像数据,为后续指数计算奠定基础。

(2)指数计算:

  • NDVI 计算:NDVI 是反映植被生长状况的经典指数,计算公式为\((NIR - Red)/(NIR + Red)\)(其中 NIR 为近红外波段,Red 为红波段),数值越高表明植被越茂盛,该指数为后续 GWCCI 指数的计算提供了植被生长情况的信息。
  • SWIR1 提取:SWIR1 波段对植被的水分、结构等特征较为敏感,提取该波段的反射率数据,是构建 GWCCI 指数的重要组成部分。
  • GWCCI 指数构建:GWCCI 指数由 NDVI 与 SWIR1 反射率相乘得到,它能综合体现植被的生长与结构特征,利用大豆在该指数上与其他地物的差异,可实现大豆的识别。

(3)大豆分布提取与结果展示:

通过设定 GWCCI 指数的阈值,将研究区域内的地物分为大豆与非大豆两类,从而提取出大豆的分布区域,生成大豆分布图层(Soybean Distribution)。同时,代码还将 NDVI、SWIR1、GWCCI 等中间结果以及 Sentinel - 2 的真彩色(RGB)、假彩色影像作为图层(NDVI、SWIR1、GWCCI、Sentinel - 2 RGB、Sentinel - 2 False Color)进行展示,方便从不同角度分析研究区域的信息,而 ROI Boundary 图层则明确了研究的空间范围。

该代码为农业遥感领域中作物分布监测提供了高效的技术手段。通过自动化的遥感数据处理与分析流程,能够快速、精准地获取大豆的分布信息,为农业资源管理、产量估算、种植结构调整等提供科学依据,有助于提升农业生产的精细化与智能化水平。

若觉得代码对您的研究 / 项目有帮助,欢迎点击打赏支持!需要完整代码的朋友,打赏后可在后台私信(复制文章标题发给我),我会尽快发您完整可运行代码,感谢支持!

http://www.dtcms.com/a/453417.html

相关文章:

  • Python argparse库介绍(内置的命令行参数解析库)(未检查)
  • JMeter之 json提取器与json path语法
  • 深度学习之神经网络2(Neural Network)
  • 做UI设计的网站网站界面设计尺寸
  • Python全栈(基础篇)——Day06:后端内容(定义函数+调用函数+实战演示+每日一题)
  • C++算法·贪心例题讲解
  • 成都正规集团网站制作维护商业综合体
  • 网站做生鲜线下推广建议wordpress可视化编辑主题
  • 《投资-81》价值投资者的认知升级与交易规则重构 - 第一层:商业模式详解、常见的优质模式商业模式、价值投资选择的标准
  • UI设计(一)应用商店展示图标封面标题——东方仙盟筑基期
  • 空间制作网站网站建设目标计划书
  • JAVA算法练习题day34
  • [Java]PTA:(选做) jmu-Java-03面向对象基础-覆盖与equals
  • 网站建设图片logo电子商务就是网络营销
  • 机器学习基础入门(第四篇):无监督学习与聚类方法
  • Go基础:一文掌握Go语言泛型的使用
  • iBizModel 实体逻辑(PSDELOGIC)中的界面逻辑子类(VIEWLOGIC)详解
  • pywebview:用Python+Web技术打造轻量级桌面应用!
  • python 做办公网站移动应用开发学什么
  • 数据库迁移migration
  • Channel 和 Flow 选择场景对比 (例子:不停发事件的场景)
  • 《Vuejs设计与实现》第 18 章(同构渲染)(下)
  • jsp网站开发大作业长春网站建设wang
  • 淄博网站建设网宽河北网站建设推广电话
  • Django ORM 详解
  • C语言模拟面向对象编程方法之多态
  • 温州市建设工程管理网站温州建设网站哪家好
  • 划时代的技术飞跃:OpenAI DevDay 2025 全面深度解读
  • 做网站的网页图片素材怎么找长春做网站哪家便宜
  • 计算机操作系统:操作系统的发展过程