6

I would like to improve the visual appeal of a geographical map I plotted with Mathematica. The code is:

GeoGraphics[{continents (geographic regions)},GeoBackground->GeoStyling["ReliefMap"],GeoProjection->"Equirectangular"]

and the output is:

enter image description here

There are 2 issues I would like to resolve:

  1. The structure on the sea floor is distracting from the landmasses. Is it possible to reduce the number of details/contours?
  2. I would like to change the color on the landmasses to be more saturated and green as well as white for snow/large elevations.

I found a good example on the internet done with "Generic Mapping Tools":

enter image description here

Apart from the different map projection, it is exactly what I am looking for (reduced level of sea floor details and landmass coloring). Is it possible to also do that in Mathematica?

J. M.'s missing motivation
  • 124,525
  • 11
  • 401
  • 574
Oscillon
  • 1,231
  • 10
  • 21

1 Answers1

7

The documentation for GeoStyling says:

GeoStyling["ReliefMap", opts] accepts the same options as ReliefPlot.

We should be able to get something roughly similar to what you want by combining ColorFunction, PlotRange, and ClippingStyle. The latter two would let me make everything below nominal see level a flat color. We might Overlay two plots to get a partial opacity.


Okay, now that I have time to do this a bit better here is my proposal.

  • I render two different plots to give me full control over below-sea-level and above-sea-level styling.

  • I use LightingAngle to give flat lighting for the sea layer to minimize its contrast.

  • I set the ClippingStyle in each plot to black and then use ImageAdd to combine the two layers.

  • I render each layer larger than my target size then downsample the final image to reduce artifacts.

I cannot match the colors of your example map as they are not correlated to elevation but I tried to pick something fairly similar.

gg[opts___] :=
 GeoGraphics[GeoRange -> "World", 
  GeoBackground -> 
   GeoStyling["ReliefMap", opts, ClippingStyle -> Black, ImageSize -> 2000], 
  GeoProjection -> "Equirectangular", ImageSize -> 2000]

ImageAdd[
  gg[ColorFunction -> (Blend[
       {RGBColor[{.5961, .6235, .4078}], 
        RGBColor[{.8157, .7059, .5843}], 
        RGBColor[{.9686, .9490, .7922}], 
        RGBColor[{.9608, .9686, .8902}]}, #] &), 
   PlotRange -> {Full, Full, {0, All}}],
  gg[ColorFunction -> "Aquamarine", LightingAngle -> None, 
    PlotRange -> {Full, Full, {All, 0}}]
] // ImageResize[#, 800] &

enter image description here

Mr.Wizard
  • 271,378
  • 34
  • 587
  • 1,371