shp = salem.read_shapefile(get_demo_file('rgi_kesselwand.shp')) # I you need to do a lot of maps you might want # to use an API key and set it here with key='YOUR_API_KEY' g = GoogleVisibleMap(x=[shp.min_x, shp.max_x], y=[shp.min_y, shp.max_y], maptype='satellite') # try out also: 'terrain' # the google static image is a standard rgb image ggl_img = g.get_vardata() ax1.imshow(ggl_img) ax1.set_title('Google static map') # make a map of the same size as the image (no country borders) sm = Map(g.grid, factor=1, countries=False) sm.set_shapefile(shp) # add the glacier outlines sm.set_rgb(ggl_img) # add the background rgb image sm.set_scale_bar(location=(0.88, 0.94)) # add scale sm.visualize(ax=ax2) # plot it ax2.set_title('GPR measurements') # read the point GPR data and add them to the plot df = pd.read_csv(get_demo_file('gtd_ttt_kesselwand.csv')) dl = DataLevels(df.THICKNESS, levels=np.arange(10, 201, 10), extend='both') x, y = sm.grid.transform(df.POINT_LON.values, df.POINT_LAT.values) ax2.scatter(x, y, color=dl.to_rgb(), s=50, edgecolors='k', linewidths=1) dl.append_colorbar(ax2, label='Ice thickness (m)') # make it nice plt.tight_layout() plt.show()
Add topographic shading to a plot """ from salem import mercator_grid, Map, get_demo_file import matplotlib.pyplot as plt # prepare the figure f, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2, figsize=(8, 7)) # map extent grid = mercator_grid(center_ll=(10.76, 46.79), extent=(18000, 14000)) sm = Map(grid, countries=False) sm.set_lonlat_contours(interval=0) sm.set_scale_bar() # add topography fpath = get_demo_file('hef_srtm.tif') sm.set_topography(fpath) sm.visualize(ax=ax1, addcbar=False, title='relief_factor=0.7 (default)') # stronger shading sm.set_topography(fpath, relief_factor=1.4) sm.visualize(ax=ax2, addcbar=False, title='relief_factor=1.4') # add color shading z = sm.set_topography(fpath) sm.set_data(z) sm.set_cmap('topo') sm.visualize(ax=ax3, title='Color with shading', addcbar=False)