基于 Google Earth Engine (GEE) 的区域植被景观指标计算与分析

GlobeLand30地表覆盖数据全解析:从下载、预处理到变化检测实战 地表覆盖数据是记录地球表面植被、水体、人造地表等地物类型分布的基础地理信息,广泛应用于城市规划、生态监测和气候变化研究。其核心原理是通过遥感卫星影像,结合光谱特征与分类算法,将像元划分为不同地物类别,从而客观、大范围地刻画地表状况。这类数据的价值在于提供了长时间序列的、可比较的全球“本底”信息,是量化人类活动与自然环境相互作用的关键。在具体应用场景中,例如分析城市扩张、森林退化或湿地变迁时,地表覆盖变化检测和景观格局指数计算成为核心技术手段。本文以权威的GlobeLand30数据集为例,深入探讨其2000、 阅读详情

一、引言
本文将详细介绍如何使用 GEE 对南京江宁区(以特定多边形区域为例)2010 - 2015 年的植被景观进行分析,计算一系列景观指标,并对结果进行可视化和导出。

2.1 研究区域

var ROI = ee.Geometry.Polygon([
[[118.60, 31.80], [118.60, 32.00], [118.90, 32.00], [118.90, 31.80]]
]);

2.2 数据与时间范围

var startYear = 2010;
var endYear   = 2015;

三、数据预处理

3.1 云掩膜处理

由于卫星影像可能受到云层和云影的影响,需要对数据进行云掩膜处理。通过 maskLandsat 函数,基于 QA_PIXEL 波段去除云及云影覆盖的区域。

function maskLandsat(image) {
  var qa = image.select('QA_PIXEL');
  var mask = qa.bitwiseAnd(1 << 3).eq(0)  // 云
             .and(qa.bitwiseAnd(1 << 4).eq(0)); // 云影
  return image.updateMask(mask);
}

3.2 波段缩放与重命名

// Landsat 5 缩放波段并重命名
function scaleL5(image) {
  return image.select(
      ['SR_B1','SR_B2','SR_B3','SR_B4','SR_B5','SR_B7']
    )
    .multiply(0.0000275).add(-0.2)
    .rename(['blue','green','red','nir','swir1','swir2'])
    .copyProperties(image, ['system:time_start']);
}

// Landsat 8 缩放波段并重命名
function scaleL8(image) {
  return image.select(
      ['SR_B2','SR_B3','SR_B4','SR_B5','SR_B6','SR_B7']
    )
    .multiply(0.0000275).add(-0.2)
    .rename(['blue','green','red','nir','swir1','swir2'])
    .copyProperties(image, ['system:time_start']);
}

分别对 Landsat 5 和 Landsat 8 数据的波段进行缩放和重命名,以统一波段名称和数据范围。

3.3 年度合成

function getAnnualComposite(year) {
  year = ee.Number(year);
  var start = ee.Date.fromYMD(year,   1, 1);
  var end   = ee.Date.fromYMD(year.add(1), 1, 1);

  var col5 = ee.ImageCollection('LANDSAT/LT05/C02/T1_L2')
               .filterDate(start, end)
               .filterBounds(ROI)
               .map(maskLandsat).map(scaleL5);
  var col8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2')
               .filterDate(start, end)
               .filterBounds(ROI)
               .map(maskLandsat).map(scaleL8);

  var merged = col5.merge(col8);

  var fallback = ee.Image.constant([0.1,0.1,0.1,0.1,0.1,0.1])
                    .rename(['blue','green','red','nir','swir1','swir2'])
                    .reproject('EPSG:4326', null, 30);

  return merged
    .merge(ee.ImageCollection([fallback]))
    .median()
    .clip(ROI);
}

为了得到每年的影像数据,将 Landsat 5 和 Landsat 8 数据合并,并添加一个 “回退” 影像,以确保 median 操作不会因空集而失败。

四、景观指标计算

4.1 计算 NDVI 与植被掩膜

根据年度合成影像计算归一化植被指数(NDVI),并通过设定的 NDVI 阈值提取植被区域。

