首页 > 其他分享 >GEE中核函数在不同缩放级别下的区别

GEE中核函数在不同缩放级别下的区别

时间:2023-11-14 14:33:39浏览次数:29  
标签:Kernel img 缩放 像素 pixels GEE var circle 中核


问题:


2个问题:


1. 内核都采用单位参数,可以是像素或米,文档指出:



内核的测量系统(“像素”或“米”)。如果内核以米为单位指定,则当缩放级别更改时它将调整大小。



我认为这是不正确的,如果内核以像素为单位指定,它会随着金字塔级别的变化而改变缩放级别吗?您可以在上面的代码中比较圆内核 (m) 与圆内核 (px) 来确认此行为。如果放大第四个桥,您会发现在查看像素时解析细节的能力有所提高,而米细节保持不变。



2. 当内核使用米单位时,在更高的金字塔级别上是如何计算的?例如,它是在本机计算然后缩小的吗?我尝试通过在像素单元内核上使用手动重投影来测试这一点,但是它的运行速度比米版本慢得多,所以我认为这不是它的完成方式,并且它得到了完全不同的视觉结果。我要求的主要原因是计算效率,指定以米为单位的比例是否比以像素为单位的成本更高?


3.


Circle Kernel at 10m (px): Tile error: Output of image computation is too large (2 bands for 122013995 pixels = 1861.8 MiB > 80.0 MiB). If this is a reduction, try specifying a larger 'tileScale' parameter.


GEE中核函数在不同缩放级别下的区别_前端

GEE中核函数在不同缩放级别下的区别_kernel_02

 

GEE中核函数在不同缩放级别下的区别_gee_03

GEE中核函数在不同缩放级别下的区别_开发语言_04

 

解决方案


半径为“3 像素”的内核在任何投影/比例中始终为 7x7“像素”,这将导致每个比例的米数不同。


半径为“300 米”的内核将使用覆盖 300 米所需的许多像素,当以 0.3m 的比例使用时,可能为 1000x1000 像素。


函数:

ee.Kernel.circle(radius, unitsnormalizemagnitude)

Generates a circle-shaped boolean kernel.

Arguments:

radius (Float):

The radius of the kernel to generate.

units (String, default: "pixels"):

The system of measurement for the kernel ('pixels' or 'meters'). If the kernel is specified in meters, it will resize when the zoom-level is changed.

normalize (Boolean, default: true):

Normalize the kernel values to sum to 1.

magnitude (Float, default: 1):

Scale each value by this amount.

Returns: Kernel

convolve(kernel)

Convolves each band of an image with the given kernel.用给定的核卷积图像的每个波段。

Arguments:

this:image (Image):

The image to convolve.

kernel (Kernel):

The kernel to convolve with.

Returns: Image

代码:

//研究区和数据集
var imageCollection = ee.ImageCollection("COPERNICUS/S1_GRD"),
    geometry = 
    /* color: #98ff00 */
    /* shown: false */
    /* displayProperties: [
      {
        "type": "rectangle"
      }
    ] */
    ee.Geometry.Polygon(
        [[[-3.4157601749762367, 56.09914841569624],
          [-3.4157601749762367, 55.81469755998435],
          [-2.8334847843512367, 55.81469755998435],
          [-2.8334847843512367, 56.09914841569624]]], null, false),
    geometry2 = 
    /* color: #0b4a8b */
    /* shown: false */
    /* displayProperties: [
      {
        "type": "rectangle"
      }
    ] */
    ee.Geometry.Polygon(
        [[[-3.414419891474414, 56.01742307470684],
          [-3.414419891474414, 55.98877181348714],
          [-3.3768260499216796, 55.98877181348714],
          [-3.3768260499216796, 56.01742307470684]]], null, false);

//数据过滤和筛选
var filtered = imageCollection
            .filterBounds(geometry)
            .filterDate("2023-01-01", "2023-01-31")

//影像镶嵌和裁剪
var img = filtered
            .mean()
            .select([0, 1])
            .clip(geometry)
            
//选择坐标系
var proj = filtered.first().select(0).projection()

//建立核函数
var circle_metres = ee.Kernel.circle({
  radius: 100, 
  units: "meters",
  magnitude: 2
})

// gsd 是 ~10 米,因此将其调整为 10 像素,以便与上述原生比例相当
var circle_pixels = ee.Kernel.circle({
  radius: 10,
  units: "pixels",
  magnitude: 2
})

var circle_pixels_projected = ee.Kernel.circle({
  radius: 10,
  units: "pixels",
  magnitude: 2
})

//按照核函数进行卷积
var img_m = img.convolve(circle_metres)
var img_p = img.convolve(circle_pixels)
var img_forced_res = img.convolve(circle_pixels_projected).reproject(proj.atScale(1))

