Archive for the ‘Mapping and Development’ Category

About Quick-Service Mapping and Lines in the Sand

April 4th, 2015

A walk on the beach along the still-frozen Georgian Bay has helped me sort some thoughts regarding fast food cartography, quick-service mapping, and naturally occurring vs. artificial lines in the sand … but first things first: This post refers to a debate about Twitter mapping and neo-cartography that is raging on blogs across the planet and will flare up in the Geoweb chat on Twitter this Tuesday, https://twitter.com/hashtag/geowebchat. Update: #geowebchat transcript prepared by Alan McConchie available at http://mappingmashups.net/2015/04/07/geowebchat-transcript-7-april-2015-burger-cartography/.

Lines in the sand (Photos: Claus Rinner)

Lines in the sand (Photos: Claus Rinner)

A few days ago, The Atlantic’s CityLab published an article entitled “Why Most Twitter Maps Can’t Be Trusted”, http://www.citylab.com/housing/2015/03/why-most-twitter-maps-cant-be-trusted/388586/. There have been other cautions that Twitter maps often just show where people live or work – and thus where they tweet. Along similar lines, a comic at xkcd illustrates how heatmaps of anything often just show population concentrations – “The business implications are clear!”, https://xkcd.com/1138/.

The CityLab article incited Andrew Hill, senior scientist at CartoDB and mapping instructor at New York University, to respond with a polemic “In defense of burger cartography”, http://andrewxhill.com/blog/2015/03/28/in-defense-of-burger-cartography/. In it, Hill replies to critics of novel map types by stating “The dogma of cartography is certain to be overturned by new discoveries, preferences, and norms from now until forever.” He likens the good people at CartoDB (an online map service) with some action movie characters who will move cartography beyond its “local optima [sic]”. Hill offers his personal label for the supposedly-new “exploratory playfulness with maps”: burger cartography.

Examples of CartoDB-based tweet maps in the media (Source: Taylor Shelton)

Examples of CartoDB-based tweet maps in the media (Source: Taylor Shelton)

The core portion of Hill’s post argues that CartoDB’s Twitter maps make big numbers such as 32 million tweets understandable, as in the example of an animated map of tweets during the 2014 soccer world cup final. I find nothing wrong with this point, as it does not contradict the cautions against wrong conclusions from Twitter maps. However, the rest of Hill’s post is written in such a derogatory tone that it has drawn a number of well-thought responses from other cartographers:

  • Kenneth Field, Senior Cartographic Product Engineer at Esri and an avid blogger and tweeter of all things cartography, provides a sharp, point-by-point rebuttal of Hill’s post – lamenting the “Needless lines in the sand”, http://cartonerd.blogspot.co.uk/2015/03/needless-lines-in-sand.html. The only point I disagree with is the title, since I think we actually do need some lines in the sand (see below).
  • James Cheshire, Lecturer and geospatial visualization expert at University College London, Department of Geography, supports “Burger Cartography”, http://spatial.ly/2015/03/burger-cartography/, but shows that “Hill’s characterisation of cartography … is just wrong”.
  • Taylor Shelton, “pseudopositivist geographer”, PhD candidate at Clark University, and co-author of the study that triggered this debate, writes “In defense of map critique”, https://medium.com/@kyjts/in-defense-of-map-critique-ddef3d5e87d5. Shelton reveals Hill’s oversimplification by pointing to the need to consider context when interpreting maps, and to the “plenty of other ways that we can make maps of geotagged tweets without just ‘letting the data speak for themselves’.”

Extending the fast food metaphor, CartoDB can be described as a quick-service mapping platform – an amazing one at that, which is very popular with our students (more on that in a future post). I am pretty sure that CartoDB’s designers and developers generally respect cartographic design guidelines, and in fact have benefited commercially from implementing them. However, most of us do not live from fast food (= CartoDB, MapBox, Google Maps) alone. We either cook at home (e.g., R with ggplot2, QGIS; see my previous post on recent Twitter mapping projects by students) or treat ourselves to higher-end cuisine (e.g., ArcMap, MapInfo, MAPublisher), if we can afford it.

I fully expect that new mapping pathways, such as online public access to data and maps, crowdmapping, and cloud-based software-as-a-service, entail novel map uses, to which some existing cartographic principles will not apply. But dear Andrew Hill, this is a natural evolution of cartography, not a “goodbye old world”! Where the established guidelines are not applicable, we will need new ones – surely CartoDB developers and CartoDB users will be at the forefront of making these welcome contributions to cartography.

MacEachren's Some Truth with Maps (Source: Amazon.com)

MacEachren’s Some Truth with Maps (Source: Amazon.com)

While I did not find many naturally occurring lines in the Georgian Bay sand this afternoon, I certainly think society needs to draw lines, including those that distinguish professional expertise from do-it-yourselfism. I trust trained map-makers (such as our Geographic Analysis and Spatial Analysis graduates!) to make maps that work and are as truthful as possible. We have a professional interest in critically assessing developments in GIS and mapping technologies and taking them up where suitable. The lines in the sand will be shifting, but to me they will continue to exist: separating professional and DIY cartographers, mapping for presentation of analysis results vs. exploratory playing with maps, quantitative maps vis-a-vis the map as a story … Of course, lines in the sand are pretty easy to cross, too!

Twitter Analytics Experiments in Geography and Spatial Analysis at Ryerson

April 3rd, 2015

In my Master of Spatial Analysis (MSA) course “Cartography and Geographic Visualization” in the Fall 2014 semester, three MSA students experimented with geospatial analysis of tweets. This post provides a brief account of the three student projects and ends with a caution about mapping and spatially analyzing tweets.

Yishi Zhao wrote her “mini research paper” assignment about “Exploring the Thematic Patterns of Twitter Feeds in Toronto: A Spatio-Temporal Approach”. Yishi’s goal was to identify the spatial and thematic patterns of geolocated tweets in Toronto at different times of day, as well as to explore the use of R for spatio-temporal analysis of the Twitter stream. Within the R platform, Yishi used the streamR package to collect geolocated tweets for the City of Toronto and mapped them by ward using a combination of MapTools, GISTools, and QGIS. Additionally, the tm package was used for text mining and to generate word clouds of the most frequent words tweeted at different times of the day.

Toronto tweets per population at different times of day - standard-deviation classification (Source: Yishi Zhao)

Toronto tweets per population at different times of day – standard-deviation classification (Source: Yishi Zhao)

Frequent words in Toronto tweets at different times of day (Source: Yishi Zhao)

Frequent words in Toronto tweets at different times of day (Source: Yishi Zhao)

One general observation is that the spatial distribution of tweets (normalized by residential population) becomes increasingly concentrated in downtown throughout the day, while the set of most frequent words expands (along with the actual volume of tweets, which peaked in the 7pm-9pm period).

MSA student Alexa Hinves pursued a more focused objective indicated in her paper’s title, “Twitter Data Mining with R for Business Analysts”. Her project aimed to examine the potential of geolocated Twitter data towards branding research using the example of singer Taylor Swift’s new album “1989”. Alexa explored the use of both, the streamR and twitteR packages in R. The ggplot2, maps, and wordcloud packages were used for presentation of results.

Distribution of geolocated tweets and word cloud referring to Taylor Swift (Source: Alexa Hinves)

Distribution of geolocated tweets and word cloud referring to Taylor Swift (Source: Alexa Hinves)

Alexa’s map of 1,000 Taylor Swift-related tweets suffers from a challenge that is common to many Twitter maps – they basically show population distribution rather than spatial patterns that are specific to tweet topics or general Twitter use. In this instance, we see the major cities in the United States lighting up. The corresponding word cloud (which I pasted onto the map) led Alexa to speculate that businesses can use location-specific sentiment analysis for targeted advertising, for example in the context of product releases.

The third project was an analysis and map poster on “#TOpoli – Geovisualization of Political Twitter Data in Toronto, Ontario”, completed by MSA cand. Richard Wen. With this project, we turn our interest back to the City of Toronto and to the topic of the October 2014 municipal election. Richard used similar techniques as the other two students to collect geolocated tweets, the number of which he mapped by the 140 City neighbourhoods (normalized by neighbourhood area – “bubble map” at top of poster). Richard then created separate word clouds for the six former municipalities in Toronto and mapped them within those boundaries (map at bottom of poster).