var ndviThreshold = 0.3;
function computeMetrics(year) {
  year = ee.Number(year);
  var comp = getAnnualComposite(year);
  var ndvi = comp.normalizedDifference(['nir','red']).rename('NDVI');
  var veg  = ndvi.gt(ndviThreshold).selfMask();

4.2 总植被面积计算

通过 ee.Image.pixelArea() 函数计算每个像素的面积,并根据植被掩膜求和得到总植被面积。

  var vegArea = ee.Number(
    ee.Image.pixelArea().updateMask(veg)
      .reduceRegion({
        reducer: ee.Reducer.sum(),
        geometry: ROI,
        scale: 30, maxPixels: 1e13
      }).get('area')
  );

4.3 斑块提取与景观指标计算

如果总植被面积大于 0,则进行斑块提取和景观指标计算,包括斑块数量、斑块密度、香农多样性指数,以及新增的平均斑块面积、最大斑块面积和斑块面积标准差。

  return ee.Algorithms.If(
    vegArea.lte(0),
    ee.Feature(null, {
      year:               year,
      patchNumber:        0,
      patchIndex:         0,
      shannonIndex:       0,
      totalVegArea:       0,
      avgPatchArea:       0,
      maxPatchArea:       0,
      patchAreaStdDev:    0
    }),
    (function() {
      // 连通斑块
      var patches = veg.connectedComponents({
        connectedness: ee.Kernel.square(1),
        maxSize: 256
      }).select('labels').rename('patch');

      // 斑块数量、密度
      var patchCount = ee.Number(
        patches.reduceRegion({
          reducer: ee.Reducer.countDistinct(),
          geometry: ROI,
          scale: 30, maxPixels: 1e13
        }).get('patch')
      );
      var regionHa = ROI.area().divide(10000);
      var patchIndex = patchCount.divide(regionHa);

      // 斑块面积分布(列表 of {patch, sum})
      var groups = ee.List(
        ee.Dictionary(
          ee.Image.pixelArea().addBands(patches)
            .reduceRegion({
              reducer: ee.Reducer.sum().group({
                groupField: 1,
                groupName: 'patch'
              }),
              geometry: ROI,
              scale: 30, maxPixels: 1e13
            })
        ).get('groups')
      );

      // 香农多样性
      var shannon = ee.Number(
        groups.map(function(g) {
          var d = ee.Dictionary(g);
          var area = ee.Number(d.get('sum'));
          var p = area.divide(vegArea).max(1e-6);
          return p.multiply(p.log());
        }).iterate(function(val, acc) {
          return ee.Number(acc).add(ee.Number(val));
        }, 0)
      ).multiply(-1);

      // 计算新指标:平均斑块面积、最大斑块面积、斑块面积标准差
      var areaList = groups.map(function(g) {
        return ee.Number(ee.Dictionary(g).get('sum'));
      });
      var avgArea = vegArea.divide(patchCount);
      var maxArea = ee.Number(areaList.reduce(ee.Reducer.max()));
      var variance = ee.Number(
        areaList.iterate(function(a, acc) {
          a = ee.Number(a);
          return ee.Number(acc)
                   .add(a.subtract(avgArea).pow(2));
        }, 0)
      ).divide(patchCount);
      var stdDev = variance.sqrt();

      return ee.Feature(null, {
        year:            year,
        patchNumber:     patchCount,
        patchIndex:      patchIndex,
        shannonIndex:    shannon,
        totalVegArea:    vegArea,
        avgPatchArea:    avgArea,
        maxPatchArea:    maxArea,
        patchAreaStdDev: stdDev
      });
    })()
  );
}

五、批量处理与结果展示

5.1 批量计算景观指标

使用 ee.FeatureCollection(years.map(computeMetrics)) 对 2010 - 2015 年的景观指标进行批量计算。

var years = ee.List.sequence(startYear, endYear);
var metricsFC = ee.FeatureCollection(years.map(computeMetrics));
print('2010–2015 年度景观指标(含新增指标)', metricsFC);

5.2 可视化示例

以 2025 年为例,展示 NDVI、植被掩膜和植被斑块的可视化结果。

