簡體   English   中英

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

[英]Extracting the sensing date/time over a particular lat/lng in a netCDF file in python

我目前正在 python 中處理多個 netCDF 文件。 我在大倫敦使用 Sentinel-5P NO2 對流層柱。 我想將各個文件繪制為時間序列,標題為每個條帶在倫敦上空的逾越節時間,但我不確定如何提取它。

有沒有一種簡單的方法可以為每個文件提取衛星在特定緯度/經度上的逾越時間?

編輯:有關文件的更多信息。 它們是 netCDF 文件,意味着它們包含維度、變量、屬性和坐標。 它們包含空間分辨率為 3.5x7km 的倫敦上空 NO2 垂直柱密度的信息。 我已經在 PyCharm 中使用 xarray 打開了文件,並進一步附加了一個圖像以提供有關變量的更多信息。

在此處輸入圖片說明

當緯度= 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

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

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM