From 59e3c8eb8e0f281025a20080b4f5ac0c1bf77e40 Mon Sep 17 00:00:00 2001 From: Bill Ladwig Date: Fri, 12 Aug 2016 14:51:52 -0600 Subject: [PATCH] Fixed problem with pyngl plotting and unicode strings for resources --- src/wrf/projection.py | 38 +++++++++++++++++++------------------- test/projtest.py | 15 ++++++++------- 2 files changed, 27 insertions(+), 26 deletions(-) diff --git a/src/wrf/projection.py b/src/wrf/projection.py index 853fa9e..85c76f8 100644 --- a/src/wrf/projection.py +++ b/src/wrf/projection.py @@ -210,9 +210,9 @@ class LambertConformal(WrfProj): else self.truelat2) _pyngl = Resources() - _pyngl.mpProjection = "LambertConformal" - _pyngl.mpDataBaseVersion = "MediumRes" - _pyngl.mpLimitMode = "Corners" + _pyngl.mpProjection = bytes("LambertConformal") + _pyngl.mpDataBaseVersion = bytes("MediumRes") + _pyngl.mpLimitMode = bytes("Corners") _pyngl.mpLeftCornerLonF = self.ll_lon _pyngl.mpLeftCornerLatF = self.ll_lat _pyngl.mpRightCornerLonF = self.ur_lon @@ -257,7 +257,7 @@ class LambertConformal(WrfProj): def _cart_extents(self): # Need to modify the extents for the new projection pc = crs.PlateCarree() - xs, ys, zs = self._cartopy.transform_points(pc, + xs, ys, zs = self._cartopy().transform_points(pc, np.array([self.ll_lon, self.ur_lon]), np.array([self.ll_lat, self.ur_lat])).T @@ -308,9 +308,9 @@ class Mercator(WrfProj): return None _pyngl = Resources() - _pyngl.mpProjection = "Mercator" - _pyngl.mpDataBaseVersion = "MediumRes" - _pyngl.mpLimitMode = "Corners" + _pyngl.mpProjection = bytes("Mercator") + _pyngl.mpDataBaseVersion = bytes("MediumRes") + _pyngl.mpLimitMode = bytes("Corners") _pyngl.mpLeftCornerLonF = self.ll_lon _pyngl.mpLeftCornerLatF = self.ll_lat _pyngl.mpRightCornerLonF = self.ur_lon @@ -361,7 +361,7 @@ class Mercator(WrfProj): # Need to modify the extents for the new projection pc = crs.PlateCarree() - xs, ys, zs = self._cartopy.transform_points(pc, + xs, ys, zs = self._cartopy().transform_points(pc, np.array([self.ll_lon, self.ur_lon]), np.array([self.ll_lat, self.ur_lat])).T @@ -409,9 +409,9 @@ class PolarStereographic(WrfProj): return None _pyngl = Resources() - _pyngl.mpProjection = "Stereographic" - _pyngl.mpDataBaseVersion = "MediumRes" - _pyngl.mpLimitMode = "Corners" + _pyngl.mpProjection = bytes("Stereographic") + _pyngl.mpDataBaseVersion = bytes("MediumRes") + _pyngl.mpLimitMode = bytes("Corners") _pyngl.mpLeftCornerLonF = self.ll_lon _pyngl.mpLeftCornerLatF = self.ll_lat _pyngl.mpRightCornerLonF = self.ur_lon @@ -458,7 +458,7 @@ class PolarStereographic(WrfProj): def _cart_extents(self): # Need to modify the extents for the new projection pc = crs.PlateCarree() - xs, ys, zs = self._cartopy.transform_points(pc, + xs, ys, zs = self._cartopy().transform_points(pc, np.array([self.ll_lon, self.ur_lon]), np.array([self.ll_lat, self.ur_lat])).T @@ -499,9 +499,9 @@ class LatLon(WrfProj): return None _pyngl = Resources() - _pyngl.mpProjection = "CylindricalEquidistant" - _pyngl.mpDataBaseVersion = "MediumRes" - _pyngl.mpLimitMode = "Corners" + _pyngl.mpProjection = bytes("CylindricalEquidistant") + _pyngl.mpDataBaseVersion = bytes("MediumRes") + _pyngl.mpLimitMode = bytes("Corners") _pyngl.mpLeftCornerLonF = self.ll_lon _pyngl.mpLeftCornerLatF = self.ll_lat _pyngl.mpRightCornerLonF = self.ur_lon @@ -647,9 +647,9 @@ class RotatedLatLon(WrfProj): return None _pyngl = Resources() - _pyngl.mpProjection = "CylindricalEquidistant" - _pyngl.mpDataBaseVersion = "MediumRes" - _pyngl.mpLimitMode = "Corners" + _pyngl.mpProjection = bytes("CylindricalEquidistant") + _pyngl.mpDataBaseVersion = bytes("MediumRes") + _pyngl.mpLimitMode = bytes("Corners") _pyngl.mpLeftCornerLonF = self.ll_lon _pyngl.mpLeftCornerLatF = self.ll_lat _pyngl.mpRightCornerLonF = self.ur_lon @@ -693,7 +693,7 @@ class RotatedLatLon(WrfProj): def _cart_extents(self): # Need to modify the extents for the new projection pc = crs.PlateCarree() - xs, ys, zs = self._cartopy.transform_points(pc, + xs, ys, zs = self._cartopy().transform_points(pc, np.array([self.ll_lon, self.ur_lon]), np.array([self.ll_lat, self.ur_lat])).T diff --git a/test/projtest.py b/test/projtest.py index 2e0b38c..508b799 100644 --- a/test/projtest.py +++ b/test/projtest.py @@ -32,6 +32,7 @@ from wrf.projection import getproj, RotatedLatLon, PolarStereographic FILE_DIR = "/Users/ladwig/Documents/wrf_files/" WRF_FILES = [ + join(FILE_DIR, "norway", "geo_em.d01.nc"), join(FILE_DIR, "rotated_pole", "EAS_geo_em.d01.nc"), join(FILE_DIR, "rotated_pole", "EUR_geo_em.d01.nc"), join(FILE_DIR,"wrfout_d01_2016-02-25_18_00_00"), @@ -55,7 +56,7 @@ def nz_proj(): "POLE_LAT" : 48.185131, "POLE_LON" : 0.0} - return lats, lons, RotLatLonProj(lats=lats, lons=lons, **params) + return lats, lons, RotatedLatLon(lats=lats, lons=lons, **params) def argentina_proj(): lats = np.array([[-57.144064, -57.144064], @@ -73,7 +74,7 @@ def argentina_proj(): "POLE_LAT" : 90 + -39.222954, "POLE_LON" : 0.0} - return lats, lons, RotLatLonProj(lats=lats, lons=lons, **params) + return lats, lons, RotatedLatLon(lats=lats, lons=lons, **params) def south_polar_proj(): lats = np.array([[-30.0,-30.0], @@ -88,7 +89,7 @@ def south_polar_proj(): "MOAD_CEN_LAT" : -90.0, "STAND_LON" : 0} - return lats, lons, PolarStereographicProj(lats=lats, lons=lons, **params) + return lats, lons, PolarStereographic(lats=lats, lons=lons, **params) def north_polar_proj(): lats = np.array([[30.0,30.0], @@ -103,7 +104,7 @@ def north_polar_proj(): "MOAD_CEN_LAT" : 90.0, "STAND_LON" : 10} - return lats, lons, PolarStereographicProj(lats=lats, lons=lons, **params) + return lats, lons, PolarStereographic(lats=lats, lons=lons, **params) def dateline_rot_proj(): @@ -121,7 +122,7 @@ def dateline_rot_proj(): "STAND_LON" : 173.143792, "POLE_LAT" : 90.0 - 66.335764, "POLE_LON" : 180.0} - return lats, lons, RotLatLonProj(lats=lats, lons=lons, **params) + return lats, lons, RotatedLatLon(lats=lats, lons=lons, **params) class WRFProjTest(ut.TestCase): longMessage = True @@ -148,8 +149,8 @@ def make_test(wrf_file=None, fixed_case=None): print ("wrf proj4: {}".format(proj.proj4())) if PYNGL: # PyNGL plotting - wks_type = "png" - wks = Ngl.open_wks(wks_type,"pyngl_{}".format(name_suffix)) + wks_type = bytes("png") + wks = Ngl.open_wks(wks_type,bytes("pyngl_{}".format(name_suffix))) mpres = proj.pyngl() map = Ngl.map(wks,mpres)