亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 python 的 netCDF 文件中提取特定緯度/經度的傳感日期/時間

在 python 的 netCDF 文件中提取特定緯度/經度的傳感日期/時間

largeQ 2023-06-20 13:56:53
我目前正在使用 python 處理多個 netCDF 文件。我在大倫敦上空使用 Sentinel-5P NO2 對流層柱。我想將各個文件繪制為一個時間序列,標題為每個單獨條帶的倫敦逾越節時間,但我不確定如何提取它。有沒有一種簡單的方法可以為每個文件提取衛星在特定緯度/經度上的逾越節時間?編輯:關于文件的更多信息。它們是 netCDF 文件,意味著它們包含維度、變量、屬性和坐標。它們包含有關倫敦上空 NO2 垂直柱密度的信息,空間分辨率為 3.5x7km。我已經在 PyCharm 中使用 xarray 打開了文件,并進一步附上了一張圖片以提供有關變量的更多信息。當 latitude=51.2 或 51.8 時,我基本上需要找到 delta_time 的值。以下是我到目前為止開發的內容,但是我有大約 50 個文件都超過 100,000 像素,所以這非常非常慢。有誰知道我該如何改進?    for i in file_list:        # Open product - GROUP PRODUCT        with xr.open_dataset(i, group='PRODUCT') as file:            print(colored('\nPRODUCT Group:\n', 'blue'), file)        no2 = file['nitrogendioxide_tropospheric_column'][0]        for row in no2.coords['latitude']:            for cell in row:                if cell == 51.2 or cell == 51.8:                    print(cell)                    print(cell['scanline'])                    scanpoint = (cell['scanline'])                    scantime = no2['delta_time'].sel(scanline=scanpoint)                    print(scantime)                    return scantime            else:                continue
查看完整描述

1 回答

?
藍山帝景

TA貢獻1843條經驗 獲得超7個贊

你應該能夠使用向量化的 NumPy 函數來做你想做的事?,F在,我不太確定比較浮點數的相等性,但這應該與你的相似。我沒有專門使用 xarray 但使用過 netCDF4,所以它說<array>我的意思是為該變量/坐標獲取一個 numpy(或等效)數組。另外,請注意,我沒有選擇一個單獨的時間值,它看起來像你有,但我只是使用latitudes 的整個 3D 數組。


import numpy as np


latitude = <3D latitudes array>

delta_time = <2D delta_time array>


# 3D boolean array with our required condition

condition = (latitude == 51.2) | (latitude == 51.8)


# Expand tuple of indices, one for each of the 3 dims, but ignore ground_pixel dim

# Each of these idx arrays is 1D

time_idx, scanline_idx, _ = condition.nonzero()


# Get 1D array of delta_times by using time and scanline indices

delta_times = delta_time[time_idx, scanline_idx]

這應該為您留下所有三個維度中所有相關單元格的坐標 ( condition.nonzero()),以及delta_times這些單元格的坐標。


no2請注意,如果您不使用實際值并且只關心latitude和,則不需要實際數組delta_time,但您始終可以使用 之類的方法獲取相關單元格的值no2[condition]。


查看完整回答
反對 回復 2023-06-20
  • 1 回答
  • 0 關注
  • 257 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號