var vis = {
  "min": -26,
  "max": 10,
  "bands": ["VV", "VH", "VV"]
}

Map.centerObject(geometry2)
Map.addLayer(img, vis, "No Kernel Composite")
Map.addLayer(img_m, vis, "Circle Kernel (m)")
Map.addLayer(img_p, vis, "Circle Kernel (px)")
Map.addLayer(img_forced_res, vis, "Circle Kernel at 10m (px)")

 

标签:Kernel,img,缩放,像素,pixels,GEE,var,circle,中核
From: https://blog.51cto.com/u_15654855/8368798

相关文章

  • GEE ——errors & debuggings (2023GEE峰会总结)
    简介:在gee中有三种错误,一种就是系统错误,也就是我们看到的会在JavaScriptcodeeditor中出现的错误,也就是在程序还没有启动之前就会提示的错误,而客户端错误则主要是会提示一些在代码过程中的错误,比如说没出现过的变量名称,另外就是服务器出席那的错误,也就是说,你的代码和你索要运行的......
  • GEE错误——XXX is not a function,如何解决这个问题?
    错误:这里的时错误原始的代码链接:https://code.earthengine.google.com/4bf0975a41e14d0c40e01925c6f3cf2a这里主要的问题时这个单一影像不存在:ImageCollection(Error)ImageCollection.load:ImageCollectionasset'LANDSAT/LC08/C01/T1_SR/LC08_221077_20170411'notfound(does......
  • GEE数据集——2019、2020、2021、2022和2023年全球固定宽带和移动(蜂窝)网络性能Shapefi
    全球固定宽带和移动(蜂窝)网络性能¶全球固定宽带和移动(蜂窝)网络性能,分配给缩放级别16网络墨卡托图块(赤道处约610.8米x610.8米)。数据以Shapefile格式和ApacheParquet格式提供,其几何形状以众所周知的文本(WKT)表示,投影在EPSG:4326中。下载速度、上传速度和延迟是通过......
  • Vue3实现图片滚轮缩放和拖拽
    在项目开发中遇到一个需求:1:用鼠标滚轮可对图片进行缩放处理2:点击按钮可对图片进行缩放处理3:可对图片进行拖拽处理 我在开发中通过自己实现与百度查看优秀的铁子进行了两种类型的使用  <template><divref="imgWrap"class="wrap"@mousewheel.prevent="rollImg"......
  • 编程最佳外挂:批量数据分析与可视化,CodeGeeX工具箱一键完成
    ChatGLM3代模型的CodeInterpreter能力,本周已经在VSCode里的CodeGeeX插件产品中,以开发者工具箱的产品形态上线。下图以VSCode插件为例:在CodeGeeX的侧边栏,和智能问答AskCodeGeeX并列出现的工具箱标签,用户登录后就可以直接打开使用。CodeInterpreter曾被称为ChatGPT最强外挂。现......
  • 图像缩放攻击
    今天在B站上看到一个关于图像缩放攻击的挺有意思的视频。去他的GitHub上复制了源代码来看了看,原理特别简单,核心就是算出缩放点的位置。比如说有一个8个元素的列表[1,1,1,1,1,1,1,1],现在我想把其中的两个元素改成0,而且要求这两个0均匀分布在列表之中。问题就在于选择哪两......
  • PDF统一大小缩放至A4或指定大小
    PDF统一大小缩放至A4或指定大小https://jingyan.baidu.com/article/ed15cb1bb9b95d1be2698163.html如何让pdf中的所有图片宽度一致,高度自适应?去除空白边https://www.zhihu.com/question/449570733?utm_id=0......
  • WPF开发的小巧、美观桌面快捷工具GeekDesk开源项目--极客桌面
    今天给大家推荐一个基于WPF开发的,专门为程序员定制的桌面快捷工具。项目简介这是基于.Net+WPF开发的,一个小巧、UI美观的快捷工具。此项目发布以来就受到大家的喜欢,代码结构清晰非常适合用来学习。项目还在持续迭代中,有部分小问题,用来学习、体验完全没问题。作者一直在迭代升级......
  • css:transform实现平移、旋转、缩放、倾斜元素
    目录文档语法示例旋转元素transform-rotate旋转过渡旋转动画参考文章文档https://developer.mozilla.org/zh-CN/docs/Web/CSS/transform语法/*Keywordvalues*/transform:none;/*Functionvalues*/transform:matrix(1,2,3,4,5,6);transform:translate(12px,50......
  • 2023PKU GeekGame Web wp
    2023PKUGeekGameWebwp第三新XSS巡猎查看源码我们可以知道可以在body的部分插入代码触发xss漏洞,根据题目给出的提示可以知道需要创建一个元素指向/admin/路径,然后通过document读取目标的cookies。<iframesrc="/admin/"id="barframe"></iframe><script>setTimeout(()=>......