Metro Parks Tacoma Activity Registrations Map


Instructions:

A full-screen version of this map can be found here.

The first layer is split into H3 hexagonal cells that demonstrate total recreational enrollments from that particular geographic region. For example, if a cell tooltip indicates a total enrollment number of 5, then people who live in that region registered a total of five times for recreational activities that Metro Parks Tacoma offers. Use the drop-down filters in the top right to filter by season (Summer 2024 or Summer 2023), site, and program (like Youth Athletics or Seniors). Hover over any geographic feature to view specific data for that area. The legend in the bottom left will update if any filters are applied. You can also view the Planning Areas Layer and Census Block Groups layer by clicking them on the right. Lastly, you can toggle off the layer via the checkbox at the top of the application.

Background:

During the early stages of my data analysis internship with Metro Parks Tacoma, I noticed that there was a need for an improved interdisciplinary approach between our data analytics team and our GIS team. I met with many of our organization's program coordinators (the people in charge of planning recreational activities) and learned more about the type of geospatial information they would like to have access to. Up until my time with MPT, the geographic information our program coordinators had access to was strictly limited to Power BI map visuals, which illustrated activity registration info (based on customer residences) by ZIP code. ZIP codes are not particularly insightful for understanding demographic data. They are quite large and oddly shaped, which causes our data to be disproportionately represented and does not allow for much analysis on a granular level. As a result, our programmers essentially disregarded the maps they previously had available to them because the maps did not portray meaningful information about where their customers are coming from.

With my geospatial data analysis background, I quickly thought of a way to fill that need by creating an H3 heat map that better demonstrates where our customers live. I talk about Uber's H3 more in another article, so I will not go too in-depth, but this hexagonal tool is helpful for a few reasons. Hexagons are one of three regular polygons that tesselate—the others being triangles and squares—and they maintain their shape much better under projections, and their neighboring regions are more consistent than the other two tiling systems. H3 tiles also allowed us to achieve our goal of understanding our customer base on a more granular level than ZIP codes.

This map includes a planning areas layer—a layer that our GIS team previously constructed that splits the city of Tacoma into four ordinal geographic sections and a central area. Our organization was already familiar with this layer, and it is useful to consider our data from a regional perspective. The map also includes a census block group layer, which is useful for comparing statistics with census data and understanding activity enrollments from a more neighborhood-focused perspective. The reception for this map from our program coordinators was extremely positive; they were thrilled to have access to meaningful geographic data that they could use to understand where their customers are coming from, how to market to them, make their activities more accessible, etc.

Methodology:

I knew that this would be a difficult feat to pull off. Our customer residential data was stored as latitude and longitude points in our SQL Server, and I needed to construct a very complex SQL query that joined four different views using CTEs. Like the rest of the Story Map I constructed for my internship project, the time frame I focused on was Summer 2024. Our SQL dataset would continually refresh with new information, so I needed a way to work on my map while adjusting for the live changes in data. Because of the complexity of my SQL query, I could not directly query the data into ArcGIS Pro. I accomplished my goals by automating a data extraction process with Python scripts that extracted the relevant data from our SQL Server, configured the data as a geodatabase for ArcGIS Pro, performed several spatial joins with the H3, planning areas, and census block group layers, and overwrote any existing web layer and service definitions on ArcGIS Online. I used Windows Task Scheduler to execute this process daily.

I then started the process of discerning how to develop this web map in an accessible format for our activity programming teams. I have experience developing web maps with ArcGIS Experience Builder, but the layout of Experience Builder apps is a bit clunky, and their features are limited. I had a precise vision for this application that would implement drop-down Power BI-style slicers that allow for the cross-filtering of data. We considered SaaS solutions such as Icon Map Pro, but we realized that the infrastructure for this service did not yet exist for the government cloud. I soon realized that the only way to achieve the customized layout I desired would be by developing the web map myself in JavaScript/Leaflet. The process turned out to be quite quick, thanks to my experience with Leaflet, and I finished the application in about a week. I learned quite a bit about optimizing data processing, since my map relies on a massive amount of geographic data across Washington state that has to be updated on the fly. I streamlined this process by storing the layers as separate HTML files and only counting geospatial data that is visible within the viewport. I also updated my Python script to extract data as geoJSON files to easily implement them within Leaflet.