Я пытаюсь определить количество осаждаемого водяного пара (PWV), озона и аэрозолей в зависимости от времени в определенных точках Земли, а именно в наших астрономических обсерваториях. Для этого у меня уже есть код Python, modapsclient
который используется для загрузки продуктов MODIS Aqua и Terra MYDATML2 и MODATML2 два раза в день, которые охватывают интересующую меня широту и долготу.
В чем я не уверен, так это в том, как извлечь конкретные величины, которые мне нужны, такие как время, когда были взяты данные MODIS, и PWV для конкретной широты и долготы моей обсерватории, чтобы превратить их во временные ряды значений. Продукты MYDATML2, кажется, содержат двумерные сетки широты и долготы, Cell_Along_Swath_5km
и Cell_Across_Swath_5km
поэтому я полагаю, что это делает данные в отдельности в отличие от данных плитки или сетки? Величины, которые я хочу, такие как, Precipitable_Water_Infrared_ClearSky
кажется, также против Cell_Along_Swath_5km
и, Cell_Across_Swath_5km
но я не уверен, как получить это значение PWV в конкретном lat, долго меня интересует. Помогите, пожалуйста?
источник
Ответы:
[РЕДАКТИРОВАТЬ 1 - Я изменил поиск координат пикселей]
Используя этот образец MODATML, который вы предоставили, и используя библиотеку gdal. Давайте откроем hdf с помощью gdal:
Затем мы хотим посмотреть, как называются поднаборы, чтобы правильно импортировать те, которые нам нужны:
Это возвращает словарь:
Допустим, мы хотим получить первую переменную, оптическую толщину облака, мы можем получить доступ к ее названию:
Теперь мы можем загрузить переменную в память, снова вызывая метод .Open ():
Например, вы можете получить доступ к Precipitable_Water_Infrared_ClearSky, в котором вы заинтересованы, указав SUBDATASET_20_NAME. Просто взгляните на словарь datasets_meta.
Однако извлеченная переменная не имеет геопроекции (var.GetGeoprojection ()), как можно было бы ожидать от других типов файлов, таких как GeoTiff. Вы можете загрузить переменную как массив numpy и построить 2d переменную без проекции:
Теперь, поскольку нет геопроекции, мы рассмотрим метаданные переменной:
Это еще один словарь, который включает в себя всю необходимую вам информацию, включая подробное описание подвыборки (я заметил, что это предоставляется только с первым набором подданных), которое включает в себя объяснение этих Cell_Along_Swath:
Я думаю, это означает, что на основе этих 1км пикселей было построено 5км с учетом точных значений пикселей в определенной позиции в массиве датчиков 5х5 (позиция указана в метаданных, я думаю, что это инструментальная вещь для уменьшения ошибок).
Во всяком случае, на данный момент у нас есть массив ячеек 1x1 км (см. Описание подвыборки выше, не уверен насчет науки, стоящей за этим). Чтобы получить координаты центроида каждого пикселя, нам нужно загрузить наборы данных широты и долготы.
Например,
Вы можете заметить, что координаты широты и долготы различны для каждого пикселя.
Скажем, ваша обсерватория расположена в координатах lat_obs, long_obs, чем вы минимизируете разницу координат x, y:
и извлечь свою ценность
источник
Longitude_px
иLatitude_px
оба нулевой длины массивов. Также есть способ обработать преобразование, используяgdal
себя? (вместо того, чтобы полагаться на приближение в 1 градус - это X число миль, а затем пересчитать это значение в км)