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

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


当前版本: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 不在防火墙下。


相关文章
|
4月前
|
JSON API 数据处理
Winform管理系统新飞跃:无缝集成SqlSugar与Web API,实现数据云端同步的革新之路!
【8月更文挑战第3天】在企业应用开发中,常需将Winform桌面应用扩展至支持Web API调用,实现数据云端同步。本文通过实例展示如何在已有SqlSugar为基础的Winform系统中集成HTTP客户端调用Web API。采用.NET的`HttpClient`处理请求,支持异步操作。示例包括创建HTTP辅助类封装请求逻辑及在Winform界面调用API更新UI。此外,还讨论了跨域与安全性的处理策略。这种方法提高了系统的灵活性与扩展性,便于未来的技术演进。
279 2
|
28天前
|
API Docker 微服务
Ocelot集成Consul实现api网关与服务发现
本文介绍了如何在.NET微服务架构中集成API网关Ocelot和Consul服务发现。首先通过Docker安装并配置Consul,接着在GoodApi项目中实现服务的自动注册与注销,并配置健康检查。然后,通过修改Ocelot的配置文件`ocelot.json`和`Program.cs`,实现基于Consul的服务发现,确保API请求能够正确路由到后端服务。最后,解决了服务解析时可能出现的问题,确保服务的IP地址而非节点名称被正确解析。
36 0
Ocelot集成Consul实现api网关与服务发现
|
5月前
|
Java API 开发者
在Spring Boot中集成Swagger API文档
在Spring Boot中集成Swagger API文档
|
2月前
|
IDE API 开发工具
沉浸式集成阿里云 OpenAPI|Alibaba Cloud API Toolkit for VS Code
Alibaba Cloud API Toolkit for VSCode 是集成了 OpenAPI 开发者门户多项功能的 VSCode 插件,开发者可以通过这个插件方便地查找API文档、进行API调试、插入SDK代码,并配置基础环境设置。我们的目标是缩短开发者在门户和IDE之间的频繁切换,实现API信息和开发流程的无缝结合,让开发者的工作变得更加高效和紧密。
沉浸式集成阿里云 OpenAPI|Alibaba Cloud API Toolkit for VS Code
|
2月前
|
开发框架 .NET API
Windows Forms应用程序中集成一个ASP.NET API服务
Windows Forms应用程序中集成一个ASP.NET API服务
104 9
|
2月前
|
存储 数据可视化 JavaScript
可视化集成API接口请求+变量绑定+源码输出
可视化集成API接口请求+变量绑定+源码输出
62 4
|
3月前
|
JavaScript 前端开发 API
|
3月前
|
SQL 分布式计算 BI
Dataphin中集成SelectDB以支持报表分析和API查询
本文介绍了一家零售企业如何利用SelectDB进行BI分析及数据服务API的查询。通过Dataphin的数据集成、SQL研发等功能,将CRM、ERP等系统数据汇聚加工,并推送至SelectDB构建销售数据集市层,以支持报表分析及API查询。SelectDB具备实时、统一、弹性及开放特性,适用于多种实时分析场景。文章详细描述了在Dataphin中集成SelectDB的整体方案、数据源配置、数据集成、数据开发及数据服务流程。
143 0
|
4月前
|
存储 消息中间件 前端开发
Web2py框架下的神秘力量:如何轻松集成第三方API,让你的应用不再孤单!
【8月更文挑战第31天】在开发现代Web应用时,常需集成第三方服务如支付网关、数据存储等。本文将指导你使用Web2py框架无缝接入第三方API。通过实例演示从注册获取API密钥、创建控制器、发送HTTP请求到处理响应的全过程。利用`requests`库与Web2py的内置功能,轻松实现API交互。文章详细介绍了如何编写RESTful控制器,处理API请求及响应,确保数据安全传输。通过本教程,你将学会如何高效整合第三方服务,拓展应用功能。欢迎留言交流心得与建议。
52 1
|
4月前
|
Java API 数据中心
百炼平台Java 集成API上传文档到数据中心并添加索引
本文主要演示阿里云百炼产品,如何通过API实现数据中心文档的上传和索引的添加。
127 3