Lat / lon using Basemap and maskoceans, which mix after the "for" loop

I am trying to identify the hidden pixel indices when using maskoceans so I can only name the earth pixels in the code that I have, which now passes through the entire globe, although I do not care about ocean pixels. I tried different ways to do this and noticed that my stories look really weird. In the end, I realized that something is mixed in my lat / lon ratios, although I don’t touch them! Here is the code:

import numpy as np
import netCDF4
from datetime import datetime, timedelta
import matplotlib
import matplotlib.pyplot as plt
from matplotlib.ticker import MaxNLocator
import matplotlib.dates as mpldates
import heat_transfer_coeffs
from dew_interface import get_dew
from matplotlib.dates import date2num, num2date
import numpy as np
import netCDF4
import heat_transfer_coeffs as htc
from jug.task import TaskGenerator
import matplotlib.cm as cm
import mpl_toolkits
from mpl_toolkits import basemap
from mpl_toolkits.basemap import Basemap, maskoceans
np.seterr(all='raise')

# set global vars
ifile = netCDF4.Dataset('/Users/myfile.nc', 'r')
times = ifile.variables['time'][:].astype(np.float64)  # hours since beginning of dataset
lats_1d = ifile.variables['latitude'][:]  # 90..-90
lons_1d = ifile.variables['longitude'][:] # 0..360
lons_1d[lons_1d>180]-=360 #putting longitude into -180..180
lons, lats = np.meshgrid(lons_1d, lats_1d)
ntimes, nlats, nlons = ifile.variables['tm'].shape
ifile.close()

map1 = basemap.Basemap(resolution='c', projection='mill',llcrnrlat=-36 , urcrnrlat=10, llcrnrlon=5 , urcrnrlon=52)
#Mask the oceans
new_lon = maskoceans(lons,lats,lons,resolution='c', grid = 10)
new_lat = maskoceans(lons,lats,lats,resolution='c', grid = 10)

fig = plt.figure
pc = map1.pcolormesh(lons, lats, new_lat, vmin=0, vmax=34,  cmap=cm.RdYlBu, latlon=True)
plt.show()

for iii in range(new_lon.shape[1]):
    index = np.where(new_lon.mask[:,iii] == False)
    index2 = np.where(new_lon.mask[:,iii] == True)
    new_lon[index[0],iii] = 34
    new_lon[index2[0],iii] = 0

fig = plt.figure
pc = map1.pcolormesh(lons, lats, new_lat, vmin=0, vmax=34,  cmap=cm.RdYlBu, latlon=True)
plt.show()

The first figure I get shows the expected map of Africa with disguised oceans and land values ​​corresponding to latitude (until the color bar is saturated at 34, but this value was just taken as an example)

First digit

, , , - , , :

Second digit

1 2, 2 , 1. , ?

+4
1

, lons lats.

: maskoceans . , lons new_lon , lats new_lat. , new_lon lons. . , new_lon new_lat , .

: , maskoceans.

import copy
lons1 = copy.copy(lons)
lats1 = copy.copy(lats)

lons1 lats1 maskoceans.

+2

All Articles