2017-01-16 5 views
1

Я пытаюсь выяснить, как выполнить поиск в файлах метаданных AWS .xml, чтобы проверить, соответствует ли конкретная часть изображения Landsat или Sentinel определенным требованиям.поисковые URL-адреса со стандартным форматом

файлы для этих продуктов данных следуют стандартному формату URL:

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

формат включает в себя ссылку на военную эталонную сетку системы и дату, что образ был взят в плен, что я хотел чтобы сделать это, чтобы произвести поиск по доступной URL-адрес для данной плитки так любой доступной XML-URL

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

Таким образом, в приведенном выше примере 10 зоны UTM, S является латами tude, а DG - это конкретная плитка, поэтому мне хотелось бы найти и прочитать все файлы metadata.xml для данной плитки за данный год.

Я действительно понятия не имею, как идти об этом, но у меня есть некоторый опыт работы с Python и Java помощь или ресурсы, чтобы посмотреть на больш была бы оценена

ответ

0

Рассмотрим два раза процедуру. Тот, который проверяет URL-адреса и, если он действителен, загружает каждый XML, а затем удаляет любую ошибку XMLS запроса. Используйте встроенный модуль python os для работы файловой системы.

Примечание: ниже сценарий сохраняет файлы в существующей подпапке под названием AWS относительно запуска сценария .py. Цикл удаления удаляет только папки в этой вложенной папке:

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

Смежные вопросы