def test_metum(self): ds = sio.open_metum_dataset(get_demo_file('rotated_grid.nc')) # One way mylons, mylats = ds.salem.grid.ll_coordinates assert_allclose(mylons, ds.longitude_t, atol=1e-7) assert_allclose(mylats, ds.latitude_t, atol=1e-7) # Round trip i, j = ds.salem.grid.transform(mylons, mylats) ii, jj = ds.salem.grid.ij_coordinates assert_allclose(i, ii, atol=1e-7) assert_allclose(j, jj, atol=1e-7) # Cartopy from salem.gis import proj_to_cartopy from cartopy.crs import PlateCarree cp = proj_to_cartopy(ds.salem.grid.proj) xx, yy = ds.salem.grid.xy_coordinates out = PlateCarree().transform_points(cp, xx.flatten(), yy.flatten()) assert_allclose(out[:, 0].reshape(ii.shape), ds.longitude_t, atol=1e-7) assert_allclose(out[:, 1].reshape(ii.shape), ds.latitude_t, atol=1e-7) # Round trip out = cp.transform_points(PlateCarree(), ds.longitude_t.values.flatten(), ds.latitude_t.values.flatten()) assert_allclose(out[:, 0].reshape(ii.shape), xx, atol=1e-7) assert_allclose(out[:, 1].reshape(ii.shape), yy, atol=1e-7)
def test_to_cartopy(self): import cartopy.crs as ccrs from salem import GeoNetcdf, GeoTiff grid = gis.mercator_grid(center_ll=(11.38, 47.26), extent=(2000000, 2000000)) p = gis.proj_to_cartopy(grid.proj) assert isinstance(p, ccrs.TransverseMercator) fuzzy_proj_tester(grid.proj, pyproj.Proj(p.proj4_params)) ds = GeoNetcdf(get_demo_file('wrfout_d01.nc')) p = gis.proj_to_cartopy(ds.grid.proj) assert isinstance(p, ccrs.LambertConformal) fuzzy_proj_tester(ds.grid.proj, pyproj.Proj(p.proj4_params)) ds = GeoNetcdf(get_demo_file('wrf_mercator.nc')) p = gis.proj_to_cartopy(ds.grid.proj) assert isinstance(p, ccrs.Mercator) fuzzy_proj_tester(ds.grid.proj, pyproj.Proj(p.proj4_params)) ds = GeoTiff(get_demo_file('himalaya.tif')) p = gis.proj_to_cartopy(ds.grid.proj) assert isinstance(p, ccrs.PlateCarree) ds = GeoTiff(get_demo_file('hef_roi.tif')) p = gis.proj_to_cartopy(ds.grid.proj) assert isinstance(p, ccrs.PlateCarree) fuzzy_proj_tester(ds.grid.proj, pyproj.Proj(p.proj4_params)) p = gis.proj_to_cartopy(wgs84) assert isinstance(p, ccrs.PlateCarree) p = gis.proj_to_cartopy(pyproj.Proj('+proj=utm +zone=15')) assert isinstance(p, ccrs.UTM) # this needs gdal if gis.has_gdal: p = gis.proj_to_cartopy(pyproj.Proj(init='epsg:26915')) assert isinstance(p, ccrs.UTM)