簡體   English   中英

如何使用python對常規lat-lon數據進行面積加權重新划分

[英]How to do area-weighted regridding of regular lat-lon data using python

我希望能夠在python中對規則間隔的2D緯度 - 經度數據進行面積加權重新划分,例如從0.5x0.5網格到2.5x3.75網格。 這些數據是以kg /平方公尺/ s為單位的排放,因此我需要保存質量和空間分布。

我知道有一些scipy插值例程,我不確定哪個(如果有的話)在這種情況下最好用。 如果可能的話,我寧願不要安裝太多額外的python包,除非絕對需要(即我安裝了scipy + numpy,但寧願不必安裝專業的python包,它會做我需要的,也需要我將數據存儲在特定的類結構等中。但是,如果需要,我會這樣做!)。

這對我來說也是一個學習練習,可以理解如何在python中做這些事情,以及能夠做到這一點。

這是一個非常復雜的問題,答案相當復雜,並且有很多機會出錯。 正如你在評論中所說,你有經度,像這樣的緯度向量:

'0.5x0.5'
np.arange(-89.75,90.25,0.5)      #[-89.75,-89.25,...,89.25,89.75],  latitudes 
np.arange(0.25,360.25,0.5)       #[0.25,0.75,...,359.25,359.75],    longitudes

或這個:

'1x1'
np.arange(-90.0,91.0,1.0)         #[-90.0,-89.0,...,89.0,90.0],     latitudes 
np.arange(-180.0,180.0,1.0)       #[-180.0,-179.0,...178.0,179.0],  longitudes

並且您需要將關聯的數據集轉換為以下格式:

'73x96 (or N48)'
np.arange(-90.0,92.5,2.5)         #[-90.0,-87.5,...,87.5,90.0]      latitudes 
np.arange(0.0,360.00,3.75)        #[0.0,3.75,...,352.5,356.25]      longitudes

或這個:

'1.25x1.875 (or N96)'
np.array(-90.0,91.25,1.25)        #[-90.0,-88.75,...,90.00]         latitudes 
np.array(0.0,360.00,1.875)        #[0.0,1.875,...,358.125]          longitudes

所有條目都用於網格單元中心。

部分好消息是您不需要進行任何插值。 我們可以通過重復輸入來上upsample (縱向和緯度),即如果我們有1*1間隔數據集,我們可以通過重復每一列和每行將其更改為0.5*0.5間隔數據集,這對您有效即使我們使用球形網格數據! 考慮將您的一個初始細胞分成更小的細胞 - 每個新細胞的密度與原始細胞中的密度相同。 我們可以這樣做:

data_up = np.repeat(data, 2, axis=0)
data_up = np.repeat(data_up, 2, axis=1)

這是一個很好的方法,因為我們不做任何假設,也不會丟失任何數據。 我們稍后會需要這個。

當我們縱向增加細胞寬度時,我們可以通過將細胞加在一起並對細胞數進行平均來進行downsample 這是由於縱向相鄰(水平)單元中的區域相等。 如果我們正在downsampling到不是原始間距的整數倍的網格間距,那么首先我們必須進行上upsample ,如上所述(這是您的要求......)。

最棘手的事情是在緯度上進行下采樣。 這是因為這里我們有不同的密度,與這些密度相關的實際面積也不同。 處理這個問題的方法是:

  1. 以新的緯度網格間距為例,它是我們的初始緯度網格和我們所需的緯度網格的倍數(如上所述)。
  2. 計算每個細胞的細胞表面積( 這是我們需要的公式 )。
  3. 將這兩個陣列相乘以獲得上采樣數據陣列中每個數據單元的總發射量。
  4. 將構成新單元的所有總排放單元加在一起(在整個陣列上執行此操作)
  5. 除以新單元格的總面積(子單元格的所有區域的總和),對所有新單元格執行此操作。
  6. 而已。

不好的事情需要注意:

  1. 您的某些數據集之間存在縱向相位差異,這可能很復雜,以確保您正確地重新定位數據以實現此目的。

  2. 極點單元, latitude = 90 or -90 這些細胞是有問題的,因為它們具有與所有其他細胞一樣的緯度高度的一半。 必須謹慎地允許:確保為這些單元格計算的區域是正確的,並且當/如果進行上采樣時, pole條目應該重復一半以反映這一點。

暫無
暫無

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

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