Localizando o Sentinel lado a lado para coordenadas Long / Lat específicas

11

Estou criando uma ferramenta que baixa imagens do "Sentinel-2 na AWS"

Estou com problemas para traduzir coordenadas Long / Lat para um bloco Sentinel específico. Eu sei que o Sentinel 2 usa o MGRS e tentei simplesmente converter Long / Lat em MGRS e, com baixa precisão, obtenho o ID do bloco S2A. E funciona, mas nem sempre.

Por exemplo, Long / Lat 34.665,31.625 resolve para "36R XA" no MGRS, mas o bloco do Sentinel 36RXA não existe.

Qual seria a maneira correta de determinar o bloco do Sentinel usando coordenadas Long / Lat?

GetUsername
fonte
1
Interseção com a grade lado a lado do Sentinel-2 ?
user2856
Sim, eu vi esse KML. Esse seria meu último recurso, pois as pesquisas são caras. Espero que eu possa fazê-lo com o cálculo
GetUsername
3
Confira github.com/sat-utils/sentinel2-util
bugmenot123
Você pode fazer isso no Google Cloud, pois eles têm todos os metadados no BigQuery, por exemplo SELECT * FROM [bigquery-public-data:cloud_storage_geo_index.sentinel_2_index] where north_lat < 50 and north_lat > 49 order by sensing_time LIMIT 10, mas você menciona a AWS, então acho que isso não ajudará.
John Powell

Respostas:

4

O particionamento S2 no MGRS é complicado, especialmente quando os dados estão entre as zonas UTM e os blocos se sobrepõem, veja a figura abaixo. Os mosaicos da esquerda para a direita são 20_M_QE, 20_M_RE, 21_M_SV e 21_M_TV:

Uma pesquisa feita através do opensearch para a região retorna uma aquisição S2 dividida em dois blocos, 20_M_RE e 21_M_TV:

20_M_RE

insira a descrição da imagem aqui

Portanto, se você estiver interessado em dados na região do bloco 21_M_SV representada, use 20_M_RE. Observe que a representação usada nos exemplos (shapefile obtido do NGA), a sobreposição entre blocos não é representada.

A maneira mais segura de obter os blocos parece ser pesquisar sua AOI usando o opensearch e, em seguida, recuperar os blocos retornados ou usando a ferramenta sentinel2-util, conforme mencionado por bugmenot123.

Se você optar por mapear o Long / Lat para os azulejos, recomendo usar o KML fornecido pela ESA como a definição da grade de azulejos:

https://sentinel.esa.int/web/sentinel/missions/sentinel-2/data-products

Fred Liporace
fonte
4

Essa ferramenta já existe. Ele é chamado Sentinelsat e a fonte está disponível no GitHub . Ele oferece uma interface de linha de comando e uma API Python. Funciona com o Sentinel 1 e 2. A consulta espacial é baseada em um polígono e não em um ponto, mas, caso contrário, é exatamente isso que você precisa.

EDIT: 1) você pode retornar o ID do produto (ou lista de IDs do produto) usando a função de consulta. E a partir da linha de comando, você pode omitir a opção -d para não iniciar o download (e usar a opção -f para criar a pegada de cada imagem) 2) Com relação ao geojson, é possível ver abaixo que um wkt pode ser usado diretamente. Conforme mencionado por @ThingumaBob, você pode criar um pequeno polígono com base em suas coordenadas latinas / longas. Mas, na verdade, eu testei com um ponto GeoJason e também funcionou bem. Portanto, não há necessidade de converter seu ponto em polígono.

# search by polygon, time, and Hub query keywords
footprint = geojson_to_wkt(read_geojson('map.geojson'))
products = api.query(footprint,
                     date = ('20151219', date(2015, 12, 29)),
                     platformname = 'Sentinel-2',
                     cloudcoverpercentage = (0, 30))

que pode ser ajustado em

# search by point, time, and Hub query keywords

products = api.query('POINT({0} {1})'.format(longitude,latitude),
                     date = ('20151219', date(2015, 12, 29)),
                     platformname = 'Sentinel-2',
                     cloudcoverpercentage = (0, 30))
radouxju
fonte
thanks @radouxju, conheço o Sentinelsat, mas minha necessidade específica é obter o nome do bloco para um lat / lon correspondente. Eu não sei se o Sentinelsat faz isso #
1111
@ user1186 produz uma pequena caixa de correio ao redor do lat / lon para alimentar a API? Parece bobagem, mas poderia ser tudo que você precisa ...
geozelot
@ThingumaBob, eu poderia fazer isso, mas a API retornará valores NDVI. Eu só quero o ID azulejo, se existe uma maneira de fazer isso através da API, eu gostaria de saber
user1186