gpt4 book ai didi

python - 使用 python 在 Google Earth Engine 中查询大型 FeatureCollection

转载 作者:太空宇宙 更新时间:2023-11-04 05:03:35 26 4
gpt4 key购买 nike

我正在尝试处理从 here 下载的坦桑尼亚形状文件.

    # im -> {Image} ee.Image({...})
# self.geom_coll -> {FeatureCollection} ee.FeatureCollection({...}). containing
# 3000 features.
# spacereducer() -> ee.Reducer.mean
# self.scale -> 10 #Changing this value to small number gives error

feats = im.reduceRegions(self.geom_coll, spacereducer(), self.scale)
flist = getInfo_werrorcontrol(feats,
self.errorcheck)['features']

.

def getInfo_werrorcontrol(featureCollection, errorcontrolon=True):
"""
Wrapper to add error control to GEE evaluations.

For large computations GEE sometimes times out and needs to be
restarted. This does so in a controlled manner with out
interrrupting the program flow.
"""
if errorcontrolon:
i=0
while True:
try:
with timeout.timeout(10*60):
return featureCollection.getInfo() # In this line I am getting exception.
except NameError:
exc_type, exc_value, exc_traceback = sys.exc_info()
lines = traceback.format_exception(exc_type, exc_value, exc_traceback)
print ''.join('!! ' + line for line in lines)
i+=1
print 'attempts: '+str(i)
if i > 20:
raise ValueError('to many attempts')
elif i > 10:
print 'waiting 2 minutes'
time.sleep(60*2)
else:
return featureCollection.getInfo()

self.scale 更改为 10 会引发以下行错误:

featureCollection.getInfo()

ee.ee_exception.EEException: Server returned HTTP code: 413

self.scale 更改为 1000 会引发此错误:

ee.ee_exception.EEException: Computation timed out

处理区域较大的形状文件的正确方法是什么?

最佳答案

请注意,对 Earth Engine API 的请求是 already wrapped with exponential backoff .所以你的代码不会做太多来解决这个问题。这些错误是如何从您发布的代码中产生的并不明显,但无论哪种情况,答案可能都是相同的:导出结果。示例:

import ee
ee.Initialize()
image = ee.Image('srtm90_v4')
geometry = ee.Geometry.Polygon([[[-113.64, 39.97], [-113.64, 38.13],[-109.42, 38.13],[-109.42, 39.97]]], None, False)
dict = image.reduceRegion(reducer=ee.Reducer.mean(), geometry=geometry, scale=1000)
featureCollection = ee.FeatureCollection([ee.Feature(None, dict)])
task = ee.batch.Export.table.toDrive(collection=featureCollection, description='foo', fileNamePrefix='foo', fileFormat='CSV')
task.start()
print task.status()

导出的输出将在您的 Google Drive 文件夹中具体化。要了解有关比例的更多信息,请参阅 this doc .

关于python - 使用 python 在 Google Earth Engine 中查询大型 FeatureCollection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45079976/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com