我想遍历项目中的所有项目和带区中的所有带区(在项目对象中)。但只有外部 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
答案 0 :(得分:0)
这是完美的工作代码:
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 = {}
for i, item in enumerate(items):
data = {}
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")))
我已经改变了(感谢评论)什么:
i
。以这种方式更改了内部循环 for idx, band in enumerate(bands):
有帮助。data
dict。