GIS and Spatial Visualisations
GIS and Spatial Visualisations
I love maps! As a sincere cartophile my interest stretches from historical maps and mapmaking to innovative geospatial data visualization methods in contemporary scholarship. To complement this interest, I have developed skills in creating maps and other geospatial representations in R and QGIS using a variety of packages. I really enjoy thinking about how best to utilise and communicate spatial data. Included here is a small portfolio of my work in this regard.
Each map below is a result of some process of experimentation, learning, or more formal knowledge production as part of a research project. As such there is significant variation amongst them in terms of quality and utility. But they are intended to highlight the diversity of my output in terms of visualising spatial data. All maps are produced by me - please do contact me if you are interested and I can provide a link to the code I used on my GitHub, where applicable.
Utilising publicly available data on all fatal and non-fatal recorded shooting incidents in South Bend, I created this heatmap visualizing the parts of the city which are most frequently affected by these types of incidents. Using the ggmap package in R to access Google Maps imagery against which to plot the heatmap (created by binning the shooting data across 50 different bins) this map allows for an intuitive understanding of the geographical distribution of shooting incidents to a layperson engaging with it.
This map utilised data on estimated vote share in the UK's 2016 EU Referendum to represent the leanings of each of the country's 650 political constituencies, represented using a hexagonal cartogram shapefile. Because the vote wasn't recorded at a constituency level this data isn't precise but interpolation methods offer a reasonably accurate estimate and this form of data visualisation gives equal spatial weight to each constituency, whilst still allowing the rough geographical trends (such as concentrated Remain votes in urban centres) to be apparent.
I created this 3D elevation map of the Kathmandu Valley overlaid with imagery to create a realistic model. With some of my scholarship focusing on political dynamics in the Kathmandu Valley I wanted to create a visualization that accurately represented the topography of the city, a relevant factor in understanding some of the urban politics there. I used the rayvista and rayrender packages in R to create this model, utilizing Digital Elevation Model (DEM) raster data and remote sensor imagery to create the realistic product.
This very personal visualization depicts the outlines of the two lakes, St. Mary’s and St. Joseph’s, that sit on the campus of the University of Notre Dame. I wanted to create an abstract representation of a location that had offered me some important moments of calm and joy during my PhD. I used the osmdata package in R to identify and isolate the outlines and then adjusted the line width when plotting the polygons to create a more visually
I worked with the leaflet package in R to create an interactive html map depicting mass shooting events in the US. Each location has a scrollover detailing the specifics of the event. The data was taken from a publicly available source and coordinates of events plotted over a basemap from the Open Street Map project using the addProviderTiles function in leaflet.
This map utilised data from the World Values Survey 2022 wave to show regional variation in opinions regarding the death penalty. Specifically, it shows a mean score for each county of respondents’ answer to the question “Please tell me for each of the following actions whether you think it can always be justified, never be justified, or something in between”. with respondents answering on a ten point scale for The Death Penalty.
The data was provided with sub national divisions provided according to the ISO 3166-2 protocol. Unfortunately it is very hard to source a shapefile for this in the UK because it comprises of a strange mix of sub national administrative units including unitary authorities, districts and council areas. I did manage to do so using a GEOJson file and converting it to a shapefile in QGIS but in the end decided to use this county level map and then geolocate all of the individual responses into it using their co-ordinates (which are provided with the data but only to two decimal places).
This uses one of the viridis colour palettes available in ggplot (which is more easily discerned by colourblind users) and the OSGB36 CRS which is specifically used for the UK (and caused me some issues joining the survey data and the shapefile, initially!)
I produced this map as part of a tutorial session I created to introduce the basic skills needed to create choropleth maps in R. Using some simple population data from departmentos (large sub-national administrative units in Colombia), the tutorial allows students to create a series of maps leading to this product, which is then able to tell a political story about inward migration (primarily from Venezuela) using an appropriate data visualization approach
I created this map using data from the International IDEA Gender Quotas Database in order to highlight where different types of gender quotas exist around the world. Part of my research focusses on analysing the mechanisms through which different forms of representation work or don't work as part of local level gender quotas under Nepal's new 2015 constitution. This map allows for a contextualisation of some of that work and a reference point for understanding quotas in a global context. The map was created in R and is plotted using a Gall-Peters projection.
This choropleth map uses data from a recent wave of Arab Barometer to highlight the disparity between countries in the region when analysing the extent to which citizens demand climate action from their governments. The map makes an obvious thematic and aesthetic choice to use a spectrum of green to represent the diversity of opinion.
This map visualises the NDVI values for the island of Vieques calculated with remote sensor data from the Landsat satellite. Normalised Difference Vegetation Index (NDVI) is a measure of the density and health of vegetation calculated using two bands of light recorded by Landsat, as such the greener areas of the image (with values closer to 1) represent more heavy vegetation areas. This map was created in R, including both the NDVI calculations and the choropleth plotting, with the pixels representing the 30m square resolution of the data.
This map represents an attempt to georeference a publicly available drawn representation of various historical boundaries in the Golan Heights area. This was done by georeferencing the image by hand in QGIS onto a topographical basemap, revealing how the geography of the area has been key to its contestation throughout the 20th century. With the flat, elevated territory to the East of Sea of Galilee juxtaposing with the Terrain between there and the coast, the overlaid changing boundary lines represent the priority of military powers to control a strategically valuable location. The original image is shown more clearly as an inset on the left hand side of the map.
This map represents population density in Nepal through a 3 dimensional spike map. Visually, it offers an intuitive communication of the both the heavy concentration of people into a few cities, primarily Kathmandu, the capital, and the relative emptiness of swathes of the country in the North where Himalayan geography makes largescale settlement unlikely. This was created using the rayshader package in R and publicly available population data from OCHA. The final product of this process is actually a fully interactive 3D model, and is represented here just as an image of that model.
This map was created in R based on a tutorial offered by Milos Popovic. It utilises geocoded precipitation data available through the pRecipe package and plots it over a shapefile of the UK, using rayshader to render a three dimensional image highlighting areas of greater rainfall as elevated points. This map represents the UK's mean rainfall per area across the period 1979-2023.
This small collection of maps showcases a series of streetmaps I created using data from the open street map project to represent the highly contrasting urban environments of three cities I have called home. On the top left the city of South Bend demonstrates a relatively ordered grid system-style layout with clear North-South and East-West road systems. The larger image on the left represents Kathmandu in Nepal, where small, winding streets offer an insight into the city's organic growth and clusters of especially tightly packed streets identify the city's origins. Finally on the bottom left the streetmap of Nablus, Palestine shows how topography can dictate urban design, with the streets of the city defined by the valley it sits in and the necessity of avoiding the direct steep ascents of the two mountains that create that valley. All three were made in R using the osmdatapackage.
This map was created as part of my first engagements with nighttime lights data, a commonly utilised measure in social science and a relatively reliable proxy for economic activity. This particular map details the processed VIIRS data from one specific night in June 2024 across the entire country of Tunisia.
I created the first part of this map in R using the blackmarbler package which links to NASA's Black Marble data. I then exported the nighttime lights data as a geoTIFF file and completed the map in QGIS by overlaying it on an ESRI terrain basemap.