mirror of
https://gitlab.com/gaelysam/mapgen_rivers.git
synced 2024-12-29 12:20:41 +01:00
view.py: use a different colormap for sea, to distinguish it from lakes
This commit is contained in:
parent
27670addb3
commit
b246cb775b
27
view.py
27
view.py
@ -11,10 +11,12 @@ try:
|
|||||||
import colorcet as cc
|
import colorcet as cc
|
||||||
cmap1 = cc.cm.CET_L11
|
cmap1 = cc.cm.CET_L11
|
||||||
cmap2 = cc.cm.CET_L12
|
cmap2 = cc.cm.CET_L12
|
||||||
|
cmap3 = cc.cm.CET_L6.reversed()
|
||||||
except ImportError: # No module colorcet
|
except ImportError: # No module colorcet
|
||||||
import matplotlib.cm as cm
|
import matplotlib.cm as cm
|
||||||
cmap1 = cm.summer
|
cmap1 = cm.summer
|
||||||
cmap2 = cm.Blues
|
cmap2 = cm.ocean.reversed()
|
||||||
|
cmap3 = cm.Blues
|
||||||
except ImportError: # No module matplotlib
|
except ImportError: # No module matplotlib
|
||||||
has_matplotlib = False
|
has_matplotlib = False
|
||||||
|
|
||||||
@ -24,10 +26,12 @@ if has_matplotlib:
|
|||||||
water = np.maximum(lakes_sea - dem, 0)
|
water = np.maximum(lakes_sea - dem, 0)
|
||||||
max_elev = dem.max()
|
max_elev = dem.max()
|
||||||
max_depth = water.max()
|
max_depth = water.max()
|
||||||
|
max_lake_depth = lakes.max()
|
||||||
|
|
||||||
ls = mcl.LightSource(azdeg=315, altdeg=45)
|
ls = mcl.LightSource(azdeg=315, altdeg=45)
|
||||||
norm_ground = plt.Normalize(vmin=sea_level, vmax=max_elev)
|
norm_ground = plt.Normalize(vmin=sea_level, vmax=max_elev)
|
||||||
norm_sea = plt.Normalize(vmin=0, vmax=max_depth)
|
norm_sea = plt.Normalize(vmin=0, vmax=max_depth)
|
||||||
|
norm_lake = plt.Normalize(vmin=0, vmax=max_lake_depth)
|
||||||
rgb = ls.shade(dem, cmap=cmap1, vert_exag=1/scale, blend_mode='soft', norm=norm_ground)
|
rgb = ls.shade(dem, cmap=cmap1, vert_exag=1/scale, blend_mode='soft', norm=norm_ground)
|
||||||
|
|
||||||
(X, Y) = dem.shape
|
(X, Y) = dem.shape
|
||||||
@ -37,13 +41,23 @@ if has_matplotlib:
|
|||||||
extent = (-0.5*scale, (Y-0.5)*scale, -0.5*scale, (X-0.5)*scale)
|
extent = (-0.5*scale, (Y-0.5)*scale, -0.5*scale, (X-0.5)*scale)
|
||||||
plt.imshow(np.flipud(rgb), extent=extent, interpolation='antialiased')
|
plt.imshow(np.flipud(rgb), extent=extent, interpolation='antialiased')
|
||||||
alpha = (water > 0).astype('u1')
|
alpha = (water > 0).astype('u1')
|
||||||
plt.imshow(np.flipud(water), alpha=np.flipud(alpha), cmap=cmap2, extent=extent, vmin=0, vmax=max_depth, interpolation='antialiased')
|
lakes_alpha = ((lakes_sea - np.maximum(dem,sea_level)) > 0).astype('u1')
|
||||||
|
# plt.imshow(np.flipud(water), alpha=np.flipud(alpha), cmap=cmap2, extent=extent, vmin=0, vmax=max_depth, interpolation='antialiased')
|
||||||
|
plt.imshow(np.flipud(water), alpha=np.flipud(alpha), cmap=cmap3, extent=extent, vmin=0, vmax=max_depth, interpolation='antialiased')
|
||||||
|
plt.imshow(np.flipud(water), alpha=np.flipud(lakes_alpha), cmap=cmap2, extent=extent, vmin=0, vmax=max_depth, interpolation='antialiased')
|
||||||
|
|
||||||
sm1 = plt.cm.ScalarMappable(cmap=cmap1, norm=norm_ground)
|
sm1 = plt.cm.ScalarMappable(cmap=cmap1, norm=norm_ground)
|
||||||
plt.colorbar(sm1).set_label('Elevation')
|
plt.colorbar(sm1).set_label('Elevation')
|
||||||
|
|
||||||
sm2 = plt.cm.ScalarMappable(cmap=cmap2, norm=norm_sea)
|
sm2 = plt.cm.ScalarMappable(cmap=cmap2, norm=norm_lake)
|
||||||
plt.colorbar(sm2).set_label('Water depth')
|
cb2 = plt.colorbar(sm2)
|
||||||
|
cb2.ax.invert_yaxis()
|
||||||
|
cb2.set_label('Lake Depth')
|
||||||
|
|
||||||
|
sm3 = plt.cm.ScalarMappable(cmap=cmap3, norm=norm_sea)
|
||||||
|
cb3 = plt.colorbar(sm3)
|
||||||
|
cb3.ax.invert_yaxis()
|
||||||
|
cb3.set_label('Ocean Depth')
|
||||||
|
|
||||||
plt.xlabel('X')
|
plt.xlabel('X')
|
||||||
plt.ylabel('Z')
|
plt.ylabel('Z')
|
||||||
@ -84,7 +98,8 @@ def stats(dem, lakes, scale=1):
|
|||||||
lake_surface = lake.sum()
|
lake_surface = lake.sum()
|
||||||
|
|
||||||
print('--- General ---')
|
print('--- General ---')
|
||||||
print('Grid size: {:5d}x{:5d}'.format(dem.shape[0], dem.shape[1]))
|
print('Grid size (dem): {:5d}x{:5d}'.format(dem.shape[0], dem.shape[1]))
|
||||||
|
print('Grid size (lakes): {:5d}x{:5d}'.format(lakes.shape[0], lakes.shape[1]))
|
||||||
if scale > 1:
|
if scale > 1:
|
||||||
print('Map size: {:5d}x{:5d}'.format(int(dem.shape[0]*scale), int(dem.shape[1]*scale)))
|
print('Map size: {:5d}x{:5d}'.format(int(dem.shape[0]*scale), int(dem.shape[1]*scale)))
|
||||||
print()
|
print()
|
||||||
@ -100,3 +115,5 @@ def stats(dem, lakes, scale=1):
|
|||||||
print('Mean continent elev: {:4.0f}'.format((dem*continent).sum()/continent_surface))
|
print('Mean continent elev: {:4.0f}'.format((dem*continent).sum()/continent_surface))
|
||||||
print('Lowest elevation: {:4.0f}'.format(dem.min()))
|
print('Lowest elevation: {:4.0f}'.format(dem.min()))
|
||||||
print('Highest elevation: {:4.0f}'.format(dem.max()))
|
print('Highest elevation: {:4.0f}'.format(dem.max()))
|
||||||
|
print()
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user