#TOpoli map poster - spatial pattern and contents of tweets in Toronto's mayoral election 2015 (Source: Richard Wen)

#TOpoli map poster – spatial pattern and contents of tweets in Toronto’s mayoral election 2015 (Source: Richard Wen)

Despite the different approach to normalization (normalization by area compared to Yishi’s normalization by population), Richard also finds a concentration of Twitter activity in downtown Toronto. The word clouds contain similar terms, notably the names of the leading candidates, now-mayor John Tory and candidate Doug Ford. An interesting challenge arose in that we cannot tell just from the word count whether tweets with a candidate’s name were written in support or opposition to this candidate.

The three MSA students used the open-ended cartography assignment to acquire expertise in a topic that is “trending” among neo-cartographers. They have already been asked for advice by a graduate student of an environmental studies program contemplating a Twitter sentiment analysis for her Master’s thesis. Richard’s project also led to an ongoing collaboration with journalism and communication researchers. However, the most valuable lesson for the students and myself was an increased awareness of the pitfalls of analyzing and mapping tweets. These pitfalls stem from the selective use of Twitter among population subgroups (e.g., young professionals; globally the English-speaking countries), the small proportion of tweets that have a location attached (less than 1% of all tweets by some accounts), and the limitations imposed by Twitter on the collection of free samples from the Twitter stream.

I have previously discussed some of these data-related issues in a post on “Big Data – Déjà Vu in Geographic Information Science”. An additional discussion of the cartography-related pitfalls of mapping tweets will be the subject of another blog post.

A Raster-Based Game of Life Using Python in QGIS

March 8th, 2015

Blog post authored by Richard Wen and Claus Rinner

A great way to demonstrate the manipulation of geospatial raster data is Conway’s Game of Life [1]. The “game” starts with a grid (“board”) of binary cells, which represent either alive (populated) or dead (empty) states. Each cell interacts with its eight adjacent neighbours to determine its next state. At each iteration of the game clock, the following rules are applied [1]:

  • A live cell with less than two or more than three live neighbours dies (under-population, overcrowding).
  • A live cell with two or three live neighbours continues to live.
  • A dead cell with three live neighbours becomes alive (reproduction).

The free and open-source Geographic Information System (GIS) software package QGIS [2] offers support for scripting with the Python programming language (pyQGIS module), which enables the use of powerful libraries such as NumPy and GDAL for dealing with raster data. Numerical Python (NumPy) [3] is a package developed for Python that is geared towards scientific computation with support for multi-dimensional arrays and matrices. The Geospatial Data Abstraction Library (GDAL) [4] is a library for translating raster and vector geospatial data formats available as a binding for Python.

Using NumPy, GDAL, and pyQGIS, we implemented the Game of Life, where NumPy manipulates the arrays, GDAL handles reading and writing of the raster data, and pyQGIS visualizes the rasters and their relative changes. The source code was written by Master of Spatial Analysis student Richard Wen with input from Dr. Claus Rinner and is available at https://github.com/rwenite/QGIS_RasterArray. The project was inspired by Anita Graser’s visit to Ryerson’s Lab for Geocomputation in October 2014, during which Anita developed a vector-based version of the Game of Life in QGIS (see http://anitagraser.com/2014/11/16/more-experiments-with-game-of-life/).

Our implementation takes an object-oriented approach, in which an object of a Game of Life class is instantiated and the gaming board is updated with the cycle() method using the QGIS python console. The core function is the manipulation of individual raster cells based on a coded algorithm – in this case, the rules defined by the Game of Life.

Let’s start by initializing and cycling a gaming board using default parameters:

# Instantiate a starting board
x = GameofLife()

game-of-life_fig1a

# Cycle the board twice
x.cycle(2)

game-of-life_fig1

The gaming board may be initialized with a random raster, a filled raster, a custom raster, or from a pre-defined raster file:

# The default is a random raster, we can set the width and height as well
x = GameofLife(width=3,height=5)
# Cycle the board
x.cycle()

game-of-life_fig2

# Fill a cells object with 1s
y = Cells(inRaster=1)
# Create a raster with the filled cells object in the directory
y.toRaster("path\\to\\filledraster\\file.tif")
# Instantiate a starting board with the filled raster
x = GameofLife(raster="path\\to\\filledraster\\file.tif")
# Cycle the board
x.cycle()

game-of-life_fig3

# Generate a raster from a list of tuples
y=Cells(inRaster=[
(0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0),
(0,0,1,0,0,1,0,0),
(0,0,0,0,0,0,0,0),
(0,0,1,0,0,1,0,0),
(0,0,0,1,1,0,0,0),
(0,0,0,0,0,0,0,0),
(0,0,0,0,0,0,0,0)])
# Create a raster with the custom cells object in the directory
y.toRaster("path\\to\\customraster\\file.tif")
# Instantiate a starting board with the custom raster
x = GameofLife(raster="path\\to\\customraster\\file.tif")

game-of-life_fig3b

# Instantiate a starting board with a raster
x = GameofLife(raster="path\\to\\raster\\file.tif")

game-of-life_fig4a

Date source: City of Toronto Open Data [5]

Some other interesting features include changing animation speed, jumping cycles, and applying customized layer styles:

# Adjust delay to 3 seconds
x.speed=3
# Cycle 10 times normally
x.cycle(10)
# Cycle 5 times and display every 2nd cycle
x.cycle(5,2)
# Set the style to the defined qml file
x.style = “path\\to\\qml\\style\\file.qml”

This post focuses on the functionality of the program, while its inner workings can be grasped from comments in the Python source code posted at https://github.com/rwenite/QGIS_RasterArray. The code was written and tested for QGIS 2.6; feedback on any issues is most welcome. The use of a NumPy array to iterate through the grid cells was found in an answer by user “gene” on GIS StackExchange [6]. Reading and processing raster data does have its challenges. When dealing with large grids, reading raster data in blocks rather than as a whole is advisable, because there may not be enough RAM to store an entire file at once [7].

The aim of implementing the Game of Life with Python and QGIS is to demonstrate some fundamental concepts of raster data analysis and cellular automata modeling, both of which have important applications in Geography and GIS. Existing QGIS functionality and scripts for raster processing seem to focus more on low-level input/output operations than higher-level analysis functions. For example, we did not find advanced local and focal raster operations in QGIS’ raster calculator. Thus, we envision that the RasterArray code could serve as a basis for expanding raster analysis in QGIS. The code will also be used in a yet-to-be-written lab assignment in GEO641 “GIS and Decision Support” in Ryerson’s BA in Geographic Analysis program.

 

References:

[1] Wikipedia, Conway’s Game of Life
http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life

[2] QGIS
http://www2.qgis.org/en/site/

[3] NumPy, Numerical Python
http://www.numpy.org/

[4] GDAL, Geospatial Data Abstraction Library
http://trac.osgeo.org/gdal/wiki/GdalOgrInPython

[5] Toronto Open Data, Regional Municipal Boundary
http://www.toronto.ca/open

[6] How to do loops on raster cells with python console in QGIS?
http://gis.stackexchange.com/questions/107996/how-to-do-loops-on-raster-cells-with-python-console-in-qgis

[7] Chris Garrard, Utah State University, Reading Raster Data with GDAL
http://www.gis.usu.edu/~chrisg/python/2008/os5_slides.pdf

 

Thought Spot – Crowdmapping of Mental Health and Wellness Resources

December 10th, 2014

Thought Spot is a project designed by post-secondary students to support mental health and wellbeing among Toronto-area youth. The main feature is the online map at http://mythoughtspot.ca/, which is based on the Ushahidi crowdsourced mapping platform. The Thought Spot project was initiated at the Centre for Addiction and Mental Health (CAMH), in collaboration with the University of Toronto, OCAD, and Ryerson. The map allows students to find mental health and wellness resources in ­their geographic area, without the need for an intermediary (parent, teacher, physician). The mapped information originates from ConnexOntario and Kids Help Phone data as well as data that were crowdsourced from members of the target audience.

thoughspot-screenshot

