School Attendance Zone Tracts
Which 2020 census tracts each Georgia school attendance zone covers at each grade, with population and land-area shares.
- 2027–2027
- as zones change
- 1.0.0
- 122ef0833a4d
Overview
A crosswalk between Georgia public school attendance zones (the school_attendance_zones geometry topic: the area whose residents a school serves for a run of grades) and 2020 census tracts. One row per school, grade and tract its zone covers at that grade. Population weights are 2020 Census P.L. 94-171 block populations: each 2020 block counts toward the zone holding its interior point; a block that a zone line crosses (two or more schools' zones, or a zone and an unzoned gap, each covering over 1% of it) is split by area, in whole persons; a block whose interior point lies just outside today's district line goes to the zone covering most of it; any other block outside every zone is a gap. Use pct_of_tract_population to answer 'which zones cover this tract at this grade, and how much of it', and pct_of_zone_population to roll tract data (the census topics) up to a zone. year is the school year the zones are in effect for (2027 = 2026-27); the population is the 2020 census. Zones are not official enrollment determinations; each zone's source, method, vintage and accuracy are on the zones topic.
Row grain: One row per year, district_code, school_code, grade_level, tract_geoid.
pct_of_tract_population — Percent of Tract Population (proportion)
The single headline value most answers want.
Variables
Every column in the fact table. The code is the exact field name the API returns.
| Column | Type | Unit | Range | Null? | Description |
|---|---|---|---|---|---|
year | integer | — | — | no | School year the zones are in effect for, as its ending calendar year (2027 = 2026-27). The weights are 2020 census counts.Full description▾School year the zones are in effect for, as its ending calendar year (2027 = 2026-27). The weights are 2020 census counts. |
district_code | string | — | — | no | GOSA district code (FK to the districts dimension).Full description▾GOSA district code (FK to the districts dimension). |
school_code | string | — | — | no | 4-digit GOSA school code (composite FK to the schools dimension with district_code): the zone's school.Full description▾4-digit GOSA school code (composite FK to the schools dimension with district_code): the zone's school. |
zone_level | string | — | — | no | Elementary, middle or high zone.Full description▾The level of the school's zone at this grade on the zones topic: elementary, middle or high. It follows from the grade and the school (a 6-8 middle school's grade 6, a K-6 school's grade 6 at elementary), so pin grade_level first. 3 allowed values▾
|
grade_level | string | — | — | no | Grade (k, 01-12).Full description▾The grade the row's shares hold for (k, 01-12; pre-K is not zoned). A school's zone usually covers the same tracts at every grade it assigns; it differs where the zone differs by grade (a phased-in rezoning) or a neighbour exists at only some grades. 13 allowed values▾
|
tract_geoid | string | — | — | no | 11-digit 2020 census tract GEOID (FK to the tracts dimension), as used by the census topics.Full description▾11-digit 2020 census tract GEOID (FK to the tracts dimension), as used by the census topics. |
num_population | integer | — | yes | 2020 census population of the tract living in the zone: whole blocks by interior point, plus the zone's area-weighted part of blocks a zone line crosses (in whole persons).Full description▾2020 census population of the tract living in the zone: whole blocks by interior point, plus the zone's area-weighted part of blocks a zone line crosses (in whole persons). | |
num_tract_population | integer | — | yes | The tract's 2020 census population (all of its blocks), repeated on each of its rows: never add it across rows.Full description▾The tract's 2020 census population (all of its blocks), repeated on each of its rows: never add it across rows. | |
pct_of_tract_population | number | — | yes | Share of the tract's 2020 population living in this zone.Full description▾Share of the tract's 2020 population living in this zone at this grade (num_population / num_tract_population). Across a tract's zones at one grade it adds to 1 when the tract is fully zoned. | |
pct_of_tract_area | number | — | yes | Share of the tract's 2020 land area in this zone, from the same block weights as the population.Full description▾Share of the tract's 2020 land area in this zone, from the same block weights as the population. | |
pct_of_zone_population | number | — | yes | Share of the zone's 2020 population at this grade living in this tract (adds to 1 over the zone's tracts at the grade). Multiply a tract count by pct_of_tract_population, or weight tract rates by this share, to roll tract data up to the zone.Full description▾Share of the zone's 2020 population at this grade living in this tract (adds to 1 over the zone's tracts at the grade). Multiply a tract count by pct_of_tract_population, or weight tract rates by this share, to roll tract data up to the zone. | |
is_largest_zone_for_tract | boolean | — | — | yes | True for the zone holding the most of the tract's 2020 population at this grade (ties go to more land area, then the lower district and school code): exactly one row per tract and grade.Full description▾True for the zone holding the most of the tract's 2020 population at this grade (ties go to more land area, then the lower district and school code): exactly one row per tract and grade. |
Filters
Query parameters the fact endpoint accepts. Comma-separated values are OR within a parameter; multiple parameters AND together.
| Parameter | Kind | Allowed values | Notes |
|---|---|---|---|
year | year_exact | any value | — |
year_min | year_range | any value | — |
year_max | year_range | any value | — |
detail | detail | schools | enum-enforced, default: schools |
district_code | foreign_key | any value | multi-value |
school_code | foreign_key | any value | multi-value |
tract_geoid | foreign_key | any value | multi-value |
zone_level | categorical | elementaryhighmiddle | multi-value, enum-enforced |
grade_level | categorical | 13 allowed values▾
| multi-value, enum-enforced, pick one |
is_largest_zone_for_tract | categorical | any value | multi-value |
district_type | dimension_attribute | 7 allowed values▾
| multi-value, enum-enforced |
school_level | dimension_attribute | elementarymiddlehighk12other | multi-value, enum-enforced |
locale | dimension_attribute | citysuburbtownrural | multi-value, enum-enforced |
Example requests
Run these against the base URL — they return live data.
All rows (first page), schools level
curl "https://georgiacivicdata.org/api/v1/education/school_attendance_zone_tracts"schools data for 2027
curl "https://georgiacivicdata.org/api/v1/education/school_attendance_zone_tracts?year=2027"Filtered to zone_level = elementary for 2027
curl "https://georgiacivicdata.org/api/v1/education/school_attendance_zone_tracts?year=2027&zone_level=elementary"Download 2027 as CSV
curl "https://georgiacivicdata.org/api/v1/education/school_attendance_zone_tracts?year=2027&format=csv"Notes & limitations
NULL handling
- Zero is a real, reported value.
Limitations
Covers the districts whose zones were collected: a tract in a district without zones at a grade, or in a gap, has no rows there or rows whose population shares add to less than 1. Gaps include areas the zones topic leaves unassigned on purpose: new schools not yet in the schools dimension (their zones are withheld), placement areas whose students are placed among several schools, and closed schools' former areas that no published map reassigns; see the zones topic's coverage table. Some zones are known to predate an adopted boundary change (currency_status stale_known_changes on the zones topic) and carry that error here. Weights are the 2020 census: the share of a tract in each zone is frozen at April 2020, so it misses growth since then, which is largest where new schools and rezonings are. A block that a zone line or a gap's edge crosses is split by area, assuming its people are spread evenly over its land. A block counts toward the district whose current TIGER/Line outline holds its 2020 interior point (the 2020 Block Assignment File where no outline does), as a point lookup answers. Rows are school rows: every row has a district, school and tract.