问题描述:
SDK版本:PythonPIE-0.1.2
Python版本:3.9.2
在使用官方示例,计算中国NDVI时出现错误
import pie
import pie.pieleaflet as pieleaflet
# 使用用户在平台上注册时的用户名/密码
pie.initialize("*", "*")
# 加载地图显示
Map = pieleaflet.PIEMap()
# 加载中国区域范围
fCol = chn = pie.FeatureCollection('NGCC/CHINA_CITY_BOUNDARY')
Map.addLayer(fCol, {'color': "#ff0000", 'fillColor': "#00000000"}, "china")
roi = fCol.getAt(0).geometry()
Map.addLayer(roi, {'color': "red", 'fillColor': "#00000000"}, "roi")
# 影像集合
l8Col = pie.ImageCollection("LC08/01/T1")
# 通过日期过滤影像集合,并且计算NDVI指数
def ndviF(image):
b4 = image.select("B4")
b5 = image.select("B5")
ndvi = (b5.subtract(b4).divide(b5.add(b4)))
return ndvi
l8Col = l8Col.filterDate("2019-12-01", "2019-12-31").select(["B4", "B5"]).map(ndviF)
# NDVI绘制样式
visParamNDVI = {
'min': -0.2,
'max': 0.8,
'palette': 'CA7A41, CE7E45, DF923D, F1B555, FCD163, 99B718, ' +
'74A901, 66A000, 529400,3E8601, 207401, 056201, 004C00,' +
'023B01, 012E01, 011D01, 011301'
}
# 加载影像集合的最大值.mean().clip(roi)
Map.addLayer(l8Col.mean().clip(roi), visParamNDVI, "NDVI")
Map.setCenter(34.1, 113.44, 6)
Map
报错信息如下:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-31-9f4fe9d5975c> in <module>
4 fCol = chn = pie.FeatureCollection('NGCC/CHINA_CITY_BOUNDARY')
5
----> 6 Map.addLayer(fCol, {'color': "#ff0000", 'fillColor': "#00000000"}, "china")
7 roi = fCol.getAt(0).geometry()
8
~/.virtualenvs/pie/lib/python3.9/site-packages/pie/pieleaflet.py in addLayer(self, pieObject, style, name)
258
259 elif isinstance(pieObject, PIEFeatureCollection):
--> 260 coordinates = pieObject.getAt(0).geometry().getInfo().get("geometry").get("coordinates")
261 if not style.get("color"):
262 _color = "red"
AttributeError: 'NoneType' object has no attribute 'get'
解决方案:
SDK版本为0.1.2,在Linux和Windows平台均出现上述问题
重装0.1.4的SDK后解决