Saya mencoba menentukan jumlah uap air yang dapat terjadi (PWV), ozon dan aerosol sebagai fungsi waktu di atas titik-titik tertentu di Bumi, yaitu observatorium astronomi kami. Untuk melakukan ini, saya sudah punya beberapa kode Python menggunakan modapsclient
yang akan mengunduh MODIS Aqua dua kali sehari dan produk MYDATML2 dan MODATML2 yang mencakup garis lintang dan bujur tertentu yang saya minati.
Apa yang saya tidak yakin tentang bagaimana mengekstrak jumlah spesifik yang saya inginkan seperti waktu data MODIS diambil dan PWV untuk posisi lintang dan bujur tertentu dari observatorium saya untuk membuatnya menjadi serangkaian nilai waktu. Produk MYDATML2 tampaknya mengandung 2D lintang dan bujur grid dari Cell_Along_Swath_5km
dan Cell_Across_Swath_5km
jadi saya kira ini membuat petak Data yang bertentangan dengan genteng atau data grid? Kuantitas yang saya inginkan seperti Precipitable_Water_Infrared_ClearSky
juga tampaknya menentang Cell_Along_Swath_5km
dan Cell_Across_Swath_5km
tetapi saya tidak yakin bagaimana mendapatkan nilai PWV pada lat tertentu, lama saya tertarik. Tolong tolong?
sumber
Jawaban:
[EDIT 1 - Saya mengubah pencarian koordinat piksel]
Menggunakan contoh MODATML yang Anda berikan dan menggunakan pustaka gdal. Mari kita buka hdf dengan gdal:
Lalu kami ingin melihat bagaimana subdataset dinamai untuk mengimpor yang kita butuhkan dengan benar:
Ini mengembalikan kamus:
Katakanlah kita ingin mendapatkan variabel pertama, ketebalan optik cloud, kita dapat mengakses namanya dengan:
Sekarang kita dapat memuat variabel dalam pemanggilan memori lagi. Buka () metode:
Misalnya, Anda dapat mengakses Precipitable_Water_Infrared_ClearSky yang Anda minati dengan memberikan 'SUBDATASET_20_NAME'. Lihat saja kamus data dataset.
Namun, variabel yang diekstraksi tidak memiliki geoprojection (var.GetGeoprojection ()) seperti yang Anda harapkan dari tipe file lain seperti GeoTiff. Anda dapat memuat variabel sebagai array numpy dan plot variabel 2d tanpa proyeksi:
Sekarang, karena tidak ada geoprojection, kita akan melihat metadata dari variabel:
Ini adalah kamus lain yang mencakup semua informasi yang Anda butuhkan, termasuk deskripsi panjang tentang subsampling (saya perhatikan ini disediakan hanya dengan subdataset pertama), yang mencakup penjelasan Cell_Along_Swath ini:
Saya pikir ini berarti bahwa berdasarkan piksel 1 km ini 5km dibangun dengan mengambil nilai piksel tepat pada posisi tertentu dalam array penginderaan 5x5 (posisi ditunjukkan dalam metadata, saya pikir ini adalah instrumen untuk mengurangi kesalahan).
Bagaimanapun, pada titik ini kami memiliki array sel 1x1 km (lihat deskripsi sub-contoh di atas, tidak yakin tentang ilmu di baliknya). Untuk mendapatkan koordinat dari setiap pixel centroid, kita perlu memuat subdataset lintang dan bujur.
Sebagai contoh,
Anda mungkin memperhatikan bahwa koordinat Lintang dan Bujur berbeda untuk setiap piksel.
Katakanlah observatorium Anda terletak di koordinat lat_obs, long_obs, daripada Anda meminimalkan perbedaan koordinat x, y:
dan ekstrak nilaimu
sumber
Longitude_px
danLatitude_px
keduanya array nol-panjang. Apakah ada cara untuk menangani konversi dengan menggunakangdal
itu sendiri? (Daripada mengandalkan perkiraan 1 derajat adalah X no. mil dan kemudian memperkirakan kembali itu untuk km)