QGIS配置Google Earth Engine插件问题解决
Posted youzi-xuchongyou
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QGIS配置Google Earth Engine插件问题解决相关的知识,希望对你有一定的参考价值。
背景
之前因为下载影像接触到Google Earth Engine,我还是挺有兴趣的,后来看知乎专栏,有人说GEE能与QGIS结合了,我就尝尝鲜(其实挺早就出了,已经不鲜了)。本文章不再赘述插件安装的步骤了,直接处理问题,文章末尾放插件安装步骤的网址。
问题
写这篇文章的目的,肯定是因为遇到了很多问题。
问题1:装插件时出现这个问题,装到最后弹出错误,提示Plugin installation failed:Operation canceled. 看这个错误提示看起来像是人为点击取消的,实际上软件安装过程中自动取消的。
问题2:Couldn‘t load plugin ‘ee_plugin‘ due to an error when calling its classFactory() method(无法载入插件 “qgis-earthengine-plugin-master”因在调用其classFactory()方法时发生错误)
问题3:TimeoutError: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。
问题4:qgis.utils.plugins[‘ee_plugin‘].check_version() KeyError:‘ee_plugin‘
原因分析
这几个问题,前三个问题都是跟网络相关,毕竟GEE本来就需要scientific Internet,所以在QIS里面也需要外网支持才能行。
第四个问题大概率跟QGIS插件字典有关,也可能插件本身不稳定的原因。
解决方案
问题好多,困扰了我好久,挺郁闷人的,今天终于解决了。
前三个问题都跟网络有关,就要自己搞个代理,然后在QGIS设置代理:
①打开QGIS,设置→选项→网络,具体根据自己电脑的代理设置
这样基本就就解决掉第一个插件下载不了和第二个加载不了插件的问题了,在解决这个问题时发现QGIS的插件可以直接到官网下载,然后安装时选择用ZIP安装
②问题三TimeoutError: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。这个问题也是找了好久,后来在多个地方找到解决方案,要在代码里设置代理,端口号根据自己的电脑设置
1 import ee 2 import os 3 os.environ[‘HTTP_PROXY‘] = ‘http://127.0.0.1:1081‘ 4 os.environ[‘HTTPS_PROXY‘] = ‘http://127.0.0.1:1081‘ 5 ee.Initialize()
③问题四花费的时间最长,因为环境都配置好了,但是测试代码都完全可以运行了,但是加载影像的代码就是会报错“qgis.utils.plugins[‘ee_plugin‘].check_version() KeyError:‘ee_plugin‘”,比较莫名其妙,这个地方要去插件管理里面关闭插件重新启用
在github的issue找到的,其实之前也试过这方法,试了GEE插件开发者给的解决方法没起作用,但是题主说解决了,就去找题主,没有联系上,我今天突发奇想,就觉得这个题主这么可能在没有别人帮助的情况下解决的,因为我本人费了好几天都没解决掉,我想肯定是开发者给的解决方法是有效的,所以今天下午重新试了下,果然有用。
用了示例代码(一个不错的例子集合):
1 import ee 2 from ee_plugin import Map 3 import os 4 os.environ[‘HTTP_PROXY‘] = ‘http://127.0.0.1:1081‘ 5 os.environ[‘HTTPS_PROXY‘] = ‘http://127.0.0.1:1081‘ 6 ee.Initialize() 7 8 # get a single feature 9 countries = ee.FeatureCollection("USDOS/LSIB_SIMPLE/2017") 10 country = countries.filter(ee.Filter.eq(‘country_na‘, ‘Ukraine‘)) 11 Map.addLayer(country, { ‘color‘: ‘orange‘ }, ‘feature collection layer‘) 12 13 # TEST: center feature on a map 14 Map.centerObject(country, 6)
效果如下:
总结
最重要的是要上外网,然后再QGIS的网络里配置,在代码里也要有相应的配置。
参考网址
好消息!基于QGIS的Google Earth Engine插件已发布
qgis-earthengine-plugin cannot be use
Map.addLayer() resulting in KeyError: ‘ee_plugin‘
以上是关于QGIS配置Google Earth Engine插件问题解决的主要内容,如果未能解决你的问题,请参考以下文章