Skip to article frontmatterSkip to article content

Sizes

The size of the map:

Map details

How much detail can be shown in:

Two thinking directions:

Considerations

Think:

Take home message: Always plan ahead about what size of map to be drawn.

difference size

Figure 1:The same map export with different size, squeezed to the same display size.

zoom in

Figure 2:The same 4 maps, zoomed-in.

Typography

Typography most often serves to label cartographic elements. It is a “functional symbol” primarily, and secondarily an aesthetic element meaning that it carries cartographic meaning and is not simply “window dressing”.

What is the differences between Sans Serif fonts and Serif fonts?

san-serif and serif

Figure 3:Some example of Sans-Serif fonts (left) and Serif fonts (right).

text element

Figure 4:Text elements.

Things to be considered:

Take home message: The top priority is to ensure that the text is clear and readable. Additionally, make sure the fonts are appropriate for your target venue.

Colours

In the realm of cartography and geovisualization, color is an essential tool that serves to delineate different components and highlight their significance, thereby facilitating effective visual communication. In designing geovisualization, the application of color goes beyond aesthetics, as it enables the clear differentiation of features and allows for the accurate representation of data, making it a crucial aspect of geovisualization design.

Temperature of colours. Source: NASA Earth Observatory: Arctic Chill Sweeps U.S.

Temperature of colours. Source: NASA Earth Observatory: Arctic Chill Sweeps U.S.

Things to considered while selecting color(s):

colormaps from Matplotlib

Figure 6:Some example of colormaps from Matplotlib.

qualitative colormap from seaborn

Figure 7:Various qualitative colormap from Seaborn.

Two basic colour models:

How to use colors in Python (Matplotlib):

Coordinate System

All maps are drawn with a specific coordinate reference system (CRS), which defines how the geographic coordinates of features on the Earth’s surface are represented in a flat, two-dimensional plane (i.e., map). There are two main types of CRS: unprojected and projected. See proj for a series of different global projections and The Morphing Map Project to see how projections are different from each other.

  1. Unprojected CRS

    • Uses latitude (N-S) and longitude (E-W) coordinates in degrees.

    • Represents Earth’s curved surface.

  2. Projected CRS

    • Transforms Earth’s curved surface into a flat map (in length, e.g. meters).

    • Different types:

      • Mercator: Preserves angles and directions, used in navigation.

      • Equal Area: Preserves area, useful for spatial analysis.

      • Conic: Preserves shape and angles, used for mid-latitude regions.

    Each map projection serves different purposes and has its own advantages and disadvantages in terms of preserving shape, area, distance, and direction. The choice of projection depends on the specific needs and applications of the map.

morphing maps

Figure 8:[Try and view the differences of various projections in The Morphing Map Project.

Countries in differet projection.

Figure 9:The four countries in three different projections.

How to use CRS in Python

Here we demonstrate how to change to the Singapore projection See EPSG:3414 and SLA on SVY21 / Singapore TM for more details.

import geopandas as gpd
# read the file
singapore = gpd.read_file('../path_to_file/singapore.shp')
print(singapore.crs)  # to show the projection info from the saved file

# use .to_crs() to convert between projections, usually from or to EPSG:4326

# check EPSG.io website, 3414 is the code for SVY21 / Singapore TM,
# TM means Transverse Mercator, see https://epsg.io/3414 for details
sg_prjd = singapore.to_crs('epsg:3414')
# OR
## find the targeted crs string, something look like this:
targeted_crs = '+proj=tmerc +lat_0=1.36666666666667 +lon_0=103.833333333333 +k=1 +x_0=28001.642 +y_0=38744.572 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs +type=crs'
sg_prjd = singapore.to_crs(targeted_crs)

Arrangement

Summary

Basics of mapping

Things to be considered and planned while visualizing spatial patterns: