An Introduction to Geospatial Analysis for Social Work Research
Place shapes life outcomes. Decades of social work research have documented how neighborhood characteristics affect health, educational attainment, employment, and access to services. The zip code where a child grows up predicts life expectancy more reliably than genetic factors (Chetty et al., 2016). Environmental hazards concentrate in low-income communities and communities of color (Bullard, 2000). Access to mental health services varies dramatically across geographic areas, creating what researchers call “service deserts.”

This spatial dimension of wellbeing aligns with the foundations of social work. The person-in-environment perspective has always emphasized that individuals cannot be understood apart from their contexts, and physical environment is a key part of that context. Bronfenbrenner’s ecological systems theory (1979) positions the neighborhood, community, and broader geographic context as critical layers shaping individual outcomes. Geographic Information Systems (GIS) provide tools to operationalize these frameworks, allowing us to systematically measure and analyze the spatial contexts that theory tells us matter.
Rather than relying on intuition about which neighborhoods lack services, we can measure distances, map coverage gaps, and visualize patterns that might otherwise remain invisible.
This post introduces the foundational concepts: what geographic data is and how coordinates work.
Why geographic information matters in social work practice/research
The connection between place and wellbeing has long been central to social work’s theoretical foundations. The person-in-environment perspective, formalized in the 1980s but rooted in earlier ecological thinking, positions the physical and social environment as inseparable from individual functioning (Green at al., 2010). Settlement house workers in the early 1900s created detailed maps of neighborhood conditions, recognizing that poverty, health, and opportunity clustered spatially.
Hull House Maps and Papers (1895) documented the distribution of wages, nationalities, and housing conditions block by block in Chicago, making visible patterns that narrative descriptions alone could not convey.
Contemporary social work continues this tradition with more sophisticated tools. Geographic analysis becomes essential in several common scenarios.
– County health departments need to identify areas where residents must travel unreasonable distances to reach mental health providers.
– Community organizations documenting environmental injustice need to show that industrial pollution disproportionately affects low-income neighborhoods.
– Researchers examining health disparities need to measure whether language-concordant services are distributed equitably across metropolitan areas.
Each of these tasks requires combining (1) attribute data (who has what characteristics, what services exist) with (2) location data (where are people and services located in space). That combination is the foundation of geographic data analysis.
What is GIS?
Geographic Information System (GIS) is software that connects data to locations. The key idea is that GIS data has two components: attributes and geometry.

Let’s think about an example. You have a spreadsheet listing all the homeless shelters in Washtenaw County with their addresses, capacity, and services offered. That’s useful data, but it doesn’t tell you how the shelters are distributed across the county, which neighborhoods lack coverage, or how far clients in different areas must travel. GIS lets you place that data on a map and analyze spatial relationships.
- Attributes are the information you’d see in a regular spreadsheet (e.g., shelter’s name, capacity, and hours of operation)
- Geometry describes where that thing exists in space. For a shelter, the geometry might be a single point representing its address. For a census tract, the geometry would be a polygon outlining the tract’s boundaries.
There are three main geometry types we use in social science data:

| Geometry Type | What It Represents | Examples |
|---|---|---|
| Point | Single locations | Clinic, client’s residence, bus stop |
| Line | Paths or connections | Roads, rivers, transit routes |
| Polygon | Areas with boundaries | Census tracts, zip codes, city limits, school districts |
Understanding which geometry type fits your data is the first step in any GIS project.
From Addresses to Coordinates: Geocoding
Most social work data comes with addresses, not coordinates. Your agency’s client database probably lists street addresses. A survey might ask respondents for their zip code or neighborhood. To put this data on a map, you need to convert addresses into latitude and longitude coordinates. This process is called geocoding.
Geocoding works by matching an address to a reference database of known locations. When you type “1080 S University Ave, Ann Arbor, MI” into Google Maps, it geocodes that address to approximately 42.2747 latitude, -83.7372 longitude. Several services offer geocoding: Google’s Geocoding API, the Census Bureau’s free geocoder, and open-source options like Nominatim (which uses OpenStreetMap data).
Here’s a simple example using the free geopy library in Python:
from geopy.geocoders import Nominatim
# Create a geocoder object
geolocator = Nominatim(user_agent="sw672_demo")
# Geocode an address
location = geolocator.geocode("1080 S University Ave, Ann Arbor, MI")
print(f"Latitude: {location.latitude}, Longitude: {location.longitude}")
A few things to know about geocoding.
- It’s not always accurate. Rural addresses, new construction, and non-standard address formats can produce errors. Always spot-check your results on a map.
- When geocoding many addresses, you’ll need to handle rate limits (most free services restrict how many requests you can make per second) and failed matches.
- Geocoding introduces privacy considerations. Converting a client’s home address to coordinates creates precise location data that requires careful handling.
You’ll often receive data that’s already been geocoded, but understanding the process is also needed in case you have only address / zip-code / census tract information. Here is a detailed guide on geocoding using Python.
Understanding Coordinates: Latitude and Longitude
Every location on Earth can be identified by two numbers: (1) latitude and (2) longitude. Think of latitude as your position on a ladder that runs from the South Pole to the North Pole. The equator sits at 0 degrees latitude, the North Pole at 90 degrees, and the South Pole at -90 degrees. Longitude measures your position on a circle around the Earth, running through both poles. The Prime Meridian (running through Greenwich, England) is 0 degrees longitude, with values running from -180 to 180 degrees as you go around the globe.

