Immigration Enforcement Geodata
Mapping ICE and CBP infrastructure requires aggregating data from diverse, often uncooperative sources. This guide covers obtaining and visualizing:
- Detention facility locations
- Checkpoint networks
- Policy jurisdiction boundaries
- Demographic context
Detention Facility Data
Primary Sources
| Source | Data Provided |
|---|---|
| FOIA litigation | Facility coordinates, populations |
| Vera Institute | Historical detention trends |
| Deportation Data Project | Transfer patterns |
| TRAC Syracuse | ERO statistics |
Vera Institute Research
Vera's analysis tracks 1,464 distinct facilities across 17 years, including:
| Facility Type | Description |
|---|---|
| ICE Processing Centers | Dedicated ICE facilities |
| Federal BOP sites | Bureau of Prisons |
| IGSA facilities | Local jails with ICE contracts |
| Family Residential | Facilities holding families |
Population Metrics
| Metric | Definition |
|---|---|
| Midnight Population | Official ICE count |
| 24-hour Population | Includes book-ins/outs during day |
| ADP | Average Daily Population |
Critical: 24-hour population often reveals significantly higher actual utilization than midnight counts.
Data Structure
Facility GeoJSON Schema
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [-117.2, 32.7]
},
"properties": {
"facility_code": "OTAY",
"facility_name": "Otay Mesa Detention Center",
"facility_type": "CDF",
"operator": "CoreCivic",
"capacity": 1100,
"current_population": 892,
"aor": "SND",
"state": "CA",
"standards": "PBNDS2011",
"contact_phone": "619-555-0100",
"kyr_link": "/resources/facility-monitoring/otay-mesa/"
}
}
Facility Type Codes
| Code | Type |
|---|---|
| SPC | Service Processing Center |
| CDF | Contract Detention Facility |
| IGSA | Intergovernmental Service Agreement |
| FRC | Family Residential Center |
| USMS | U.S. Marshals holding |
Checkpoint Data
Types of Checkpoints
| Type | Description | Duration |
|---|---|---|
| Permanent | Fixed highway locations | Continuous |
| Temporary | Tactical enforcement | Hours to days |
| Roving | Mobile patrol | Minutes to hours |
| DUI Checkpoints | Often used for immigration | Specific events |
Data Sources
| Source | Access Method |
|---|---|
| CBP records | FOIA requests |
| Court documents | Litigation discovery |
| Community reports | Crowdsourced |
| Academic research | Published studies |
Checkpoint GeoJSON Schema
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [-116.8, 32.9]
},
"properties": {
"checkpoint_id": "I8-EAST",
"name": "I-8 Checkpoint",
"type": "permanent",
"highway": "I-8",
"direction": "Eastbound",
"sector": "San Diego",
"operational_hours": "24/7",
"last_verified": "2026-03-01",
"notes": "All traffic stopped"
}
}
Policy Jurisdiction Data
287(g) Agreements
Source: ICE publications, FOIA requests
| Data Point | Description |
|---|---|
| Jurisdiction | County/agency name |
| Agreement type | Jail model vs. task force |
| Effective date | When agreement began |
| Status | Active/terminated |
Sanctuary Policies
Source: Municipal ordinances, advocacy databases
| Policy Type | Description |
|---|---|
| Sanctuary city | Limits local cooperation |
| Sanctuary county | County-level restrictions |
| Anti-sanctuary | State laws requiring cooperation |
| Detainer policy | How detainers are handled |
GeoJSON for Jurisdictions
{
"type": "Feature",
"geometry": {
"type": "Polygon",
"coordinates": [/* county boundary */]
},
"properties": {
"county_fips": "06073",
"county_name": "San Diego County",
"state": "CA",
"has_287g": false,
"sanctuary_status": "state_sanctuary",
"detainer_policy": "judicial_warrant_only",
"policy_link": "/state/california/"
}
}
Demographic Context
Census Data Integration
| Dataset | Use Case |
|---|---|
| ACS Foreign-born | Immigrant population density |
| ACS Hispanic origin | Latino community distribution |
| Decennial Census | Total population baselines |
Privacy Considerations
Critical: Displaying granular demographic data risks creating targeting maps.
| Approach | Risk Level |
|---|---|
| ❌ Point-level data | High - identifies households |
| ❌ Block-level data | Medium - small areas |
| ✅ Tract aggregation | Lower - broader areas |
| ✅ Choropleth maps | Lowest - shows density patterns |
| ✅ Smoothed heatmaps | Lowest - no specific locations |
Visualization Strategies
Facility Markers
function getFacilityIcon(type) {
const colors = {
SPC: '#e74c3c', // Red - federal
CDF: '#e67e22', // Orange - private
IGSA: '#f39c12', // Yellow - local
FRC: '#9b59b6' // Purple - family
};
return L.divIcon({
className: 'facility-marker',
html: `<div style="background: ${colors[type]};
width: 20px; height: 20px;
border-radius: 50%;"></div>`
});
}
Checkpoint Clustering
For dense checkpoint data:
const checkpointCluster = L.markerClusterGroup({
maxClusterRadius: 50,
spiderfyOnMaxZoom: true,
iconCreateFunction: (cluster) => {
const count = cluster.getChildCount();
return L.divIcon({
html: `<div class="cluster-icon">${count}</div>`,
className: 'checkpoint-cluster'
});
}
});
Jurisdiction Choropleth
function getJurisdictionStyle(feature) {
const has287g = feature.properties.has_287g;
const isSanctuary = feature.properties.sanctuary_status;
return {
fillColor: has287g ? '#c92a2a' :
isSanctuary ? '#2e7d32' : '#757575',
fillOpacity: 0.3,
color: '#333',
weight: 1
};
}
Data Maintenance
Update Frequency
| Data Type | Update Cycle |
|---|---|
| Facility status | Monthly |
| Population counts | Weekly (when available) |
| Checkpoint locations | As reported |
| Policy changes | As enacted |
Verification Process
- Cross-reference multiple sources
- Date stamp all entries
- Note confidence levels
- Track changes via git
Data Quality Fields
{
"properties": {
"source": "FOIA-2026-ICE-1234",
"last_verified": "2026-03-15",
"confidence": "high",
"notes": "Verified via court records"
}
}
Interactive Features
Facility Popups
function createFacilityPopup(props) {
return `
<div class="facility-popup">
<h3>${props.facility_name}</h3>
<table>
<tr><td>Type:</td><td>${props.facility_type}</td></tr>
<tr><td>Operator:</td><td>${props.operator}</td></tr>
<tr><td>Capacity:</td><td>${props.capacity}</td></tr>
<tr><td>Population:</td><td>${props.current_population}</td></tr>
</table>
<a href="${props.kyr_link}">Know Your Rights</a>
</div>
`;
}
Layer Controls
const overlays = {
"ICE Facilities": facilitiesLayer,
"Permanent Checkpoints": permanentCheckpoints,
"287(g) Jurisdictions": jurisdictions287g,
"Sanctuary Policies": sanctuaryPolicies
};
L.control.layers(basemaps, overlays, {
collapsed: false,
position: 'topright'
}).addTo(map);
ERO Areas of Responsibility
AOR Boundaries
ICE Enforcement and Removal Operations divides the country into Areas of Responsibility:
| AOR Code | Region |
|---|---|
| ATL | Atlanta |
| BAL | Baltimore |
| BOS | Boston |
| CHI | Chicago |
| DAL | Dallas |
| DEN | Denver |
| DET | Detroit |
| ELP | El Paso |
| HOU | Houston |
| LAX | Los Angeles |
| MIA | Miami |
| NEW | Newark |
| NOL | New Orleans |
| NYC | New York City |
| PHI | Philadelphia |
| PHO | Phoenix |
| SLC | Salt Lake City |
| SNA | San Antonio |
| SND | San Diego |
| SEA | Seattle |
| SFR | San Francisco |
| STP | St. Paul |
| WAS | Washington D.C. |
Mapping AORs
AOR boundaries help contextualize which ICE field office oversees specific facilities and enforcement actions.
Related Resources
- 100-Mile Zone - Border zone visualization
- Facility Monitoring - Detention oversight
- Crowdsourced Reporting - Community data
- State Pages - Jurisdiction-specific information