1

のピクセル配列を持つ画像があり[7981,7891]ます。補間によって各ピクセルに緯度経度座標を割り当てました。ここで、画像の正方形のセクションを切り取って、コードの残りの部分がこの小さなセクションでのみ機能するようにします。これが私のマスキングの試みです:

def ostiamask(lat,lon): # lat and lon inputs are both 2d-arrays #

    ost_lat_max = 55.05 
    ost_lat_min = 55.00
    ost_lon_max = -0.95
    ost_lon_min = -1.00

    lat = np.ma.array(lat)
    for i in lat:
        lat = np.ma.masked_outside(lat,i >= ost_lat_max, i <= ost_lat_min)  

    lon = np.ma.array(lon)
    for i in lon:
        lon = np.ma.masked_outside(lon,i >= ost_lon_max, i <= ost_lon_min)  


    lat_mask = np.ma.getmask(lat)
    lon_mask = np.ma.getmask(lon)
    lat_mask = np.array(lat_mask, dtype=int)  
    lon_mask = np.array(lon_mask, dtype=int) 
    pixel_coverage = np.logical_not(lat_mask) * np.logical_not(lon_mask) 

    print 'pixel mask sum',  np.sum(pixel_coverage)    
    print 'pixel mask shape', ostia_pixel_coverage.shape #debugging purposes#

    return pixel_coverage

次のエラーが表示されます。

ValueError: 複数の要素を持つ配列の真の値があいまいです。a.any() または a.all() を使用する

私も使用してみnp.ma.mask_where()ましたが、何を試しても、[7981,7891]ピクセルのマスクサイズを取得し続けました。どこが間違っているのか、マスクが機能しない理由はありますか? さらに情報が必要な場合はお知らせください。

4

0 に答える 0