My Account     Contact Us     Cart

Map-making for the #30DayMapChallenge: Day 4 – Hexagons

Yesterday was Day 4 of the #30DayMapChallenge, with the goal being to create a map using “Hexagons”. In the spirit of the challenge, we took a not-so-serious approach to create a fun map of “Sharknado Risk” based on the 2013 film “Sharknado” using MAPublisher tools and a really neat hexbin dataset for the United States. This map was in part created for NACIS 2021, and you can see how we created the map by watching the full video presentation included below. This blog also includes a few supplementary notes if you wish to follow along.

What exactly is a Sharknado?

A sharknado is a fictional meteorological phenomenon that occurs when a large tornado scoops up some sharks, transports them some distance, and finally disperses across a populated area. Generally speaking, if a given area is close to potential shark habitats (be it an aquarium, a zoo, or even the ocean) and has a high frequency of tornadoes, the area is more “at-risk” of experiencing a sharknado. To that end, we gathered some great open datasets to help us map this risk. We collected a shapefile documenting point locations for every single tornado in the country dating back to 1950. With this dataset, we can determine the relative frequency of tornadoes for a given area. From OpenStreetMap, we estimated potential locations for sharks by collecting point coordinates for every aquarium, marine park, aquatic zoo, and ocean-facing beach. We used Overpass Turbo to query and extract these points to a spatial dataset and imported them into Illustrator using MAPublisher. Check out this great tutorial (produced by Steve Spindler!) that covers techniques for importing Overpass Turbo data into MAPublisher. The tutorial was part of our ongoing Mapping Class series, a video-focused series that provides helpful tips, techniques, and workflows from real-world cartographers.

Aggregate data with Spatial Join

Since the challenge of the day is hexagons, we needed a way to get our messy point data into our clean “hexbin” format. The Spatial Join tool allows us to aggregate our point data (Tornado and Shark Locations) into a single hex-grid polygon dataset.

Credits to Daniel Huffman’s projectlinework.org for making this dataset available!

The Spatial Join tool includes several different options for “spatial relationships” that will determine how our point data is joined to the new hex-grid. We can also specify how the tool will aggregate the attribute information for our joined data. In this case, we join our Tornado point data based on a “contains”  spatial relationship. This will aggregate all tornado points that are “contained” within a given hexbin. We also specify that the tool should aggregate the attribute information for all “contained” tornados by tallying up the number of tornado points within each hex. Since we know the dataset spans a 69-yr period, we can easily calculate the average annual tornado frequency for each hexagon.

We apply a similar technique to our shark location data, this time specifying a “near” spatial relationship. We used some back-of-the-envelope math to estimate that a Sharknado (as it appears in the film) lasts substantially longer and travels farther than a normal tornado, meaning sharks as far away as 150 miles still present a potential risk. We can specify a search range of 150 miles and this will be applied to our spatial relationship as a cut-off distance. 

 

Edit attributes with expressions

We assumed that Sharknado risk is highest when a given area is prone to tornadoes and also has a high concentration of potential shark locations. Given this, we came up with a basic equally-weighted, bi-variate risk index to assign a “Sharknado Risk” score based on these two variables. To calculate this score for each hexagon in our hexbin grid, we applied some custom expressions using MAP Attributes. First, we assigned a Tornado risk score from 1 to 6 based on the low to high frequency of tornadoes. We assigned a similar score for “Shark proximity” based on the concentration of potential shark locations. Finally, we combined these values into 36 unique scores to evaluate sharknado risk.

Stylize maps easily with MAP Themes

The final step is to stylize our map and create a layout. With MAP Themes, we can create rules-based stylesheets to easily stylize our map data in no time. MAPublisher comes with a great selection of built-in MAP Swatches, including several color brewer-based swatches that work great for choropleth-style maps like this. We used these swatches to create a custom, bi-variate swatch group to visualize each score of our “Sharknado Risk Index”. The MAP Themes tool also provided a neat data distribution viewer, which also allows us to inspect a histogram of our dataset. Although we used discrete categories for each of our risk scores, the data distribution viewer is very useful when working with continuous datasets since it allows you to see how your bin-widths will affect the display of colour on your choropleth.

