Google Earth Engine(GEE)——image.select(...).rgbToHsv is not a fu

举报
此星光明 发表于 2022/12/07 17:36:34 2022/12/07
【摘要】 ​本错误涵盖了好多错误,主要的原因就是函数不明确,不知道如何使用,以及函数的参数的设定,所以这里大家要先去看函数,另外,最主要的问题就是影像集合和影像要区分开,否则就会出现xxx is nor a function。这里我们用要注意!!!提示:Line 9: image.select(...).rgbToHsv is not a function错误: 原始代码:var roi = ...

本错误涵盖了好多错误,主要的原因就是函数不明确,不知道如何使用,以及函数的参数的设定,所以这里大家要先去看函数,另外,最主要的问题就是影像集合和影像要区分开,否则就会出现xxx is nor a function。这里我们用要注意!!!

提示:

Line 9: image.select(...).rgbToHsv is not a function

错误:


 原始代码:

var roi = 
    /* color: #0000ff */
    /* displayProperties: [
      {
        "type": "rectangle"
      }
    ] */
    ee.Geometry.Polygon(
        [[[30.428288742441815, -22.966276755152105],
          [30.428288742441815, -23.010840796597776],
          [30.510514542002362, -23.010840796597776],
          [30.510514542002362, -22.966276755152105]]], null, false);

// load Landsat 7 TOA reflecteance image
var image= ee.ImageCollection ('LANDSAT/LE07/C02/T2_TOA');
Map.addLayer(   
    image,
    {bands:['B4','B3','B2'], min: 0, max: 0.25, gamma: [1.1,1.1,1]},
    'rgb');
  
  // Convert the RGB bands to HSV color space
var hsv = image.select(['B4','B3','B2']).rgbToHsv();
print('hsv', hsv)
  
  // Swap in the panchrimatic band and covert back to RGB
var sharpened = ee.image.cat([
    hsv.select('hue'), hsv.select('saturaion'), image.select('B8')
    ]).hsvToRgb;
    print('sharpened', sharpened)
    
    //Display the pan-sharoend results
    Map.setCenter (roi);
    Map.addLayer(sharpened,
                 {min:0, max:0.25, gamma: [1.3,1.3,1.3]},
                 'pan-sharpened')

这个问题在于,我们作用对象是一个影像集合而不是影像,所以才会出现这种状况,因此我们就首先要将影像集合通过,reducer进行聚合或者镶嵌,这样整体的影像就成了单景影像,从而实现正确的操作。 这里我们不建议加载全球的影像,要筛选边界,从而减小运算量。

代码:

var image= ee.ImageCollection ('LANDSAT/LE07/C02/T2_TOA').filterBounds(roi);
Map.addLayer(   
    image,
    {bands:['B4','B3','B2'], min: 0, max: 0.25, gamma: [1.1,1.1,1]},
    'rgb');
  
  // Convert the RGB bands to HSV color space
var hsv = image.select(['B4','B3','B2']).mosaic().rgbToHsv();
print('hsv', hsv)

修改好错误的第九行代码之后我们会发现新的错误:

Line 13: Cannot read property 'cat' of undefined 

 这是因为我们函数并没有引用正确,

 ee.image.cat 要改为 ee.Image.cat 大写开头的I

 当然这里我们不需要这一步,所以就不用了。

hsvToRgb()

Transforms the image from the HSV color space to the RGB color space. Expects a 3 band image in the range [0, 1], and produces three bands: red, green and blue with values in the range [0, 1].

Arguments:

this:image (Image):

The image to transform.

Returns: Image


紧接着又出现错误:

Line 19: Missing required arguments to function setCenter(): lat

原因在于Map.setCenter()这个函数:

 

Map.setCenter(lon, lat, zoom)

Centers the map view at a given coordinates with the given zoom level.

Returns the map.

Arguments:

lon (Number):

The longitude of the center, in degrees.

lat (Number):

The latitude of the center, in degrees.

zoom (Number, optional):

The zoom level, from 0 to 24.

Returns: ui.Map

修改后的代码:

代码:

var image= ee.ImageCollection ('LANDSAT/LE07/C02/T2_TOA').filterBounds(roi);
Map.addLayer(   
    image,
    {bands:['B4','B3','B2'], min: 0, max: 0.25, gamma: [1.1,1.1,1]},
    'rgb');
  
  // Convert the RGB bands to HSV color space
var hsv = image.select(['B4','B3','B2']).mosaic().rgbToHsv();
print('hsv', hsv)
  
  // Swap in the panchrimatic band and covert back to RGB
var sharpened = hsv.hsvToRgb()
//ee.Image.cat([
    // hsv.select('hue'), hsv.select('saturaion'), hsv.select('value')
    // ]).hsvToRgb();
    print('sharpened', sharpened)
    
    //Display the pan-sharoend results
    Map.setCenter (30,-22,8);
    Map.addLayer(sharpened,{min:0, max:0.25, gamma:([1.3,1.3,1.3])},'pan-sharpened');
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。