Browse Source

Coordinate names now searched instead of in an assumed position.

In some cases, xarray may reorder the coordinate names when writing a file.

Fixes #81.
lon0
Bill Ladwig 6 years ago
parent
commit
6d924a7439
  1. 62
      src/wrf/util.py

62
src/wrf/util.py

@ -756,9 +756,15 @@ def is_moving_domain(wrfin, varname=None, latvar=either("XLAT", "XLAT_M"),
# arguments # arguments
lon_coord = lonvar lon_coord = lonvar
lat_coord = latvar lat_coord = latvar
else: else:
lon_coord = coord_names[0] for name in coord_names:
lat_coord = coord_names[1] if name in _LAT_COORDS:
lat_coord = name
continue
if name in _LON_COORDS:
lon_coord = name
continue
else: else:
lon_coord = lonvar lon_coord = lonvar
lat_coord = latvar lat_coord = latvar
@ -1181,15 +1187,22 @@ def _get_coord_names(wrfin, varname):
coord_names = coord_attr.split() coord_names = coord_attr.split()
else: else:
coord_names = coord_attr.decode().split() coord_names = coord_attr.decode().split()
lon_coord = coord_names[0]
lat_coord = coord_names[1]
try: for name in coord_names:
time_coord = coord_names[2] if name in _LAT_COORDS:
except IndexError: lat_coord = name
time_coord = None continue
else:
# Make sure they time variable wasn't removed if name in _LON_COORDS:
lon_coord = name
continue
if name in _TIME_COORD_VARS:
time_coord = name
continue
if time_coord is not None:
# Make sure the time variable wasn't removed
try: try:
_ = wrfnc.variables[time_coord] _ = wrfnc.variables[time_coord]
except KeyError: except KeyError:
@ -3897,30 +3910,3 @@ def is_latlon_pair(pair):
return (pair.lat is not None and pair.lon is not None) return (pair.lat is not None and pair.lon is not None)
else: else:
return False return False
Loading…
Cancel
Save