GEE(Google Earth Engine)——JavaScript 入门(2)

2024-02-01 19:52:50 浏览数 (1)

'你好,世界!' JavaScript

将信息打印到控制台是获取有关对象的信息、显示计算的数字结果、显示对象元数据或帮助调试的基本任务。标志性的“Hello World!” 代码编辑器中的示例是:

代码编辑器 (JavaScript)

代码语言:javascript复制
print('Hello world!');

将此行复制到代码编辑器的代码编辑器中,然后单击运行。请注意,输出显示在代码编辑器右侧的控制台选项卡中。对于更遥感相关的示例,以下打印 Landsat 8 图像的元数据:

代码编辑器 (JavaScript)

代码语言:javascript复制
print(ee.Image('LANDSAT/LC08/C01/T1/LC08_044034_20140318'));

仔细检查控制台中的输出以查看可用于 Landsat 图像的元数据。

向地图添加数据

除了将信息打印到控制台之外,向控制台添加数据Map 也是可视化地理数据的方式。使用Map.addLayer()这样做。在以下示例中,使用 将 anImage实例化(稍后介绍如何找到这些图像)ee.Image(),将其添加到地图中, Map.addLayer()并且地图位于图像的中心:

代码编辑器 (JavaScript)

代码语言:javascript复制
// Load an image.
var image = ee.Image('LANDSAT/LC08/C01/T1/LC08_044034_20140318');

// Center the map on the image.
Map.centerObject(image, 9);

// Display the image.
Map.addLayer(image);

的第二个参数Map.centerObject()是缩放级别,数字越大表示比例越大(放大得越多)。这些Map 函数的参数在可从文档选项卡访问的 API 参考中进行了深入描述 。如果图像的外观不令人满意,请使用附加参数配置显示参数Map.addLayer()。例如:

代码编辑器 (JavaScript)

代码语言:javascript复制
// Load the image from the archive.
var image = ee.Image('LANDSAT/LC08/C01/T1/LC08_044034_20140318');

// Define visualization parameters in an object literal.
var vizParams = {bands: ['B5', 'B4', 'B3'], min: 5000, max: 15000, gamma: 1.3};

// Center the map on the image and display.
Map.centerObject(image, 9);
Map.addLayer(image, vizParams, 'Landsat 8 false color');

观察可视化参数由对象文字定义,其中包括要显示的波段列表、最小和最大数字以及伽玛值。(了解更多关于陆地卫星乐队 在这里。了解更多关于图像可视化在这里)。

用于Map.addLayer()向地图添加要素和要素集合。例如,

代码编辑器 (JavaScript)

代码语言:javascript复制
var counties = ee.FeatureCollection('TIGER/2016/Counties');
Map.addLayer(counties, {}, 'counties');

查找图像、图像集合和特征集合

通过搜索地球引擎数据目录可以发现图像、图像集合和特征集合。例如,在搜索字段中输入“Landsat 8”会生成栅格数据集列表。(地球引擎数据集的完整列表位于 地球引擎数据目录)。单击数据集名称可获取简要说明、有关时间可用性、数据提供者和集合 ID 的信息。单击“导入” 按钮可在脚本顶部自动创建一个“导入”部分,其中包含此集合的变量。

或者,复制集合 ID 并将其粘贴到您的代码中。例如,选择“Landsat 8”搜索的第一个结果并复制ID,如下所示:

代码编辑器 (JavaScript)

代码语言:javascript复制
var collection = ee.ImageCollection('LANDSAT/LC08/C01/T1');

由于这是跨越地球陆地表面的许多图像的集合,因此在集合中查找单个图像需要过滤以缩小搜索范围。或者,可以使用合成和镶嵌技术将图像集合缩减为单个图像。更多关于过滤和合成(见 减少)在下一节。

特征集合也可通过数据目录获得。它们的表示比图像集合小,但您会发现国际、人口普查、流域和保护区的边界,仅举几例。在此处了解有关导入您自己的矢量数据集的更多信息。

过滤和排序

通常需要按空间和/或时间过滤集合以限制结果的数量。例如,考虑对 Landsat 8 场景集合进行排序的任务,以便为旧金山找到一个无云场景。首先,有必要定义感兴趣的区域。一个点通常对此很有用。激活代码编辑器右侧的 Inspector选项卡并单击您感兴趣区域的中心附近,从Inspector 选项卡复制坐标,然后Point使用以下方法构建一个:

代码编辑器 (JavaScript)

代码语言:javascript复制
var point = ee.Geometry.Point(-122.262, 37.8719);

构造开始和结束日期:

代码编辑器 (JavaScript)

代码语言:javascript复制
var start = ee.Date('2014-06-01');
var finish = ee.Date('2014-10-01');

使用点和日期过滤 Landsat 8 集合,然后使用元数据属性(在检查 Landsat 8 场景元数据期间发现)进行排序:

代码编辑器 (JavaScript)

代码语言:javascript复制
var filteredCollection = ee.ImageCollection('LANDSAT/LC08/C01/T1')
  .filterBounds(point)
  .filterDate(start, finish)
  .sort('CLOUD_COVER', true);

可以安全地打印和检查此集合。(如果集合中有太多图像,打印它会很慢、超时或返回错误)。观察集合中的图像List存储在ImageCollection. 集合中任何图像的 ID 都可以复制到Image上面的构造函数中。或者,获取第一张图像(最低云量):

代码编辑器 (JavaScript)

代码语言:javascript复制
var first = filteredCollection.first();

使用filter() withee.Filter作为参数访问完整的 Earth Engine 过滤功能。(上面使用的filterBounds()filterDate()方法是快捷方式)。例如,下面创建了一个Filter,使用它来过滤 aFeatureCollection并显示结果:

代码编辑器 (JavaScript)

代码语言:javascript复制
// Load a feature collection.
var featureCollection = ee.FeatureCollection('TIGER/2016/States');

// Filter the collection.
var filteredFC = featureCollection.filter(ee.Filter.eq('NAME', 'California'));

// Display the collection.
Map.addLayer(filteredFC, {}, 'California');

0 人点赞