Google Earth Engine(GEE)——Qgis-earthengine使用 Python API 集成 Google Earth Engine 和 QGIS

41 篇文章 14 订阅

当前版本:0.0.3 alpha

 

最新的QGIS下载地址https://qgis.org/en/site/

使用讨论对插件或问题页面发表评论以报告错误或新功能请求。

QGIS Earth Engine 插件使用EE Python API集成了Google Earth EngineQGIS。目前,该插件仅实现了Google 地球引擎代码编辑器中通常使用的 Map API 的一个子集。要开始使用 - 请首先访问:https://developers.google.com/earth-engine/getstarted,确保您熟悉 EE。

安装

该插件可以像任何其他插件一样从 QGIS Plugin Repository 安装。由于发行版中包含 EE 依赖项,安装可能需要一些时间(~30-60 秒)。

用户需要有一个有效的 Google Earth Engine (EE) 帐户才能使用该插件。如果您没有 - 请在此处注册:https://earthengine.google.com/signup/。

安装后,插件会检查用户是否经过身份验证以使用 EE。如果不是这种情况 - 将要求用户进行身份验证。

安装并通过身份验证后,可以从 QGIS Python 访问该插件以编写和执行 EE 脚本。尚无可用的 UI 支持,您必须编写代码!Code Editor 

要测试插件是否已正确安装和验证 - 在 QGIS Python 控制台中键入以下内容:

>>> import ee
>>> print(ee.String('Hello World from EE!').getInfo())
Hello World from EE!

更高级的脚本可能如下所示:

地图

该插件实现了代码编辑器中通常使用的大部分 Map.* 功能。请注意,目前不支持 UI 或图层功能。

当前实现了以下 Map 函数,可选参数为斜体

  • Map.addLayer(eeObject, visParams, name, shown, opacity ),例子
import ee
from ee_plugin import Map

#获取单个矢量文件,过滤你想要的信息
countries = ee.FeatureCollection("USDOS/LSIB_SIMPLE/2017")
country = countries.filter(ee.Filter.eq('country_na', 'Ukraine'))

# 添加矢量到地图
Map.addLayer(country, { 'color': 'orange' }, 'feature')

# 设置地图显示中心和放大倍数
Map.setCenter(31.472, 49.044, 6)
  • Map.centerObject(object, zoom ),例子
  • Map.getBounds( asGeoJSON ),示例
import ee
from ee_plugin import Map

# 加载一些数去向地图上
dem = ee.Image("AHN/AHN2_05M_RUW")
Map.addLayer(dem, {'min': -5, 'max': 50, 'palette': ['000000', 'ffffff'] }, 'DEM', True)

# 在某个经纬度地区进行放大
Map.setCenter(4.4585, 52.0774, 15)

# 获取边界
bounds = Map.getBounds(True)

# 加载这个边界
Map.addLayer(bounds, { 'color': 'green' }, 'bounds', True, 0.5)
import ee
from ee_plugin import Map

# add some data to the Map
dem = ee.Image("AHN/AHN2_05M_RUW")
Map.addLayer(dem, {'min': -5, 'max': 50, 'palette': ['000000', 'ffffff'] }, 'DEM', True)

# zoom in somewhere
Map.setCenter(4.4585, 52.0774, 14)

# TEST
center= Map.getCenter()

# add bounds to the map
Map.addLayer(center, { 'color': 'red' }, 'center')
  • Map.setCenter(lon, lat, zoom ),例子
import ee
from ee_plugin import Map

# Add some data to the Map
dem = ee.Image("JAXA/ALOS/AW3D30_V1_1").select('MED')
Map.addLayer(dem, {'min': 0, 'max': 5000, 'palette': ['000000', 'ffffff'] }, 'DEM', True)

# TEST Map.setCenter
Map.setCenter(0, 28, 2.5)
  • Map.getScale()
  • Map.getZoom()
  • Map.setZoom(zoom),例子
import ee
from ee_plugin import Map

# add some data to the Map
dem = ee.Image("AHN/AHN2_05M_RUW")
Map.addLayer(dem, {'min': -5, 'max': 50, 'palette': ['000000', 'ffffff'] }, 'DEM', True)

# 这里实际上已经设置了缩放倍数为15
Map.setCenter(4.4585, 52.0774, 15)

# 这个设置缩放倍数为10倍
Map.setZoom(10)

查看官方EE API 文档以了解 Map 使用情况。

导入插件

对于大多数 EE 脚本,必须包括以下两个导入:

#导入EE包和导入ee_plugin包
import ee
from ee_plugin import Map

之后,可以以类似于官方 EE 代码编辑器 [https://developers.google.com/earth-engine/playground] 的方式使用 Map.* 函数:

添加地图图层

image = ee.Image('USGS/SRTMGL1_003')
    
Map.addLayer(image, {'palette': ['blue', 'red'], 'min': 0, 'max': 5000}, 'dem', True)

上面的代码将查询 Earth Engine 以获取图像,并将其作为 XYZ 切片图层添加到 QGIS Canvas。这些代码其实和JS在网页上的参数基本上一致,仅仅是语法有一点点区别。

注意,包含EE地图图层的QGIS项目也可以保存,在这种情况下,连接EE所需的代码存储在QGIS项目中,用于在项目加载时重新初始化这些图层。目前,只有在加载这些图层的 QGIS 中安装了 ee_plugin 时,这才有效。

检查示例目录以了解当前支持的功能类型。

常问问题

问:我收到身份验证错误,我该怎么办?

答:尝试安装 Google Earth Engine命令行客户端。运行earthengine authenticate命令。这将重置身份验证凭据并解决大多数身份验证错误。

问:我收到类似 ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证在 MacOS 上失败的错误:

答:打开 Finder 并双击该文件/Applications/Python 3.6/Install Certificates.command。此路径可能因 QGIS 的安装方式(Homebrew、macports、native)而异。然后重启QGIS。

问:插件在身份验证后崩溃,堆栈跟踪显示 404,该怎么办?

A:访问 http://code.earthengine.google.com 并确保您可以访问代码编辑器。如果插件仍然失败 - 确保您的 IP 不在防火墙下。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

此星光明

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

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

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

打赏作者

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

抵扣说明:

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

余额充值