var visYear = 2025;
var comp2025 = getAnnualComposite(visYear);
var ndvi2025 = comp2025.normalizedDifference(['nir','red']).rename('NDVI');
var veg2025  = ndvi2025.gt(ndviThreshold).selfMask();
var patch2025= veg2025.connectedComponents({
  connectedness: ee.Kernel.square(1), maxSize: 256
}).randomVisualizer();

Map.centerObject(ROI, 10);
Map.addLayer(ndvi2025, {min:0, max:1, palette:['white','green']}, 'NDVI ' + visYear);
Map.addLayer(veg2025,  {palette:['blue']},               'Vegetation Mask ' + visYear);
Map.addLayer(patch2025,{ },                              '植被斑块 ' + visYear);

5.3 结果导出

将计算得到的景观指标数据导出为 CSV 文件到 Google Drive。

Export.table.toDrive({
  collection:  metricsFC,
  description: 'LandscapeMetrics_ROI_2010_2015_Expanded',
  fileFormat:  'CSV'
});

六、结果展示:
完整代码:

// 1. 区域、时间与全局参数
var ROI = ee.Geometry.Polygon([
[[118.60, 31.80], [118.60, 32.00], [118.90, 32.00], [118.90, 31.80]]
]);
var startYear = 2010;
var endYear   = 2015;
var ndviThreshold = 0.3;
var years = ee.List.sequence(startYear, endYear);

// 2. 云掩膜:基于 QA_PIXEL 波段
function maskLandsat(image) {
  var qa = image.select('QA_PIXEL');
  var mask = qa.bitwiseAnd(1 << 3).eq(0)  // 云
             .and(qa.bitwiseAnd(1 << 4).eq(0)); // 云影
  return image.updateMask(mask);
}

// 3a. Landsat 5 缩放波段并重命名
function scaleL5(image) {
  return image.select(
      ['SR_B1','SR_B2','SR_B3','SR_B4','SR_B5','SR_B7']
    )
    .multiply(0.0000275).add(-0.2)
    .rename(['blue','green','red','nir','swir1','swir2'])
    .copyProperties(image, ['system:time_start']);
}

// 3b. Landsat 8 缩放波段并重命名
function scaleL8(image) {
  return image.select(
      ['SR_B2','SR_B3','SR_B4','SR_B5','SR_B6','SR_B7']
    )
    .multiply(0.0000275).add(-0.2)
    .rename(['blue','green','red','nir','swir1','swir2'])
    .copyProperties(image, ['system:time_start']);
}

// 4. 年度合成:合并 Landsat 5/8,并追加“回退”影像,保证 median 不空集
function getAnnualComposite(year) {
  year = ee.Number(year);
  var start = ee.Date.fromYMD(year,   1, 1);
  var end   = ee.Date.fromYMD(year.add(1), 1, 1);

  var col5 = ee.ImageCollection('LANDSAT/LT05/C02/T1_L2')
               .filterDate(start, end)
               .filterBounds(ROI)
               .map(maskLandsat).map(scaleL5);
  var col8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2')
               .filterDate(start, end)
               .filterBounds(ROI)
               .map(maskLandsat).map(scaleL8);

  var merged = col5.merge(col8);

  var fallback = ee.Image.constant([0.1,0.1,0.1,0.1,0.1,0.1])
                    .rename(['blue','green','red','nir','swir1','swir2'])
                    .reproject('EPSG:4326', null, 30);

  return merged
    .merge(ee.ImageCollection([fallback]))
    .median()
    .clip(ROI);
}

