The county, 2020 Census tract and block group, school district and zoned schools that points or street addresses fall in.
Points are sent to the API's POST /locate route in batches of up to
1,000, so coordinates never appear in URLs and nothing is cached.
Addresses never reach the Georgia Civic Data API: the package
geocodes them on your computer with the U.S. Census batch geocoder
(https://geocoding.geo.census.gov/geocoder/, benchmark
Public_AR_Current, the address data the API's own search uses; up to
10,000 addresses per upload), then sends the coordinates as points. An
address the Census can't match is never sent. To geocode with another
service, geocode first (for example with the 'tidygeocoder' package)
and pass lat and lon.
A zone is the default assignment, not the only option: a student may attend another public school by transfer, or a charter, magnet or other choice school. This is not an official enrollment determination; confirm with the school district.
Arguments
- lat, lon
Numeric vectors of equal length: latitude and longitude in decimal degrees (WGS 84). Default
NULL.- address
Street addresses: a character vector of one-line addresses (
"206 Washington St SW, Atlanta, GA 30334"), or a data frame with columnsstreet,city,stateandzip. Give eitherlatandlonoraddress, not both. DefaultNULL.- id
Identifiers for the inputs, the same length, carried into the output so results join back to your data. Default
seq_along()of the input.- grade
Keep only school zones serving this grade (
"pk","k","01"to"12";"5"and"K"are accepted). DefaultNULL: every grade.- year
The zones' school year as its ending year (2027 is 2026-27). Default
NULL: the current zones.
Value
A tibble with columns, in order:
id.The input:
lat,lonfor points; for addressesaddress, the geocoder'smatch_status("match","no_match","tie"),match_type("exact","non_exact"),matched_address, and the geocodedlatandlon.geographic_type:"county","tract","block_group","school_district","elementary_school","middle_school"or"high_school".geographic_id: county FIPS ("13121"), tract GEOID ("13121003500"), block group GEOID ("131210035001"), district code ("761"), or for a school"DISTRICT-SCHOOL"("761-4560"), the formgcd_rows()takes asschool_id.geographic_name: the place's name.grades: a school row's grade range ("K-5","6-8","9-12");NAon other rows.note:NA, or why a row is missing or needs care.
Attributes assignment_note and note carry the API's notes on
reading the zones.
Output
A long tibble: for each input, one row per place it falls in. A typical location gives seven rows: its county, tract, block group and school district, then one row per zoned school. Rows for each input come in a fixed order: county, tract, block group, district, then elementary, middle and high schools by grade.
A level can have more than one school row: some homes are zoned to one
elementary school for kindergarten to grade 2 and another for grades
3-5. The grades column tells them apart; pass grade to keep only
the school for one grade.
The note column is NA normally, and one plain sentence otherwise,
so a missing row is never silent:
a level with no zone collected yet, a gap between zones, or a level served by another district gets a row with
NAid, name and grades, and a note saying why;an input outside Georgia, a point the API rejects, or an address the Census can't match gets one row with
NAgeographic columns and the reason; one bad input never stops the batch;in a Department of Defense district the district row has an
NAid and a note;school rows whose zone has a known pending change, or which overlap another school's zone, say so.
See also
gcd_school_zones() for the zones' shapes and precision
(method, accuracy_class); gcd_rows() with school_id for data
on a located school.
Other geography:
gcd_district_boundaries(),
gcd_school_zone_coverage(),
gcd_school_zone_status(),
gcd_school_zones()