2017-07-31 36 views
1

虹膜用戶指南提供了大量有關將座標約束與邏輯與的組合約束的信息。是否也可以將它們與邏輯OR進行組合?將虹膜約束與OR結合?

我想提取一個立方體的部分,其中(coord1 == xcoord2 == y)或(coord1 == z)。

謝謝。

回答

1

約束確實支持「&」運算符,但不支持「|」。
我認爲它的邏輯是,當應用於從一個立方體提取時,結果應該總是隻是一個單一的立方體 - 如果允許一個'OR',情況不總是這樣。
因此,對於立方體抽取,您可以將約束想象爲指定僅允許爲超矩形的「剪切形狀」:這與numpy索引操作相似。實際上,你建議「(x = 1和y = 2)或z = 3」的確切情況是一個反例:其結果並不總是「正方形」,所以一般不能一個立方體。

負載從一組數據文件的情況下,然而,有些不同:結果可以無論如何有不兼容的形狀的多個立方體。
在這種情況下,您有時可以使用「多維數據集函數」類型的約束來選擇部分數據,可能使用'或'類邏輯。
然而,結果將取決於源數據格式,即它最初加載的「原始立方體」是什麼,從而從中選擇。
例如,像一個立方體功能:

def cubefn(cube): 
    return (cube.name() == 'air_temperature' or 
      cube.coord('model_level').points[0] < 7) 

這可能導致的空氣溫度超過立方體各級,和各種其它的立方體的所有限制在首次7級。
同樣,您可以看到爲什麼不是可在立方體提取的上下文中使用。

+0

感謝您的解釋。在我的情況下,兩個座標都在同一個維度上,但我看到你的觀點,這通常不是真實的(我知道如果你嘗試在多維座標上提取一個異常,Iris會拋出一個異常,所以存在一致性那裏)。我認爲限制負荷適用於我的情況,或者我最好的選擇可能是添加一個新的座標,其中點是從現有座標上的點的函數計算出來的。 – RuthC