2017-01-16 85 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