// 5. 斑块提取与景观指标计算(新增三个指标)
function computeMetrics(year) {
  year = ee.Number(year);
  var comp = getAnnualComposite(year);
  var ndvi = comp.normalizedDifference(['nir','red']).rename('NDVI');
  var veg  = ndvi.gt(ndviThreshold).selfMask();

  // 总植被面积(m2)
  var vegArea = ee.Number(
    ee.Image.pixelArea().updateMask(veg)
      .reduceRegion({
        reducer: ee.Reducer.sum(),
        geometry: ROI,
        scale: 30, maxPixels: 1e13
      }).get('area')
  );

  // 若无植被,直接返回所有指标为 0
  return ee.Algorithms.If(
    vegArea.lte(0),
    ee.Feature(null, {
      year:               year,
      patchNumber:        0,
      patchIndex:         0,
      shannonIndex:       0,
      totalVegArea:       0,
      avgPatchArea:       0,
      maxPatchArea:       0,
      patchAreaStdDev:    0
    }),
    (function() {
      // 连通斑块
      var patches = veg.connectedComponents({
        connectedness: ee.Kernel.square(1),
        maxSize: 256
      }).select('labels').rename('patch');

      // 斑块数量、密度
      var patchCount = ee.Number(
        patches.reduceRegion({
          reducer: ee.Reducer.countDistinct(),
          geometry: ROI,
          scale: 30, maxPixels: 1e13
        }).get('patch')
      );
      var regionHa = ROI.area().divide(10000);
      var patchIndex = patchCount.divide(regionHa);

      // 斑块面积分布(列表 of {patch, sum})
      var groups = ee.List(
        ee.Dictionary(
          ee.Image.pixelArea().addBands(patches)
            .reduceRegion({
              reducer: ee.Reducer.sum().group({
                groupField: 1,
                groupName: 'patch'
              }),
              geometry: ROI,
              scale: 30, maxPixels: 1e13
            })
        ).get('groups')
      );

      // 香农多样性
      var shannon = ee.Number(
        groups.map(function(g) {
          var d = ee.Dictionary(g);
          var area = ee.Number(d.get('sum'));
          var p = area.divide(vegArea).max(1e-6);
          return p.multiply(p.log());
        }).iterate(function(val, acc) {
          return ee.Number(acc).add(ee.Number(val));
        }, 0)
      ).multiply(-1);

      // 计算新指标:平均斑块面积、最大斑块面积、斑块面积标准差
      var areaList = groups.map(function(g) {
        return ee.Number(ee.Dictionary(g).get('sum'));
      });
      var avgArea = vegArea.divide(patchCount);
      var maxArea = ee.Number(areaList.reduce(ee.Reducer.max()));
      var variance = ee.Number(
        areaList.iterate(function(a, acc) {
          a = ee.Number(a);
          return ee.Number(acc)
                   .add(a.subtract(avgArea).pow(2));
        }, 0)
      ).divide(patchCount);
      var stdDev = variance.sqrt();

      return ee.Feature(null, {
        year:            year,
        patchNumber:     patchCount,
        patchIndex:      patchIndex,
        shannonIndex:    shannon,
        totalVegArea:    vegArea,
        avgPatchArea:    avgArea,
        maxPatchArea:    maxArea,
        patchAreaStdDev: stdDev
      });
    })()
  );
}

// 6. 批量处理并打印
var metricsFC = ee.FeatureCollection(years.map(computeMetrics));
print('2010–2025 年度景观指标(含新增指标)', metricsFC);

// 7. 2025 年可视化示例
var visYear = 2025;
var comp2025 = getAnnualComposite(visYear);
var ndvi2025 = comp2025.normalizedDifference(['nir','red']).rename('NDVI');
var veg2025  = ndvi2025.gt(ndviThreshold).selfMask();
var patch2025= veg2025.connectedComponents({
  connectedness: ee.Kernel.square(1), maxSize: 256
}).randomVisualizer();

Map.centerObject(ROI, 10);
Map.addLayer(ndvi2025, {min:0, max:1, palette:['white','green']}, 'NDVI ' + visYear);
Map.addLayer(veg2025,  {palette:['blue']},               'Vegetation Mask ' + visYear);
Map.addLayer(patch2025,{ },                              '植被斑块 ' + visYear);

// 8. 导出至 Google Drive(CSV)
Export.table.toDrive({
  collection:  metricsFC,
  description: 'LandscapeMetrics_ROI_2010_2025_Expanded',
  fileFormat:  'CSV'
});

