2017-01-16 89 views
1

我想弄清楚如何通过AWS .xml元数据文件进行搜索,以检查来自Landsat或Sentinel的特定图像拼贴是否符合我的要求。标准格式的搜索网址

这些数据产品的文件都遵循一个标准的URL格式:

http://sentinel-s2-l1c.s3.amazonaws.com/tiles/10/S/DG/2015/12/7/0/metadata.xml

格式包括对军事网格参考系统和日期引用是拍摄图像,我想什么做的是通过提供网址对于给定的区块,以便任何可用的.xml URL

http://sentinel-s2-l1c.s3.amazonaws.com/tiles/10/S/DG/2015/../../0/metadata.xml

所以在上述实施例10来搜索在UTM区域,S是LATI tude和DG是特定的图块,所以我想要一种方法来查找和读取给定年份中给定图块的所有metadata.xml文件。

我真的不知道如何去,但我有Python和Java的一些经验,任何帮助或资源来看待,将不胜感激

回答

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)) 

输出

XML Download List