Geological maps have been historically a central part of the geological knowledge acquisition process: they are used to summarize all the relevant information of a site of interest and they provide the cornerstone for decision making, scientific discovery and three-dimensional geological modeling.
Depending on the scope of the geological survey the cartography can depict different types of content: whether lithostratigrapy, chronostratigrapy, morphology, or other criteria are considered, the building blocks of a geological map is the geological unit, as the base element used to subdivide a region into geologically homogeneous patches of terrain. Digitized maps are normally represented within GIS software as polygonal layers.
A common approach for mapping has been to directly draw polygons representing the different units on the map: although this approach appears the simplest one, it poses several issues in terms of topological consistency of resulting maps, especially when it comes to updating existing cartography. Furthermore, from a purely information science standpoint this representation, although useful for visualization, is inherently redundant, defining the same boundary geometry two times for each polygonal couples in contact.
Editing polygonal layers is inherently problematic because vertex and edge correspondence between polygons in contact must be enforced by the operator. Although most GIS software implements appropriate tools (for editing and for topology validation) which can help in achieving error-free polygonal layers, the burden of using them is left to the operator and it is not enforced by the data format itself.
A better solution for generating topologically-consistent geological maps consists in tracing the contacts separating the units, and then transforming them into polygonal layers (by using what is often known as a “polygonize” operation) for map finalization (see Figure 1).
![](data:image/png;base64, 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)
Figure 1: Generation of a consistent polygonal layer by polygonize operation, this can be performed by any GIS and is suggested as a good practice in geological map generation. A line layer is used for tracing the contacts between the different units and a point layer is also needed to define attributes for the polygons.
This approach is also more similar to the geological reasoning that is performed when mapping, especially when remotely -sensed imagery is used (as in planetary mapping): the operator tries to identify the boundaries between different terrains rather than directly defining the area covered by the units themselves. This strategy hasve the clear benefit of making editing the map easier but, even when employed by the operator, the original layers (contact lines and points) are rarely or never distributed to the public, making it impossible to apply this method when updating already existing maps.
In order to solve this problem we implemented a python module and a QGIS plugin called Mappy which is mostly based on already-existent modules as numpy (Oliphant 2006), geopandas (Jordahl et al. 2019), and topojson (Bostock 2017). Mappy implements the backwards transformation of the polygonize operation decomposing a polygonal layer into boundary lines and a point layer that contains the attributes of the original polygonal layer (the forward transform is also implemented).
The input polygonal layer is first transformed into a topology-aware representation via topojson: first the intersection points are detected and then the polygons boundaries are split at those points, creating a list of arcs: each representing an unique portion of a contact line (Figure 2). Topojson representation can also account for rounding errors in the nodes coordinates and makes it possible to also consistently apply line-simplification methods (e.g. to reduce the number of nodes) while maintaining the original topology.
![](data:image/png;base64, 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)
Figure 2: The inverse operation of a "polygonize" operation as performed by mappy. a) the input polygonal layers with attributes; b) the topojson representation as list of arcs (each polygon is then just a list of arcs in the right order); c) the arcs are aggregated to create a representation more suitable for geological editing; d) point are positioned in the visual center of each polygon and the attributes are then transferred.
Although being topologically sound, the topojson format of a polygonal layer is not the best suited representation for editing geological maps: given each line is split at the intersection points (Figure 2b) a contact might be split in a number of segments (i.e. when a contact separates one unit from several others) making it more difficult to edit the contact of a specific unit. For this reason, Mappy further processes the lines to aggregate several continuous arcs into a single polylines (Figure 2c).
For each polygon an indicator point is then automatically computed to be in its visual center and the original attributes of the polygons are transferred to it. The points are placed by using the “polylabel” method provided by shapely module (Gillies and others 2007).
The described approach has been then implemented in a standalone module that is also accessible from a QGIS plugin enabling easy transformation of any existing map into a line and points representations and vice-versa, therefore simplifying the process of editing and topology checking of existent geological maps.
Acknowledgments: This research was supported by European Union’s Horizon 2020 under grant agreement No 776276- PLANMAP.
References:
Bostock, Mike, 2017 TopoJSON. URL: https://github.com/topojson/topojson-specification.
Gillies, Sean, and others, 2007 Shapely: Manipulation and Analysis of Geometric Objects. toblerity.org. https://github.com/Toblerity/Shapely.
Jordahl, Kelsey, Joris Van Den Bossche, Jacob Wasserman, et al., 2019 Geopandas/Geopandas: V0.4.1. Zenodo. https://zenodo.org/record/2585849, accessed June 29, 2020.
Oliphant, Travis, 2006 NumPy: A Guide to NumPy. https://www.numpy.org/.