Skip to content
← All datasets

School Attendance Zone Tracts

Which 2020 census tracts each Georgia school attendance zone covers at each grade, with population and land-area shares.

Year coverage
2027–2027
Updated
as zones change
Version
1.0.0
Schema hash
122ef0833a4d

Detail levels available

School · default

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.

Key metric

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.

ColumnTypeUnitRangeNull?Description
yearYearinteger——noSchool 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_codeDistrict Codestring——noGOSA district code (FK to the districts dimension).
Full description
GOSA district code (FK to the districts dimension).

Joins districts; adds its label columns.

school_codeSchool Codestring——no4-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.

Joins schools; adds its label columns.

zone_levelZone Levelstring——noElementary, 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
  • elementary
  • high
  • middle
grade_levelGrade Levelstring——noGrade (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
  • 01
  • 02
  • 03
  • 04
  • 05
  • 06
  • 07
  • 08
  • 09
  • 10
  • 11
  • 12
  • k
tract_geoidTract GEOIDstring——no11-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.

Joins tracts; adds its label columns.

num_populationNumber Populationintegercount—yes2020 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_populationNumber Tract Populationintegercount—yesThe 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_populationPercent of Tract Populationnumberproportion—yesShare 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_areaPercent of Tract Areanumberproportion—yesShare 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_populationPercent of Zone Populationnumberproportion—yesShare 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_tractIs Largest Zone for Tractboolean——yesTrue 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.

ParameterKindAllowed valuesNotes
yearyear_exactany value—
year_minyear_rangeany value—
year_maxyear_rangeany value—
detaildetailschoolsenum-enforced, default: schools
district_codeforeign_keyany valuemulti-value
school_codeforeign_keyany valuemulti-value
tract_geoidforeign_keyany valuemulti-value
zone_levelcategoricalelementaryhighmiddlemulti-value, enum-enforced
grade_levelcategorical
13 allowed values
  • 01
  • 02
  • 03
  • 04
  • 05
  • 06
  • 07
  • 08
  • 09
  • 10
  • 11
  • 12
  • k
multi-value, enum-enforced, pick one
is_largest_zone_for_tractcategoricalany valuemulti-value
district_typedimension_attribute
7 allowed values
  • commission_charter
  • resa
  • standard
  • state_agency
  • state_charter
  • state_school
  • state_special
multi-value, enum-enforced
school_leveldimension_attributeelementarymiddlehighk12othermulti-value, enum-enforced
localedimension_attributecitysuburbtownruralmulti-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.