Ryerson Master of Spatial Analysis (MSA) candidate Heather Hart took a lead role in designing the Thought Spot map (shown above), bringing unique geospatial expertise to the table of the project’s student advisory board. Through her MSA practicum placement with a different research group at CAMH, Heather got in contact with the Thought Spot team and brought the funding for her own summer position to Ryerson, to devote half of her time to ensuring that the project’s crowdmapping would be successful. Heather’s involvement culminated in co-organizing a Thought Spot hackathon at Ryerson’s Digital Media Zone in October 2014, which led to the ongoing development of a mobile version of the Thought Spot map.

photo-thoughtspot-heather

This photo shows Heather at GIS Day at Ryerson on November 19th, 2014, presenting the Thought Spot project to an interested University audience. In collaboration with Environmental Applied Science and Management PhD candidate Victoria Fast, Heather has now also submitted a conference abstract about “Crowd mapping mental health promotion through the Thought Spot project”. The abstract brings together Victoria’s extensive expertise in volunteered geographic information systems and Heather’s on-the-ground experience with the Thought Spot project. Their presentation at the annual meeting of the Association of American Geographers in April 2015 is part of the “International Geospatial Health Research” theme.

It is wonderful to see two enterprising Geography graduate students contribute to supporting mental health and wellbeing on campus, a goal that the University is committed to. At the same time, the Thought Spot project informs Heather’s thesis research on the role of maps in evidence-based health care decision-making and Victoria’s dissertation on crowdmapping of local food resources.

Thirty-Two Thousand One Hundred Eighty-Nine Points and Counting

December 6th, 2014

In another little mapping experiment with QGIS and open data from the City of Toronto, I visualized the 32,189 locations of [type-of-incident-withheld] that were recorded in Toronto from 1990 to 2013. I put out a little quiz about this map on Twitter, so I will only reveal what the points represent towards the end of this post. However, the dataset is readily available from Toronto’s open data catalog, both in tabular and GIS-ready Shapefile format.

According to a report by Global News, City crews on occasion have to deal with 20-25 of these incidents a day. As part of their data journalism, Global News created a hexagonal heatmap of the 1990-2013 data, see their article [type of incident will be disclosed].

In contrast, I mapped each point individually using lighter shades of blue for more recent years. While it is often recommended to use the darker and/or more saturated end of a colour scheme for the more important values (arguably the more recent incidents), with the ever more popular black map background, this approach is inverted: the lighter symbols will create the greater contrast, and thus appropriately represent the more important, often the larger, values. The boundaries shown in the background are City wards.

blue-dots-across-toronto_96dpi

As I finish teaching GEO241, our 2nd-year Cartography course in the BA in Geographic Analysis program, I am still having trouble identifying the thematic map type implemented here. It is not a dot density map, as a dot density map uses a unit value (could be seen as 1 dot = 1 incident) and places dots within the area for which the data were collected, but not at the exact location of occurrence. The same reasoning applies to Dr. John Snow’s map of cholera death in London 1854, which is not a dot (density) map either.

Instead, I think this map can be considered a proportional symbol map, where the point symbols at real point locations — not conceptual points such as Census tract centroids — are defined in proportion to a variable (BREAK_YEAR), yet not in terms of their size but in terms of their lightness. Clicking on the above teaser will open the full map with the title Water Main Breaks, City of Toronto, 1990-2013. So yes, there were a whopping 32,189 water main breaks in the City of Toronto during those 24 years! This situation is expected to worsen with the aging municipal infrastructure, see for example the Toronto Star’s 2010 article with a map showing downtown water mains built pre-1900. And it is not a new phenomenon either, as shown by this lovely photograph from the City of Toronto Archives (Fonds 200, Series 372, Subseries 72, Item 31), dated May 3, 1911:

Fonds 200, Series 372, Subseries 72 - Toronto Water Works photog

Toronto’s Traffic Lights Re-Visited and Animated

May 30th, 2014

My map of Toronto’s traffic signals described in a post on April 4th, 2014, was recently published on the title page of Cartouche, the newsletter of the Canadian Cartographic Association (CCA). This is my first-ever published map that is stand-alone, not included in an article or other text document! Here is a screenshot of the newsletter title:

screenshot-cartouche-title-spring2014