CDL数据在农业分析中的应用:从下载到可视化的完整流程 本文详细介绍了CDL数据在农业分析中的完整应用流程,从数据下载到可视化分析。CDL作为30米分辨率的年度作物分类数据集,为精准农业、环境监测和政策制定提供了关键支持。文章涵盖了数据处理、动态变化分析及决策支持系统集成等核心环节,帮助读者掌握农业数据分析的关键技术。 阅读详情

相关推荐

3S技术整合实战:从遥感、GIS到GPS的土壤空间分析与制图全流程

空间数据分析是理解地理现象分布与规律的核心技术,其原理在于对具有地理位置信息的属性数据进行采集、管理、运算和可视化。这项技术的价值在于能将复杂的现实世界问题转化为可量化、可模拟的空间模型,从而为科学决策提供支持。在农业资源管理、环境监测和国土调查等应用场景中,对土壤这类典型空间数据进行分析与评价是常见需求。本文聚焦于整合遥感(RS)、地理信息系统(GIS)和全球定位系统(GPS)三大技术,构建一套覆盖数据获取、处理、空间插值、多准则评价到专题制图的完整工程化解决方案,旨在解决土壤普查、适应性评价中的空间信息

Hi, Sun 849

GEE中的reproject的出错改正分享

分析错误:其实这段错误的主要原因是对原始的image进行了reproject,然而在输入的reproject(“EPSG:4326”,null,30)其实这样是不对的。正确的是应该读取一个image的坐标系,而不是直接手动的输入,我也不知什么 原因。解决方法,上传到assets一个你想要的坐标系iamge ,然后读取 var wgs84=image.projection(),用reproject(wgs84,null,30)代替reproject(“EPSG:4326”,null,30)

qq_52665321的博客 684

Dynamic World vs. Traditional LULC: A Comparative Analysis of 10m Near-Real-Time Land Cover Mapping

本文对比分析了Dynamic World与传统LULC(Land Use/Land Cover)在10米近实时土地覆盖测绘中的技术差异与应用优势。Dynamic World通过10米高分辨率、近实时更新和概率分类技术,显著提升了土地覆盖监测的精度和时效性,特别适用于灾害响应、生态研究和城市热岛分析等场景。文章还探讨了其在Google Earth Engine(GEE)平台上的技术实现与未来发展方向。

weixin_29266007的博客 376

河狸水坝环境影响研究(Streamlit + Google Earth Engine)

摘要:河狸影响工具是一个基于Google Earth Engine和Sentinel-2卫星数据的网络分析平台,用于评估河狸水坝的生态效应。该工具由纽约大学团队开发,支持用户上传水坝位置坐标,自动生成对照点,并分析2018-2024年间NDVI、NDWI等生态指标的变化。通过10米分辨率卫星影像,系统可比较有水坝与无水坝区域的植被、水体指数差异,并计算月度均值。工具整合了高程掩膜、自动位置验证等功能,但受限于数据可用性,部分年份和区域的分析可能存在延迟。研究结果可为湿地恢复和生态管理提供量化依据,目前工具已

此星光明博客 728

GEE教程:使用Google Earth Engine计算黑山的植被指数与蒸散发估算

通过数据集筛选出蒙特内哥罗的边界。本文通过Google Earth Engine计算了蒙特内哥罗地区的植被指数,并将其作为蒸散发的代理指标进行可视化和导出。这种方法可以为生态系统管理和水资源规划提供重要的数据支持。希望本文的介绍和代码示例能够帮助你更好地利用GEE进行地理空间分析。

此星光明博客 202

Google Earth Engine(GEE) ——多种机器学习方法(随机森林、cart、svm等)进行土地分类(安第斯高原为例)用光谱指数、植被、土壤、雪和烧毁区以及地形指数构建模型

我们的研究提出了在地形复杂的科迪勒拉山脉地形中的第一种方法,我们表明,GEE在快速变化和转换的山区生态系统的大规模土地覆盖制图和监测中特别有用,并可复制和扩展到具有类似特征的其他地区。我们的结果表明,使用基于云的计算和机器学习可以使我们建立一个开放的、准确的和相对无差距的方法,利用免费提供的Landsat图像在一个异质的大型安第斯生态系统中绘制土地覆盖地图。我们的工作强调了在区分分布在不同的、高度异质的地形中的复杂土地覆盖物时,纳入源于地形的指数的重要性,以提高分类的准确性,这与纳入光谱指数不同。

此星光明博客 2988

植被变化监测避坑指南:GEE中4种NDVI趋势分析方法对比(含Landsat实操)

本文深度解析GEE平台下NDVI趋势分析的4种主流方法(线性回归分析、Sen's slope分析、Mann-Kendall检验和FORMA趋势分析),对比其原理差异、适用场景和实操要点。通过Landsat和MODIS双源数据案例,提供从数据预处理到结果验证的全流程技术指南,帮助研究者规避植被变化监测中的常见陷阱,建立可靠的分析框架。

195

GEE:计算每个斑块(超像素、对象)内的特征/统计值

斑块(或对象)是指具有相似像素值的区域,通常代表地物或景观要素。通过计算斑块的特征,我们可以获得关于这些区域的有用信息,从而进行更深入的分析和研究。在本文中,我们将介绍如何使用Google Earth Engine(GEE)平台计算每个斑块的特征/统计值,并将这些特征赋值给相应的对象。

养乐多的博客 1788

【GEE】6、在 Google 地球引擎中构建各种遥感指数

我们的目标是将这些相同的方法应用于世界上其他公开可用的农业数据较少但依靠地下水开采来促进边缘土地农业的地区。考虑到该地区的干旱程度以及流经该地区的主要河流数量,中心支点使用的水很可能来自地表以下,即奥加拉拉含水层。在本节中,我们将访问一些已经生成的预先存在的数据集,看看我们是否可以依靠它们来回答我们的问题,而不必担心花时间生成我们自己的数据集。回顾使用 GRACE 传感器创建的地下水地图的变化(见下图),让我们快速将我们的指数应用于地下水资源严重枯竭的新区域,看看我们是否可以发现一些灌溉农业。

TwcatL 759

GEE python:利用sentinel-2和NDVI和NDMI指数以及Gemini来寻找地下水

本文介绍了一种利用Google Earth Engine(GEE)遥感技术探测地下水的新方法。通过分析近红外(NIR)和短波红外(SWIR)波段数据,结合归一化植被指数(NDVI)和归一化水分指数(NDMI)的计算,可以识别潜在的地下水源。该方法利用健康植被的光谱特征,通过NDVI评估植被密度和健康状况,通过NDMI检测植被水分含量,从而间接推断地下水分布。文章还展示了如何使用Python代码处理卫星图像数据,计算这些指数,并通过AI分析识别地下水指标。这种技术相比传统方法更高效、成本更低,特别适用于干旱地

此星光明博客 125

GEE-Scholars MODIS地表温度LST时间变化趋势

沐风-GEE系列专栏 涵盖生态环境,卫星遥感,气候变化,云计算。 Google Earth Engine 系列学习笔记(一) Google Earth Engine 系列学习笔记(二) GEE-Scholars 可视化时间序列农业景观 GEE-Scholars 机器学习之卫星图像监督分类 GEE-Scholars 水体动态监测-河南水灾案例 GEE-Scholars 江淮平原水稻面积识别 GEE-Scholars 快速检测森林火灾位置及面积 GEE-Scholars MODIS地表温度LST时间变化趋势

生态环境,遥感监测,深度学习,云计算 1681

基于 GEE FIRMS 数据集查看火灾信息数据

基于 GEE FIRMS 数据集查看火灾信息数据。

@HNUSTer的博客 986

基于GEE的遥感生态指数(RSEI)全自动化计算系统——支持多源数据融合、缨帽自适应变换、PCA正负判定与年度影像合成

Hook 机制通过注册回调函数,支持在任意阶段注入逻辑:Hook Point触发时机典型用途Landsat SR 影像生成后插入自定义云阴影掩膜(如Fmask++)TCT变换前替换为本地训练的CNN光谱解混系数趋势分析前添加土壤湿度指数(如SMAP降尺度)GeoTIFF导出前动态添加元数据字段(如处理时间戳)注册示例:// 使用用户上传的TCT系数(需提前上传至Asset)});graph LR。

weixin_42509507的博客 264

GEE AI: Satellite Embedding中的嵌入式到底是什么意思?从无需进行NDVI计算的变化检测

谷歌推出革命性的AlphaEarth基础模型,提供64维卫星嵌入数据,以10米分辨率覆盖全球。该数据集整合了Sentinel-1、Sentinel-2等多颗卫星全年的观测数据,通过AI技术将复杂图像压缩为64个特征值。开发者可直接使用这些预处理好的嵌入数据,大幅减少分析时间,轻松实现森林监测、城市扩张追踪等应用。文中提供了Google Earth Engine的示例代码,展示如何加载数据、计算相似性指标及近似NDVI值。该技术优势明显:无需预处理、分析速度快、机器学习需求数据少,并简化了变化检测流程。

此星光明博客 621

乐视三合一体感摄像头--基本信息及windows下部分开发

乐视三合一体感摄像头--基本信息及windows下部分开发Introduction基本信息Windows下使用安装驱动使用openNI使用imageJ调用RGB图像Q:参考资料 Introduction       乐视三合一体感摄像头是乐视对标kinect,做的一款3D体感摄像头;设计目的为用于电视机上体感使用的,包括其USB结构都是为了符合电视机直接操作的,同时是支持相应的游戏操作;但是自从乐视倒闭之后,价格从之前标价899降到了现在140+左

GRF-Sunomikp31 1万+

Multisim 11.0的安装破解汉化步骤

15:打开注册机,选择管理员运行,默认第一项,选择生成文件路径,这里不要随意选择,要找到你安装Multisim安装路径下Shard下的License Manager路径下,否则会报错,破解失败。14:后面会出现一个更新提示,选择否,然后选择重启电脑后,先不要选择重启电脑,在这里出现了问题(可能敲击回车,默认去重启电脑了),所以我说不要重启电脑,重启破解时右下角出现这,点击否。17:重启电脑,如果前面重启过,那可以跳过重启,应用程序下找到下图所示,启动。16:点击确认覆盖,路径下生成了该文件。

qq_53260940的博客 2365

GEE 6种机器学习算法对比:随机森林 vs CART vs SVM 土地分类精度实测

本文对比了GEE平台上6种机器学习算法在土地分类中的精度表现,包括随机森林、CART、SVM等。通过实测数据,分析了各算法在计算效率、分类精度和适用场景上的优劣,为土地分类项目提供算法选择建议和优化策略。随机森林在综合精度上表现最佳,适合复杂地形和植被类型的分类任务。

weixin_30596023的博客 550

DLMS—Cryptographic algorithms—(Green-Book)加密算法

密码学是数学的一个分支,基于数据的转换,并且可以用来提供多种安全服务:保密性、数据完整性、认证、授权和不可否认性。密码学依赖于两个基本组成部分:算法(或密码学方法)和密钥。算法是一个数学函数,而密钥是在转换过程中使用的参数。密码算法和密钥用于对数据应用密码保护(例如,加密数据或生成数字签名),以及移除或检查保护(例如,解密加密的数据或验证数字签名)。密码哈希函数:这类函数不需要密钥(尽管它们可以以使用密钥的模式使用)。哈希函数通常用作算法的一个组成部分,以提供安全服务。见9.2.3.2节。对称密钥算法。

一个bug是bug,多个bug能work 1706

别再被云层干扰!用GEE的pixel_qa波段,5分钟搞定Landsat 8影像云掩膜

本文详细介绍了如何利用GEE中的pixel_qa波段快速处理Landsat 8影像中的云层干扰问题。通过解析pixel_qa波段的二进制编码,构建高效的云掩膜函数,并结合NDVI分析验证效果,帮助遥感研究者提升数据利用率。文章还提供了高级技巧和常见陷阱的解决方案,适用于生态学和地理学研究。

awxj68104的博客 357

Android 11多窗口+分屏+APP窗口嵌套TaskView实现原理一

然而随着版本的迭代升级,google对分屏的定制差异化也越来越大,Androd 11的分屏用的是split-screen-primary和split-screen-secondary的方式,在systemui中去实现的,其定制化的灵活度不是很高,很多业务都是放到sustemui或者fw去实现,但是随着版本的升高,后面出现了TaskView来替代了老版本的分屏方式,但是Task的核心原理其实和之前的方式是一样的,TaskView来实现分屏。

qq_18420641的博客 2613

手把手教你学Simulink实例--使用 Simulink 进行电力电子系统的小信号模型仿真

电力电子系统(Power Electronics System)包括各种功率转换器(如 DC-DC 转换器、逆变器等)。这些设备中的关键组件(如 MOSFET、IGBT、电容器、电感器等)不仅影响系统的性能,还直接关系到系统的稳定性、效率和可靠性。因此,在设计阶段进行详细的建模和仿真至关重要。小信号模型仿真的目的是通过线性化非线性系统来评估其动态特性,包括增益、相位裕度、带宽等指标。通过本教程,我们介绍了如何使用 Simulink 进行电力电子系统的小信号模型仿真。背景介绍。

MHD0815的博客 298

利用JRC全球地表水数据集v1.2监测35年水体变迁:从Landsat影像到水资源管理

本文深入解析JRC全球地表水数据集v1.2在35年水体变迁监测中的应用,从Landsat影像处理到水资源管理实践。通过occurrence、change等核心指标分析,揭示水域动态变化规律,并分享数据获取、预处理及分析方法论。结合Google Earth Engine等工具,展示如何将卫星数据转化为水资源决策支持系统,为生态保护与农业规划提供科学依据。

a1b2c的博客 619

YOLO26-seg分割优化:轻量化卷积魔改 | 新的partial convolution(PConv)结合C3k2 | CVPR2023

​​​​​摘要:本研究对Ultralytics YOLO26进行了全面分析,重点阐述了其关键架构改进及其在实时边缘目标检测中的性能基准测试。YOLO26于2025年9月发布,是YOLO系列最新、最先进的成员,专为在边缘及低功耗设备上实现高效、精确且易于部署的目标而构建。本文依次详述了YOLO26的架构创新,包括:移除了分布焦点损失(DFL);采用端到端的无NMS推理;集成了渐进损失(ProgLoss)与小目标感知标签分配(STAL);以及引入了用于稳定收敛的MuSGD优化器。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 149

GEDI L4A数据避坑指南:如何正确解读AGBD及其标准误差(以GEE为例)

本文深入解析GEDI L4A数据集,重点探讨AGBD及其标准误差(agbd_se)的科学解读与应用。通过Google Earth Engine(GEE)实例,详细讲解如何正确使用质量标识、实施本地化校准以及进行不确定性管理,帮助研究人员避免常见数据分析误区,提升生态研究的准确性和可靠性。

weixin_33725515的博客 180

华为OD机试 - 素数之积 - 数学问题(Java 2025 A卷 100分)

每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天优快云在线答疑。

学Java,找哪吒 2132

Python爬取马蜂窝旅游攻略详细实战指南

马蜂窝是国内非常知名的旅游攻略网站,包含了大量的景点介绍、旅行攻略、游记等信息。爬取马蜂窝的数据对于旅游数据分析、旅游产品推荐等有重要价值。但由于马蜂窝对爬虫有一定的反爬措施,并且页面中大量内容通过JavaScript动态加载,爬虫难度相对较大。本篇博客将带你从零开始,使用Python和相关爬虫技术,逐步实现对马蜂窝旅游攻略内容的高效爬取。并结合实战经验,分析反爬策略,提供科学合理的绕过方案。本文介绍了马蜂窝攻略的结构和抓取难点。演示了静态+动态内容的混合爬取技术。介绍了多线程和异步加速方法。

2201_76125261的博客 587
上一篇: 基于 Google Earth Engine 的地表温度计算与对比
下一篇: Google Earth Engine 基础操作教程(一):以江宁区 Landsat 8 影像处理为例
遥感AI实战
博客等级 码龄9年 1002粉丝 107原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

遥感AI实战

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值