m0_61874453 2023-05-11 10:22 采纳率: 0%
浏览 76
已结题

Google earth engine 海水养殖区提取

对海水养殖中的浮筏养殖、网箱养殖及滩涂养殖进行提取,回答最好能注明代码的主要功能,谢谢!

  • 写回答

5条回答 默认 最新

  • 肩匣与橘 游戏开发领域新星创作者 2023-05-11 11:35
    关注
    获得4.65元问题酬金

    直接上代码:!!!!

    // 导入需要的影像数据和矢量数据
    var s2 = ee.ImageCollection('COPERNICUS/S2_SR');
    var water = ee.FeatureCollection('users/username/water_bodies');
    var rafts = ee.FeatureCollection('users/username/rafts');
    var cages = ee.FeatureCollection('users/username/cages');
    var flats = ee.FeatureCollection('users/username/flats');
    // 选择时间范围和地理区域
    var start = ee.Date('2019-01-01');
    var end = ee.Date('2020-01-01');
    var region = ee.Geometry.Rectangle([xmin, ymin, xmax, ymax]);
    // 过滤影像和矢量数据
    var filtered_s2 = s2.filterDate(start, end).filterBounds(region);
    var filtered_water = water.filterBounds(region);
    var filtered_rafts = rafts.filterBounds(region);
    var filtered_cages = cages.filterBounds(region);
    var filtered_flats = flats.filterBounds(region);
    // 计算NDWI指数
    var ndwi = function(image) {
      var green = image.select('B3');
      var nir = image.select('B8');
      var ndwi = green.subtract(nir).divide(green.add(nir));
      return image.addBands(ndwi.rename('NDWI'));
    };
    var ndwi_s2 = filtered_s2.map(ndwi);
    // 在影像上应用膨胀操作,以增加养殖区域的像素数量
    var dilated_water = filtered_water.map(function(feature) {
      return feature.buffer(100);
    });
    var dilated_rafts = filtered_rafts.map(function(feature) {
      return feature.buffer(100);
    });
    var dilated_cages = filtered_cages.map(function(feature) {
      return feature.buffer(100);
    });
    var dilated_flats = filtered_flats.map(function(feature) {
      return feature.buffer(100);
    // 根据NDWI指数和矢量数据提取海水养殖区
    var extract_water = function(image) {
      var water_mask = image.select('NDWI').gt(0.1);
      var water_zone = water_mask.reduceConnectedComponents().clip(region);
      return water_zone;
    };
    var water_zone = ndwi_s2.map(extract_water).mosaic();
    var raft_zone = water_zone.mask(water_zone.intersects(dilated_rafts)).clip(region);
    var cage_zone = water_zone.mask(water_zone.intersects(dilated_cages)).clip(region);
    var flat_zone = water_zone.mask(water_zone.intersects(dilated_flats)).clip(region);
    // 将结果可视化
    Map.centerObject(region, 10);
    Map.addLayer(water_zone, {palette: 'blue'}, 'Water Zone');
    Map.addLayer(raft_zone, {palette: 'yellow'}, 'Raft Zone');
    Map.addLayer(cage_zone, {palette: 'red'}, 'Cage Zone');
    Map.addLayer(flat_zone, {palette: 'green'}, 'Flat Zone');
    
    
    评论

报告相同问题?

问题事件

  • 系统已结题 5月19日
  • 创建了问题 5月11日

悬赏问题

  • ¥15 关于链式代理v*n的配置
  • ¥15 python怎么在已有视频文件后添加新帧
  • ¥20 虚幻UE引擎如何让多个同一个蓝图的NPC执行一样的动画,
  • ¥15 fluent里模拟降膜反应的UDF编写
  • ¥15 MYSQL 多表拼接link
  • ¥15 关于某款2.13寸墨水屏的问题
  • ¥15 obsidian的中文层级自动编号
  • ¥15 同一个网口一个电脑连接有网,另一个电脑连接没网
  • ¥15 神经网络模型一直不能上GPU
  • ¥15 pyqt怎么把滑块和输入框相互绑定,求解决!