Here’s an example. The University of Michigan School of Social Work in Ann Arbor sits at approximately 42.28 degrees latitude (north of the equator) and -83.74 degrees longitude (west of the Prime Meridian). If you move east to Detroit, you’re at about 42.33 latitude, -83.05 longitude. Notice that latitude stays similar (both cities are at roughly the same distance from the equator) while longitude changes as you move east-west.
A common point of confusion: latitude comes first or longitude comes first? Unfortunately, different systems use different conventions. Most geographic information systems (GIS) use latitude first, then longitude. But some mapping libraries use longitude first because it corresponds to (x, y) coordinates on a graph. When your points end up in the ocean, this is often why.

The technical term for a specific latitude-longitude system is a Coordinate Reference System (CRS). The most common one, used by GPS and most web maps, is called WGS84 or EPSG:4326. You don’t need to memorize this, but when you see CRS errors in your code, this is what they’re referring to: the computer needs to know which coordinate system your data uses.
Geographic Data Formats
Geographic data comes in several formats, and understanding the differences helps you know what to expect when you open a file.
| Format | Description | Geometry Types | Pros | Cons |
|---|---|---|---|---|
| CSV with coordinates | Regular spreadsheet with latitude/longitude columns | Points only | Simple, easy to create and edit | Cannot represent lines or areas |
| Shapefile (.shp) | Traditional GIS format by ESRI; actually a collection of files (.shp, .dbf, .shx, .prj) | Points, lines, polygons | Industry standard, widely supported | Multiple files must stay together |
| GeoJSON | Single text file using JSON format | Points, lines, polygons | Single file, web-friendly, easy to share | Can be slow with large datasets |
| GeoPackage (.gpkg) | Single file using database structure | Points, lines, polygons | Self-contained, handles large data well | Newer format, less universal support |
For this class, you’ll most often work with CSV files containing coordinates and shapefiles downloaded from government sources like the Census Bureau.
For this class, you’ll most often work with CSV files containing coordinates and shapefiles downloaded from government sources like the Census Bureau.
Spatial Thinking: Reading Maps Critically
Before we write code, let’s talk about reading maps. Spatial literacy means understanding what maps show and what they obscure.
- Every map makes choices. The boundaries drawn on a map are human decisions. Census tracts, zip codes, and neighborhood boundaries don’t naturally exist; they were created for administrative purposes and may not reflect how communities actually organize themselves. When we visualize data using these boundaries, we inherit their assumptions and limitations.
- Scale affects perception. The same phenomenon can look different at different scales. A city-wide map might show one pattern; zooming in to a few blocks might reveal something quite different. Part of spatial thinking is asking: what would this look like at a different scale?
- Maps can mislead. A famous example is the “modifiable areal unit problem” (MAUP): the same underlying data can produce different patterns depending on how you draw the boundaries. When someone shows you a map claiming to demonstrate a pattern, it’s worth asking how the pattern might change with different boundary choices.
- Color choices matter. We’ll cover this in more depth when we discuss choropleth maps, but the choice of color scale and how you divide data into categories can dramatically change what pattern a reader perceives.

