The TL;DR;
Two new kinds of thematic map for handling complex multivariate data associated with polygons.
We’ve developed python code that helps you make tiled and woven maps.
Mosaic world map by Chris Chamberlain; see this article and this video for more.
“… a countable family of closed sets \(\mathcal{T}=\{T_1,T_2,\ldots\}\) which covers the plane without gaps or overlaps. More explicitly, the union of the sets \(T_1,T_2,\ldots\) (which are known as the tiles of \(\mathcal{T}\)) is to be the whole plane, and the interiors of the sets \(T_i\) are to be pairwise disjoint” (Grünbaum and Shephard 1987, page 16)
… a GIS coverage!
The symmetries of a tiling map tiles on to other tiles.
Sets of tiles mapped onto one another like this are transitivity groups, of which an isohedral tiling has only one.
Cartographically it probably doesn’t work like that…
Directionality or orientation is irrelevant to mathematicians.
However, it is important for mapping: we need a concept of cartographic transitivity groups where different tile orientations ‘count’.
¯\_(ツ)_/¯
We are not entirely sure… but we’ll keep looking!
The building blocks of our approach.
These (and more) are made the same way:
We can also make various adjustments:
Insetting relative to the repeating tile unit helps distinguish elements.
For a lot more on woven maps, see our earlier talk.
Weaving theory leads to useful matrix-based approaches.
Primarily for biaxial weaves.
We have extended the matrix approach to triaxial weaves (see our notes).
We make these the same way we make tile units.
The strands
parameter specifies which strands in each axis (separated by the |
) are distinct, and also allows us to ‘skip’ strands on -
characters .
Vermeer’s The Geographer (∽1675) from commons.wikimedia.org.
TileUnit
s and WeaveUnit
s are both Tileable
objects that can be used to make a Tiling
.
To make a Tiling
we also need a polygon dataset to be tiled and its unique ID variable.1
Next, get a TiledMap
from the the Tiling
.
This overlays the Tiling
with the geospatial data polygons, pulling their data, and dissolves based on tile element IDs.
We emphasize tile boundaries or zone boundaries in the data depending on the prioritise_tiles
setting.
At this point, you can export to a dataset.
We have to specify the mapping from tileable element identifiers ("a"
, "b"
, "c"
…) to data variables.
We also specify a mapping from variable names to colour palettes.
Now we can render a map…
There are a range of options here particularly in relation to the tricky business of generating a legend.
Because we can…