The final touches

With stylization complete, Day 4 of the #30DayMapChallenge is almost in the bag. We can create a north arrow, and a scale bar and create a custom legend to facilitate easy interpretation. Since we are still within an Illustrator environment, we can use all the powerful native illustrator tools to add graphical design elements, text, and artwork to create a fun, infographic-style map. Although we were happy to call the map finished at this point, the great thing about making maps is there is also room to add more. For example, we might try using LabelPro to create custom labels that mark high and low-risk areas, or we could create insets to highlight specific regions of interest. The possibilities are endless!

We had a great time putting together this fun map for the #30DayMapChallenge, and we are excited to see what we can do for the remaining themes on the calendar! For those of you who are also making maps for the challenge, a reminder that the Avenza Map Competition is still accepting submissions. Share your map, compete with other map-makers in the community, and win some great prizes!

See a PDF version of the map here.






Blog Archive

December 2024 (2)
November 2024 (1)
October 2024 (1)
November 2024 (1)
September 2024 (1)
August 2024 (2)
July 2024 (1)
September 2024 (1)
June 2024 (1)
July 2024 (1)
May 2024 (1)
April 2024 (2)
May 2024 (1)
March 2024 (2)
February 2024 (1)
January 2024 (1)
December 2023 (1)
November 2023 (2)
October 2023 (2)
September 2023 (1)
August 2023 (1)
July 2023 (3)
June 2023 (1)
February 2023 (1)
January 2023 (2)
December 2022 (1)
November 2022 (2)
October 2022 (2)
September 2022 (1)
May 2023 (1)
August 2022 (2)
July 2022 (1)
June 2022 (2)
May 2022 (1)
February 2022 (1)
January 2022 (2)
August 2022 (1)
December 2021 (3)
November 2021 (5)
October 2021 (1)
September 2021 (3)
August 2021 (2)
July 2021 (1)
June 2021 (2)
May 2021 (2)
April 2021 (2)
March 2021 (3)
April 2021 (1)
February 2021 (1)
January 2021 (1)
November 2020 (1)
October 2020 (1)
June 2020 (2)
May 2020 (1)
April 2020 (3)
March 2020 (2)
December 2019 (1)
November 2019 (2)
September 2019 (1)
August 2019 (1)
July 2019 (1)
June 2019 (3)
May 2019 (4)
April 2019 (2)
March 2019 (1)
February 2019 (2)
January 2019 (3)
December 2018 (2)
November 2018 (1)
October 2018 (1)
September 2018 (2)
August 2018 (4)
July 2018 (2)
June 2018 (1)
July 2018 (1)
June 2018 (4)
May 2018 (1)
April 2018 (2)
March 2018 (4)
February 2021 (1)
February 2018 (1)
January 2018 (1)
November 2017 (1)
October 2017 (2)
August 2017 (2)
July 2017 (1)
March 2017 (1)
February 2017 (2)
January 2017 (2)
November 2016 (1)
January 2017 (1)
November 2016 (1)
October 2016 (2)
May 2016 (1)
March 2018 (1)
April 2016 (2)
December 2015 (2)
June 2015 (1)
May 2015 (1)
April 2015 (2)
December 2014 (4)
October 2014 (2)
May 2014 (4)
February 2014 (1)
October 2013 (3)
April 2013 (1)
January 2013 (2)
August 2012 (1)
October 2012 (1)
July 2012 (3)
May 2012 (2)
January 2012 (2)
August 2011 (1)
July 2011 (2)
June 2011 (2)
May 2011 (2)
March 2011 (1)
February 2011 (1)
January 2011 (5)
December 2010 (1)
November 2010 (1)
December 2010 (1)
November 2010 (1)
October 2010 (1)
August 2010 (4)
July 2010 (2)
June 2010 (3)
May 2010 (2)
April 2010 (2)
March 2010 (2)