【发布时间】:2021-07-07 10:26:54
【问题描述】:
我想遍历项目中的所有项目和波段中的所有波段(在项目对象中)。但只有外部 for 循环有效,并且仅适用于第一项。任何想法为什么?
from satsearch import Search
from IPython.display import JSON
import json
# configuration
url = 'https://earth-search.aws.element84.com/v0' # URL to Sentinel 2 AWS catalog
collection = 'sentinel-s2-l2a-cogs'
# search parameter
startDate = '2021-01-01'
endDate = '2021-02-01'
location = [ 11.756057739257812,
57.649809962218995,
12.10693359375,
57.751442372568924
]
bbox_search = Search(
bbox=location,
datetime=startDate+"/"+endDate,
query={'eo:cloud_cover': {'lt': 50}},
collections=[collection],
url=url,
sort={'field': 'eo:cloud_cover', 'direction': 'desc'},
)
def get_all_files(*bands):
bbox_search = Search(
bbox=location,
datetime=startDate+"/"+endDate,
query={'eo:cloud_cover': {'lt': 50}},
collections=[collection],
url=url,
sort={'field': 'eo:cloud_cover', 'direction': 'desc'},
)
items = bbox_search.items()
downloads = {}
data = {}
for i, item in enumerate(items):
data['Product ID']= item.properties["sentinel:product_id"]
data['Preview']= item.asset("thumbnail")["href"]
data['Date']= item.properties["datetime"]
for idx, band in enumerate(bands):
data[band] = item.asset(band)["href"]
downloads[i] = data
return downloads
display(JSON(get_all_files("B01", "B02", "B03")))
结果: 结果是,只有第一个(外部)for 循环有效,并且仅适用于第一项。内部的 for 循环将被忽略。
输入数据: 这是输入数据:https://earth-search.aws.element84.com/v0/collections/sentinel-s2-l2a-cogs/items
【问题讨论】:
-
请更新代码的缩进。 Python 对缩进非常敏感,python 程序员也是如此。
-
bands可能是空的,你在哪里初始化呢? -
你能修复代码的缩进吗?此外,如果没有输入数据的示例,我们也无能为力。请添加一个最小的可重现示例。 stackoverflow.com/help/minimal-reproducible-example
-
请显示输入示例以文本格式,格式为代码(不是屏幕截图)和准确所需的相应输出,以及在文本中,格式为代码.
-
这是一个不同的问题。您绝对应该就该部分提出一个新问题。
标签: python json dictionary for-loop