我正在尝试弄清楚如何搜索AWS .xml元数据文件,以检查Landsat或Sentinel中的特定图像区块是否符合我的要求。
这些数据产品的文件遵循标准网址格式:
http://sentinel-s2-l1c.s3.amazonaws.com/tiles/10/S/DG/2015/12/7/0/metadata.xml
格式包括对军事网格参考系统的引用以及捕获图像的日期,我想要做的是搜索给定图块的可用URL,以便任何可用的.xml网址
http://sentinel-s2-l1c.s3.amazonaws.com/tiles/10/S/DG/2015/../../0/metadata.xml
所以在上面的示例中,10是utm区域,S是纬度,DG是特定区块,所以我想找到并读取给定年份中给定区块的所有metadata.xml文件。
我真的不知道如何解决这个问题,但我对python和Java有一些经验,任何帮助或资源都会非常感激
答案 0 :(得分:0)
考虑一个双重程序。检查URL并且如果有效,则下载每个XML,然后删除任何请求错误XMLS。使用python的内置os
模块进行文件系统工作。
注意:以下脚本将文件保存在相对于运行.py脚本的名为AWS
的现有子文件夹中。删除循环仅删除此子文件夹中的文件夹:
import os
import requests as rq
baseurl = 'http://sentinel-s2-l1c.s3.amazonaws.com/tiles/10/S/DG/2015/{}/{}/0/metadata.xml'
# ITERATE THROUGH ALL MONTH / DAY COMBINATIONS
for i in [(m, d) for m in range(1,13) for d in range(1,31)]:
if request.status_code == 200:
rqpage = rq.get(baseurl.format(i[0], i[1]))
rqcontent = rqpage.content
with open('AWS/{}-{}-{}_metadata.xml'.format('2015', i[0], i[1]), 'wb') as f:
f.write(rqcontent)
# REMOVE BY SIZE ERROR RETURNED XML (WHICH ARE STILL VALID URLS)
for d, subdir, files in os.walk('AWS'):
for f in files:
if os.stat(os.path.join(d, f)).st_size < 400:
os.remove(os.path.join(d, f))
<强>输出强>