Staram się określić ilość opadającej pary wodnej (PWV), ozonu i aerozoli w funkcji czasu nad określonymi punktami na Ziemi, a mianowicie naszymi obserwatoriami astronomicznymi. Aby to zrobić, mam już kod Pythona, modapsclient
który pobierze dwa razy dziennie produkty MODIS Aqua i Terra MYDATML2 i MODATML2, które obejmują konkretną szerokość i długość geograficzną, którymi jestem zainteresowany.
Nie jestem pewien, jak wyodrębnić określone wielkości, takie jak czas pobrania danych MODIS i PWV dla określonej szerokości i długości geograficznej mojego obserwatorium, aby przekształcić je w szereg czasowy wartości. Produkty MYDATML2 wydają się zawierać 2D szerokości i długości geograficznej siatek Cell_Along_Swath_5km
i Cell_Across_Swath_5km
tak myślę, że to sprawia, że pokos danych w przeciwieństwie do płytek lub sieci danych? Ilości chcę taki jak Precipitable_Water_Infrared_ClearSky
również wydają się być przeciw Cell_Along_Swath_5km
i Cell_Across_Swath_5km
butI'm nie wiem, jak uzyskać tę wartość prędkości fali tętna w konkretnym lat, długo mnie interesują. Pomóc proszę?
źródło
Odpowiedzi:
[EDYCJA 1 - Zmieniłem wyszukiwanie współrzędnych pikseli]
Korzystając z tego przykładu MODATML , który dostarczyłeś i używając biblioteki gdal. Otwórzmy plik hdf za pomocą gdal:
Następnie chcemy zobaczyć, jak nazywane są subdazy, aby poprawnie zaimportować te, których potrzebujemy:
Zwraca to słownik:
Powiedzmy, że chcemy uzyskać pierwszą zmienną, grubość optyczną chmury, możemy uzyskać dostęp do jej nazwy poprzez:
Teraz możemy ponownie załadować zmienną do pamięci, wywołując ponownie metodę .Open ():
Na przykład możesz uzyskać dostęp do interesującego Cię Precipitable_Water_Infrared_ClearSky, podając „SUBDATASET_20_NAME”. Wystarczy spojrzeć na słownik datasets_meta.
Jednak wyodrębniona zmienna nie ma geoprojection (var.GetGeoprojection ()), jak można oczekiwać od innych typów plików, takich jak GeoTiff. Możesz załadować zmienną jako tablicę numpy i wykreślić zmienną 2d bez projekcji:
Ponieważ nie ma geoprojektów, przyjrzymy się metadanym zmiennej:
Jest to kolejny słownik, który zawiera wszystkie potrzebne informacje, w tym długi opis podpróbkowania (zauważyłem, że jest on dostarczany tylko z pierwszym zestawem danych podrzędnych), który zawiera wyjaśnienie tych Cell_Along_Swath:
Myślę, że to oznacza, że w oparciu o te 1 km piksele zbudowano 5 km, biorąc dokładnie wartości pikseli w pewnej pozycji w matrycy 5x5 (pozycja jest wskazana w metadanych, myślę, że jest to instrument mający na celu zmniejszenie błędów).
W każdym razie, w tym momencie mamy tablicę komórek 1x1 km (patrz opis podpróbkowania powyżej, nie jestem pewien, co za tym stoi). Aby uzyskać współrzędne każdego środka ciężkości piksela, musimy załadować podszeregi szerokości i długości geograficznej.
Na przykład,
Możesz zauważyć, że współrzędne szerokości i długości geograficznej są różne dla każdego piksela.
Powiedz, że twoje obserwatorium znajduje się na współrzędnych lat_obs, long_obs, niż zminimalizujesz różnicę współrzędnych x, y:
i wyodrębnij swoją wartość
źródło
Longitude_px
iLatitude_px
to zarówno macierze zerowej długości. Czy jest też sposób na samodzielne przetworzenie konwersjigdal
? (zamiast polegać na przybliżeniu 1 stopnia to liczba X mil, a następnie ponowne przybliżenie do km)