Motivated by this unexpected outcome and using the occasion of the launch event of Maptime Toronto on May 29th, 2014, I wanted to try animating the dots representing the traffic signals. More precisely, each traffic light should iterate through a green-yellow-red sequence, and each mid-block pedestrian crossing should go through an off-blinking-off sequence. I was aiming for an animated GIF image with ten frames displayed in a continuous loop.

To create the colour sequences for each dot in QGIS, I copied the last digit of an existing  feature ID from the City of Toronto traffic signals data table into a new field to act as a random group assignment. Using a suggestion by Michael Markieta, I then created nine additional integer fields and cycled through the group numbers by adding 1. To keep these numbers in the 0…9 range, I used QGIS’ “modulo” function, e.g. Cycle1 = (“Cycle2” + 1) % 10. I then assigned the green, yellow, and red dot symbols from the static traffic lights map as a categorized “style” to different group numbers. Finally, I manually iterated the symbology through the ten group columns and took a screenshot each time. I put these together in the animated GIF shown below.

animation_25

I must admit that I am not super convinced of the outcome. Maybe, ten frames are not enough to overcome the clocked appearance of the traffic signal system. But at least, things are moving now :)

It is important to note that this animation does not show the real-time status of the traffic lights! In fact, there is only one dot for an entire intersection that would include two to four sets of vehicle traffic lights, plus pedestrian lights, etc. – all represented by the same green-yellow-red cycle on the map. I also made the assumption that the green and red phases are the same length (4 out of 10 ticks each, with the remaining 2 ticks used for the yellow phase). You will note that the mid-block crossings have an active phase with three on-off cycles followed by a longer off phase. In this case, it would be fancier to individually control each crossing and have it come on randomly.

 

Geographic Analysis student makes a splash with global flight maps

May 30th, 2013

Ryerson University’s graduating Geographic Analysis and incoming Master of Spatial Analysis (MSA) student, Michael Markieta, is making a splash in the UK and North-American media with his beautiful maps of global flight connectivity.

On May 23rd, the UK Daily Mail asked “Can you spot your holiday? The incredible images that reveal exactly where we fly every day” (http://www.dailymail.co.uk/sciencetech/article-2329443/The-incredible-images-reveal-fly-New-images-worlds-flight-paths.html). The next day, the Toronto Star picked up the map images and wrote “Ryerson student produces stunning images of every flight in the world. Our highly interconnected world becomes apparent in a project mapping all the flight paths on the planet” (http://www.thestar.com/news/gta/2013/05/24/ryerson_student_produces_stunning_images_of_every_flight_in_the_world.html).  Metro News Toronto included one of the maps and a short text entitled “Have a visually nice flight” in their May 24th print edition. On May 27th, BBC News posted the series of nine global flight paths visualizations (http://www.bbc.co.uk/news/in-pictures-22657086), followed by a collection of “Five interpretations” by an art critic, environmentalist, aviation consultant, data visualization expert, and philosopher (http://www.bbc.co.uk/news/magazine-22690684). Fox News has published yet another perspective on “Amazing images show airline flight paths across the globe” (http://www.foxnews.com/travel/2013/05/29/amazing-images-show-airline-flight-paths-across-globe/).

Michael first created maps from the OpenFlights airport and airline route databases in September 2011 for his personal blog at http://www.spatialanalysis.ca/2011/global-connectivity-mapping-out-flight-routes/. On his parttime position with global transportation planning and engineering firm Arup’s Toronto office, he redesigned the maps, which were first posted on Arup’s online magazine at http://www.arupconnect.com/2012/12/14/global-flight-paths/.

It is no surprise that a graduate of Ryerson’s Geography department is able to produce intriguing visualizations of a large geospatial dataset. The same data have been mapped by others, and there are alternative ways to look at air traffic, including live mapping of actual flight routes and airplane positions. The journalists reporting on Michael’s maps have somewhat exaggerated the practical uses of such maps, e.g. for communicable disease tracking. However, the blog post by James Cheshire, a lecturer at University College London (UK), on “What’s so Great About a World Flight Paths Map?” at http://spatial.ly/2013/05/great-world-flight-paths-map/ explains three elements that make Michael Markieta’s work so appealing and popular (with the BBC news approaching 15,000 social media shares at the time of my last update, see screenshot below).

markieta-arup-maps_shared-on-BBC