def test_gmap_transformed(): dem = GeoTiff(get_demo_file('hef_srtm.tif')) dem.set_subset(margin=-100) dem = mercator_grid(center_ll=(10.76, 46.798444), extent=(10000, 7000)) i, j = dem.ij_coordinates g = GoogleVisibleMap(x=i, y=j, crs=dem, size_x=500, size_y=400) img = g.get_vardata() m = Map(dem, countries=False) with pytest.raises(ValueError): m.set_data(img) m.set_lonlat_contours(interval=0.025) m.set_shapefile(get_demo_file('Hintereisferner.shp'), linewidths=2, edgecolor='darkred') m.set_rgb(img, g.grid) fig, ax = plt.subplots(1, 1) m.visualize(ax=ax, addcbar=False) plt.tight_layout() return fig
def grid_tiff(file, grid): g = GeoTiff(file) # Spare memory ex = grid.extent_in_crs(crs=wgs84) # l, r, b, t g.set_subset(corners=((ex[0], ex[2]), (ex[1], ex[3])), crs=wgs84, margin=10) ls = g.get_vardata() ls_on_grid = grid.lookup_transform(ls, grid=grid) return ls_on_grid
def set_topography(self, topo=None, crs=None, relief_factor=0.7, **kwargs): """Add topographical shading to the map. Parameters ---------- topo: path to a geotiff file containing the topography, OR 2d data array relief_factor: how strong should the shading be? kwargs: any keyword accepted by salem.Grid.map_gridded_data (interp,ks) Returns ------- the topography if needed (bonus) """ if topo is None: self._shading_base() return kwargs.setdefault('interp', 'spline') if isinstance(topo, six.string_types): _, ext = os.path.splitext(topo) if ext.lower() == '.tif': g = GeoTiff(topo) # Spare memory ex = self.grid.extent_in_crs(crs=wgs84) # l, r, b, t g.set_subset(corners=((ex[0], ex[2]), (ex[1], ex[3])), crs=wgs84, margin=10) z = g.get_vardata() z[z < -999] = 0 z = self.grid.map_gridded_data(z, g.grid, **kwargs) else: raise ValueError( 'File extension not recognised: {}'.format(ext)) else: z = self._check_data(topo, crs=crs, **kwargs) # Gradient in m m-1 ddx = self.grid.dx ddy = self.grid.dy if self.grid.proj.is_latlong(): # we make a coarse approx of the avg dx on a sphere _, lat = self.grid.ll_coordinates ddx = np.mean(ddx * 111200 * np.cos(lat * np.pi / 180)) ddy *= 111200 dy, dx = np.gradient(z, ddy, ddx) self._shading_base(dx - dy, relief_factor=relief_factor) return z
def set_topography(self, topo=None, crs=None, relief_factor=0.7, **kwargs): """Add topographical shading to the map. Parameters ---------- topo: path to a geotiff file containing the topography, OR 2d data array relief_factor: how strong should the shading be? kwargs: any keyword accepted by salem.Grid.map_gridded_data (interp,ks) Returns ------- the topography if needed (bonus) """ if topo is None: self._shading_base() return kwargs.setdefault('interp', 'spline') if isinstance(topo, six.string_types): _, ext = os.path.splitext(topo) if ext.lower() == '.tif': g = GeoTiff(topo) # Spare memory ex = self.grid.extent_in_crs(crs=wgs84) # l, r, b, t g.set_subset(corners=((ex[0], ex[2]), (ex[1], ex[3])), crs=wgs84, margin=10) z = g.get_vardata() z[z < -999] = 0 z = self.grid.map_gridded_data(z, g.grid, **kwargs) else: raise ValueError('File extension not recognised: {}' .format(ext)) else: z = self._check_data(topo, crs=crs, **kwargs) # Gradient in m m-1 ddx = self.grid.dx ddy = self.grid.dy if self.grid.proj.is_latlong(): # we make a coarse approx of the avg dx on a sphere _, lat = self.grid.ll_coordinates ddx = np.mean(ddx * 111200 * np.cos(lat * np.pi / 180)) ddy *= 111200 dy, dx = np.gradient(z, ddy, ddx) self._shading_base(dx - dy, relief_factor=relief_factor) return z
cached=True) river = salem.read_shapefile('/users/global/cornkle/data/pythonWorkspace/proj_CEH/shapes/rivers/ne_10m_rivers_lake_centerlines.shp', cached=True) lakes = salem.read_shapefile('/users/global/cornkle/data/pythonWorkspace/proj_CEH/shapes/lakes/ne_10m_lakes.shp', cached=True) map.set_shapefile(lakes, edgecolor='k', facecolor='none', linewidth=2,) srtm_on_ds = ds18_present.salem.lookup_transform(top) t_on_ds = ds18_present.salem.transform(t) t2_on_ds = ds18_present.salem.transform(t2) grid = ds18_present.salem.grid #deforestation g = GeoTiff(lst) ex = grid.extent_in_crs(crs=wgs84) # l, r, b, t g.set_subset(corners=((ex[0], ex[2]), (ex[1], ex[3])), crs=wgs84, margin=10) ls = g.get_vardata() ls = np.array(ls, dtype=float) lst_on_ds = ds18_present.salem.lookup_transform(ls, grid=g.grid) #evergreen forest g = GeoTiff(vegfra) ex = grid.extent_in_crs(crs=wgs84) # l, r, b, t g.set_subset(corners=((ex[0], ex[2]), (ex[1], ex[3])), crs=wgs84, margin=10) ls = g.get_vardata() ls = np.array(ls, dtype=float) ls[ls >100] = np.nan ls = grid.map_gridded_data(ls, g.grid) vegfra_on_ds = ds18_present.salem.lookup_transform(ls, grid=grid)
edgecolor='k', facecolor='none', linewidth=2, ) srtm = open_xr_dataset(get_demo_file('hef_srtm.tif')) srtm_on_ds = ds.salem.lookup_transform(srtm) grid = ds.salem.grid srtm_on_ds = ds.salem.lookup_transform(top) #t_on_ds = ds.salem.lookup_transform(t, grid=grid) # g = GeoTiff(lst) # Spare memory ex = grid.extent_in_crs(crs=wgs84) # l, r, b, t g.set_subset(corners=((ex[0], ex[2]), (ex[1], ex[3])), crs=wgs84, margin=10) ls = g.get_vardata() ls = np.array(ls, dtype=float) ls[ls > 200] = np.nan ls = grid.map_gridded_data(ls, g.grid) lst_on_ds = ds.salem.lookup_transform(ls, grid=grid) g = GeoTiff(vegfra) # Spare memory ex = grid.extent_in_crs(crs=wgs84) # l, r, b, t g.set_subset(corners=((ex[0], ex[2]), (ex[1], ex[3])), crs=wgs84, margin=10) ls = g.get_vardata() ls = np.array(ls, dtype=float) ls[ls > 100] = np.nan ls = grid.map_gridded_data(ls, g.grid) vegfra_on_ds = ds.salem.lookup_transform(ls, grid=grid)