Znajdowanie kafelka Strażnika dla określonej współrzędnej długiej / łacińskiej

11

Buduję narzędzie, które pobiera obrazy z „Sentinel-2 na AWS”

Mam problem z przetłumaczeniem współrzędnych Long / Lat na konkretną płytkę Sentinel. Wiem, że Sentinel 2 używa MGRS i próbowałem po prostu przekonwertować Long / Lat na MGRS i z niską precyzją otrzymuję identyfikator płytki S2A. I to działa, ale nie zawsze.

Na przykład Long / Lat 34.665,31.625 rozwiązuje się na „36R XA” w MGRS, ale płytka Sentinel 36RXA nie istnieje.

Jaki byłby właściwy sposób określania kafelka Sentinel przy użyciu współrzędnych Long / Lat?

GetUsername
źródło
1
Przecinają się z kratownicą Sentinel-2 ?
user2856
Tak, widziałem ten KML. To byłaby moja ostatnia deska ratunku, ponieważ wyszukiwania są drogie. Mam nadzieję, że mogę to zrobić za pomocą obliczeń
GetUsername
3
Sprawdź github.com/sat-utils/sentinel2-util
bugmenot123
Możesz to zrobić w Google Cloud, ponieważ mają one wszystkie metadane w BigQuery, np. 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, Ale wspominasz o AWS, więc myślę, że to nie pomoże.
John Powell,

Odpowiedzi:

4

Partycjonowanie S2 w MGRS jest trudne, szczególnie gdy dane znajdują się między strefami UTM, a kafelki nakładają się, patrz rysunek poniżej. Płytki od lewej do prawej to 20_M_QE, 20_M_RE, 21_M_SV i 21_M_TV:

Wyszukiwanie przeprowadzone przez opensearch dla regionu zwraca jedno przejęcie S2 podzielone na dwa kafelki, 20_M_RE i 21_M_TV:

20_M_RE

wprowadź opis zdjęcia tutaj

Więc jeśli interesują Cię dane w reprezentowanym regionie kafelkowym 21_M_SV, powinieneś użyć 20_M_RE. Zauważ, że reprezentacja zastosowana w przykładach (plik kształtu uzyskany z NGA) nie zachodzi na siebie nakładanie się płytek.

Najbezpieczniejszym sposobem na uzyskanie kafelków wydaje się przeszukanie AOI za pomocą opensearch, a następnie odzyskanie kafelków lub użycie narzędzia sentinel2-util, o którym wspomniał bugmenot123.

Jeśli zdecydujesz się zamapować Long / Lat na kafelki, polecam użycie KML dostarczonego przez ESA jako definicji siatki kafelków:

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

Fred Liporace
źródło
4

Takie narzędzie już istnieje. Nazywa się Sentinelsat, a źródło jest dostępne na GitHub . Oferuje interfejs wiersza poleceń i interfejs API języka Python. Działa z Sentinel 1 i 2. Zapytanie przestrzenne opiera się na wielokącie, a nie na punkcie, ale poza tym dokładnie tego potrzebujesz.

EDYCJA: 1) możesz zwrócić identyfikator produktu (lub listę identyfikatorów produktu) za pomocą funkcji zapytania. W wierszu poleceń możesz pominąć opcję -d, aby nie uruchamiać pobierania (i użyć opcji -f, aby utworzyć ślad każdego obrazu) 2) Jeśli chodzi o geojson, poniżej możesz zobaczyć, że wkt może być zamiast tego używane bezpośrednio. Jak wspomniano w @ThingumaBob, możesz stworzyć mały wielokąt w oparciu o swoje współrzędne geograficzne. Ale w rzeczywistości przetestowałem go z pewnym punktem GeoJason i również działał dobrze. Dlatego nie ma potrzeby przekształcania punktu w wielokąt.

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

które można dostosować do

# 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
źródło
dzięki @radouxju, jestem świadomy Sentinelsat, ale moją konkretną potrzebą jest uzyskanie nazwy kafelka dla odpowiedniego lat / lon. Nie wiem, czy Sentinelsat to robi
1186
@ user1186 produkuje małe pole wokół lat / lon, aby nakarmić API? wydaje się głupie, ale może być wszystkim, czego potrzebujesz ...
geozelot
@ThingumaBob, mógłbym to zrobić, ale API zwróci wartości NDVI. Chcę tylko identyfikatora
kafelka