Welcome to my GIS portfolio. Below you can browse examples of my work compiled over the past two years.
This portfolio can also be viewed by visiting https://jaxgoodlabs.github.io/GIS_portfolio/.
My name is Patrick Campbell and I’m a recent graduate of Carnegie Mellon University’s Public Policy and Management master’s program (MSPPM). Prior to enrolling at Carnegie Mellon, I worked for over eight years in a wide variety of positions in the areas of environmental science and conservation. My early career was devoted primarily to addressing water quality issues in South Florida, where I worked as an environmental consultant in support of several projects managed by the South Florida Water Management District. During this time, I gained a lot of valuable experience both in water quality and other field sampling techniques as well as in the broader policy environment surrounding the local management of natural resources.
I first became interested in the social applications of data science through my engagement with the Effective Altruism and Data Science for Social Good communities, which seek to apply reason and evidence to determine the most effective ways to benefit others. My interactions with these communities opened my eyes to the depth of need that exists within the public sector both for more high-quality data as well as for the knowledge and skills to put that data to effective use.
This realization is what ultimately led me to Carnegie Mellon, and to Heinz College in particular. As the country’s top-rated program in analytics education with a mission of training students to “turn raw data into solutions for society’s most pressing problems,” the MSPPM program at Carnegie Mellon offered the perfect opportunity to develop the technical competencies I was seeking as well as an ideal environment to practice those skills in a real-world setting—namely, the City of Pittsburgh and its diverse network of organizational partners.
My most recent projects have focused on public interest technologies that help to increase the range and accessibility of social services worldwide, especially as a means of increasing society’s resilience to global threats like climate change.
View my resume here.
In this exercise, I used the Google Maps Platform Styling Wizard to create my own Google Maps basemap, which I’ve named People’s Square. To create the style, I first searched Google for an image (filtered by “marked for resuse” license) whose color scheme matched that of the map style I wanted to create.
I ultimately settled on the following image of People’s Square in Shanghai (photo by f11photo via Adobe Stock, standard license):
I then used Canva’s color palette generator to create a custom color palette based on the image I had chosen.
Back in the Google Maps Styling Wizard, I selected the “Dark” theme to serve as my base template and then proceeded to change the colors of various features using the hex codes from my custom color palette. A screenshot of the final product is displayed below. To access an interactive version of the map style, just click here.
The Night Glacier 2 style was inspired by this image of ice climbers exploring a glacier at night, which I again used Canva to convert into a custom color palette.
The resulting map style is presented below.
Click here to access the interactive version.
The Remote Sensing map style attempts to mimic the typical color scheme of an image generated using remote sensing technology. The image that served as my inspiration for this style is presented below along with the color palette generated from it.
The resulting map style is presented below.
Click here to access the interactive version.
For this exercise, I wanted to make another attempt at executing my concept from last week - which, again, was to use a contrasting color scheme to highlight the specific elements of a municipality’s physical infrastructure (buildings, highways, etc.) used by commons, cooperatives, and other cooperative enterprises. Similar to the previous exercise, I searched for images following a “life and death” theme, where life was represented by living greenery (trees, plants, etc.) and death was represented by burned or desiccated soil or dull, gray concrete. I ended up using this image of a plant sprouting in the desert (left).
A lesson I took away from last week’s assignment was that the role of the basemap in a project like I’ve described is pretty minimal. Most of the contrast I want to draw is between elements of the physical infrastructure, most of which (particularly buildings) is absent from the basemap. For that reason, I decided it was best to use a subtle, low-contrast color scheme for the basemap and give priority to the duller hues, i.e., the browns, taupes, and beiges. I used the greens for their traditional purpose of demarcating parks and natural areas, saving the brighter tones for those map layers I would add later.
To execute my vision, I selected the Modern Antique template. I naturally think of the development of the commons-based infrastructure as a sort of frontiersman/early-explorer sort of enterprise, so I wanted to use a basemap that had an older, antique feel to it. This template also looked like it would work well for the subtle, low-contrast color scheme I had in mind.
A screenshot of my final map style is copied below. (Click here to view the fully interactive version.)
The big test for how effective my basemap is has to do with how well it supports the message I want to communicate with the layers I add later, specifically, buildings, roads, etc. This is where I’d want to focus my attention when QA-ing the final product. At first glance, I’m satisfied with how everything is rendering. I like the general subdued tone of the map and the old-timey feel it has.
One change I’d like to make to improve my final map is to dull the color used for certain parks/natural areas. For whatever reason, the template I used automatically dulled the green for most of these areas but left certain polygons with the full color saturation (see, e.g., the top right corner of Schenley Park in the main screenshot above). Because I don’t want my basemap to compete with added layers (specifically the physical infrastructure layers that are the map’s primary subject), I’d prefer all these areas to be the same shade of green.
One unanswered question, which may affect my comments above, has to do with which additional map layers end up being relevant to the final map, and how my design choices for those features interact with those of my basemap. For example, I mentioned that I want to display large portions of the physical infrastructure layers as background/contextual layers also, using a similar color scheme to those I’ve used for the basemap. (This is necessary, e.g., to highlight those specific portions of that infrastructure that are utilized by cooperative enterprises.) So one thing I’d want to pay special attention to is how well that effect works when it’s being duplicated at both the basemap and feature layers, or if, alternatively, I need to make some adjustments to the basemap to preserve the impact at the feature level.
I. Map with Incident and Evacuation Plans
Mecklenburg, NC Hazardous Incident Report
At 6:32 this evening, a tanker truck carrying chlorine gas was heading westbound on Interstate 85 in Mecklenburg County when the driver lost control of the vehicle. The tanker was damaged in the process and chlorine gas is leaking slowly from the damaged tank into the surrounding area. The incident occurred between the two northbound and southbound lanes of Interstate 77 creating unsafe conditions for anyone located within a two-mile radius of the incident.
Emergency responders are on the scene and have issued an immediate evacuation notice for all households located within the affected area (see the evacuation area on the map below).
Initial reports estimate 15,626 households located within the affected area, representing a population of approximately 47,697 individuals. Temporary shelters have been set up in the half-mile area outside the perimeter of the evacuation zone (light red ring) and are marked on the map with mustard-yellow icons. All evacuees are instructed to seek shelter immediately at the nearest shelter location until the situation has been brought under control. While current weather conditions look favorable to preventing the expansion of the hazard area, the situation is being closely monitored for any changes. For real time updates on the status of the situation, stay tuned to your local public radio station. A special hotline has also been set up to answer questions and provide any additional guidance that may be required as the situation is being resolved. To speak to an attendant, dial 555-5555.
II. Map of Redirected Traffic Patterns and Drive Times to Nearest Hospitals
Below is a proposed text message that the North Carolina DMV can send out that instructs motorists how to deal with the incident. Below that, I have included a map of evacuation routes and the service areas of the nearest fire stations.
An immediate evacuation notice has been issued for all motorists located within two miles of the I-77/I-85 interchange in Mecklenburg County due to the release of toxic chlorine gas in the area. Emergency responders are working to contain the incident and will provide regular updates through your local public radio station. Please call 555-5555 to be notified of the location of the nearest shelter and evacuation routes. If you think you may have been exposed to the hazard, an attendant can provide the location of the nearest hospital and offer guidance on seeking evaluation and treatment.
I. Map of Mississippi elevation/bathymetry
The map below shows the elevation/bathymetry of coastal Mississippi counties with places, types of water, barrier islands, and rivers. A second map is also provided showing a time series of the path of Hurricane Katrina in relation to these features. The time slider has been stopped at the moment the hurricane’s path had just crossed the Mississippi coastline, around 4 pm on Aug. 28, 2005 (see light yellow line at west of map). As you can, the hurricane landed at the southwest corner of Hancock county with a pressure of less than 923 millibars.
II. Map of flooded Mississippi coast after Hurricane Katrina
The map below shows the extent of flooding in the wake of Hurricane Katrina across three coastal counties in Mississippi. Flooding is shown broken down by the type of land-cover it affected, with the unaffected areas displayed with no color.
A total of 1,293,503 acres of land was flooded in the wake of Hurricane Katrina between the three coastal counties. A breakdown of these flooded areas by type of land cover is provided in the table below.
Table 1. Breakdown of flooded areas by type of land cover
III. Map of infrastructure at risk from storm surge
The map below shows the infrastructure and health facilities at risk from the Hurricane Katrina storm surge, which rose to 15 feet above normal sea level. Vast areas were affected with the largest impacts being concentrated around existing wetlands and river systems. The barrier islands to the south were completely inundated by the storm surge, although these areas fortunately appear to have been absent of major infrastructure or facilities.
Below is a screenshot of the 412 Food Rescue data I visualized in Kepler. Like many others, I felt the 3-d view would be most effective for displaying the arcs connecting donor and recipient. I chose a purple-yellow color scheme for maximum contrast and visibility on the dark-themed basemap. To reinforce the altruistic nature of the work, I chose the brightest color (yellow) to represent the recipients, implicitly making the map about them rather than the donors, who are visualized in purple. I thought the gradation effect was nice for providing the context of directionality.
Click here to access the json file for this map.
While exploring my location data in ArcGIS data - which curiously included data just from 2015, 2019 and 2020 - the first thing that struck me was how spotty the coverage was. I had thoroughly expected to see a complete saturation of points throughout my travel range, but for many trips, found only single points representing a final destination. These were long, drawn out car trips, some of them covering multiple days of travel, and yet Google seems to have only collected a single data point from the whole trip.
The two notable exceptions to this rule are my more regular commutes, e.g., between Miami and West Palm Beach when I was living in West Palm Beach and hunting pythons in Miami on the weekends, and longer trips that I took more than once, e.g., my trip from my permanent residence in Jacksonville, FL up to school in Pittsburgh. A lot of my traveling, particularly in Florida. passes through cell-coverage dead zones, so I assume that of the spottiness in data collection owes to that fact. That might also explain the single erroneous point near Fort Walton Beach in the Florida panhandle. While I passed in that general vicinity on one or two occasions during this period, that particular point is pretty far off from any of the routes I would’ve taken.
My dead zone theory is also consistent with the absence of points west of the Tamiami Trail/Krome Ave. intersection in Sweetwater, FL. This area, which passes through Everglades and Big Cypress National Parks, is where I did all my hunting for the python program, but has notoriously poor cell coverage.
The other interesting thing I noticed about my location data is how sprawling my data is around the areas that I live. The first thing I do when I settle into a new place is starting exploring the nearest natural areas with hiking opportunities. Often, the closest locations are maybe a half-hour drive from my apartment in the city, but after a year or two, I’m up to driving two or three hours away to find new parks to explore. This pattern is most noticeable around Pittsburgh (my current residence) and Jacksonville, FL (my permanent residence).
I was surprised at how little order I could discern at a high scale. If I had no special knowledge, I doubt I would be able to discern from the concentration of points alone anything beyond where I lived and where I’ve been. My work and school locations were not at all obvious even at the narrowest zoom ranges (although perhaps referencing what’s located at each of these points in conjunction with the date and time stamps would clue me in).
The location of my home was easier to discern, but still required some fine-combing through the data. Of course, there’s a lot more information embedded in this data than is apparent in the distribution of the points alone, and I imagine that it wouldn’t be difficult to answer these sorts of questions once my data was aggregated with that of other users, since these patterns probably don’t differ too drastically between members of the same general category (e.g., university students).
To see how easily I could extract this sort of information from these data, I used the hexagon binning option in the aggregate points tool to aggregate the number of points located in each tenth mile squared cell. Sure enough, this method resolved all the ambiguity of the previous display. Using a contrasting blue-yellow color scheme made my home and frequent locations pretty unmistakable, as the image below demonstrates.
Overview
This project aims to model the flood risks for a single census tract in Miami, FL. This census tract is currently being analyzed as part of a pilot study by researchers at Miami-Dade College. The methodology developed over the course of this study will eventually be adapted for application to the entire city in order to better anticipate and respond to the threats posed by climate change to public buildings and the communities that they service.
(Updates to the proposed workflow and deliverables are provided at the end of this summary.)
1. Problem Statement
The problem this project aims to solve is how to best leverage FEMA’s Hazus tool for risk assessment, policymaking, and coordinated response in Miami, Florida, especially in the face of rapidly changing climate conditions and rising seas.
A secondary challenge related to the problem defined above is how to design / optimize the workflow for city-wide deployment of the developed methodology. This requires, among other things:
2. End Users
The end users of the products generated by this project are researchers at Miami-Dade College and the City of Miami.
3. Work Plan and Methodology
This project aims to model the flood risks for a single census tract in Miami, FL. This census tract is currently being analyzed as part of a pilot study by researchers at Miami-Dade College for eventual expansion to the entire City of Miami.
The two central elements of the project are (1) the flood model (Hazus Flood Level 1) for the target study area and (2) a documented workflow detailing how the data collection, processing, and cross-platform integration will be accomplished.
Key steps in this workflow include:
My methodology for this project varies according to the different component activities it comprises. For a thorough description of methods employed organized by activity, refer to the accompanying Process Log.
4. Group Members and Roles
Patrick Campbell - Project Manager, GIS Analyst, Data Systems Manager
5. Data Sources
The full set of source data used for this project is detailed in the accompanying Data Documentation file.
6. Final Deliverables
The final deliverables for this project include:
7. Project Updates
Due to difficulties running the Hazus software on my personal laptop, I decided instead to focus on analyses I could execute using the standard ArcGIS Pro suite of tools. The central focus of this effort involved attempting to reproduce several official flood models issued by Miami-Dade County and NOAA. For example, in the figure below, I’ve reproduced NOAA’s model for 9 feet of sea level rise by converting a Digital Elevation Model (DEM) file to a polygon layer representing flooded lands. Details of this and other analyses are thoroughly documented in the accompanying Process Log.
A secondary goal of this project was to troubleshoot various tutorials and flood modeling exercises for possible incorporation into the new Geographic Information Systems for Environmental Awareness and Community Engagement (GISEC) curriculum at Miami-Dade College. “The goal of GISEC is to create a pathway for students in GIS technology and to enhance technological applications of public interest with an emphasis on environmental hazards awareness and community engagement in Miami-Dade County, a minority-majority urban area significantly impacted by, and at ongoing risk for, natural disasters.”1 To this end, I spent a large portion of my time on this project exploring various applications of the ArcGIS Pro Image Classification tools, completing several guided tutorials in the process. The products of these exercises have been included in the final project package. Relevant notes and insights from these exercises are provided in the Process Log, while the Example Tutorial file provides a model of how these analyses might be converted into guided tutorials for use in the classroom.
Click here to view the final report for this project. The interactive final product can be accessed here.
Click here to view the interactive final product.
Click here to view this project on GitHub.
Click here to view this project on GitHub.
Click here to view the final report for this project.
View this map on ArcGIS Online or click here to view the project Story Map. Access the final report here.
Click here to view this project.