From 63413f9eb7aff710b04866da82ece3a946c5461c Mon Sep 17 00:00:00 2001 From: Jared Knowles Date: Wed, 12 Aug 2026 08:40:23 -0400 Subject: [PATCH] fix: rank district suggestions over the full state, not the first 500 rows MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit DistrictSearch built its "most arrests" list from /estimates?state=XX&year=21-22&limit=500. That endpoint returns rows ORDER BY LEAID, RACE, SEX at eight rows per district, so a 500-row cap is not a sample of the state — it is the ~62 lowest-LEAID districts in it. Measured against California (11,488 rows, 1,715 districts): the old read covered 68 districts, and 6 of the true top 8 were invisible to it. It suggested districts with 1 and 2 arrests as the state's most notable, while San Diego Unified (178), Fresno Unified (77) and Kern High (69) never appeared. Replaced with a committed fixture, public/data/top_districts.json, generated by scripts/build-top-districts.mjs. The script pages each state to completion using meta.total from the response envelope and fails loudly on a short read, since a silent truncation there would reintroduce exactly this bug. 51 states, 135 requests, ~104KB, following the national_rates.json precedent. Re-run it only when a new CRDC wave lands. The search screen also loses a multi-second fetch on every visit, and the hardcoded "Try Derby (KS), Paterson (NJ)" hint goes with it — the real list supersedes it. Degrades to search-only if the fixture is missing. fetchStateDistricts() is kept for scripts and ad-hoc use, with its JSDoc now warning that any short read ranks by LEAID. pages.yml gains public/** in its paths filter: the fixture ships with the build, so regenerating it has to be able to trigger a deploy on its own. --- .gitea/workflows/pages.yml | 4 + public/data/top_districts.json | 4728 +++++++++++++++++++++++++++++ scripts/build-top-districts.mjs | 204 ++ src/components/DistrictSearch.jsx | 87 +- src/hooks/useApi.js | 11 +- 5 files changed, 5000 insertions(+), 34 deletions(-) create mode 100644 public/data/top_districts.json create mode 100644 scripts/build-top-districts.mjs diff --git a/.gitea/workflows/pages.yml b/.gitea/workflows/pages.yml index 4db32e1..6ccd533 100644 --- a/.gitea/workflows/pages.yml +++ b/.gitea/workflows/pages.yml @@ -10,6 +10,10 @@ on: branches: [main] paths: - 'src/**' + # Committed fixtures ship with the build: public/data/top_districts.json + # is what the search screen ranks its suggestions from, so regenerating it + # has to be able to trigger a deploy on its own. + - 'public/**' - 'index.html' - 'vite.config.mjs' - 'package.json' diff --git a/public/data/top_districts.json b/public/data/top_districts.json new file mode 100644 index 0000000..884fe4a --- /dev/null +++ b/public/data/top_districts.json @@ -0,0 +1,4728 @@ +{ + "metadata": { + "source": "CRDC School Arrest Rate API (Knowles & Miller 2025)", + "endpoint": "https://crdc-api.civilytics.org/api/v1/estimates", + "year": "21-22", + "model": "unified_m2_mod", + "description": "Top 15 school districts per state by total observed arrests in 21-22, summed across the eight modelled race×sex groups. Generated by scripts/build-top-districts.mjs over the complete paged result set for each state.", + "generated_states": 51, + "generated_requests": 135 + }, + "states": { + "AK": [ + { + "leaid": "0200600", + "name": "Fairbanks North Star Borough School District", + "arrests": 13, + "enrollment": 6384, + "rate": 2.04 + }, + { + "leaid": "0200210", + "name": "Juneau Borough School District", + "arrests": 2, + "enrollment": 1817, + "rate": 1.1 + }, + { + "leaid": "0200610", + "name": "North Slope Borough School District", + "arrests": 2, + "enrollment": 1190, + "rate": 1.68 + }, + { + "leaid": "0200485", + "name": "Lake and Peninsula Borough School District", + "arrests": 1, + "enrollment": 277, + "rate": 3.61 + }, + { + "leaid": "0200780", + "name": "Valdez City School District", + "arrests": 1, + "enrollment": 296, + "rate": 3.38 + } + ], + "AL": [ + { + "leaid": "0102370", + "name": "Mobile County", + "arrests": 139, + "enrollment": 25745, + "rate": 5.4 + }, + { + "leaid": "0101800", + "name": "Huntsville City", + "arrests": 109, + "enrollment": 10973, + "rate": 9.93 + }, + { + "leaid": "0102430", + "name": "Montgomery County", + "arrests": 15, + "enrollment": 12794, + "rate": 1.17 + }, + { + "leaid": "0101170", + "name": "Decatur City", + "arrests": 12, + "enrollment": 4193, + "rate": 2.86 + }, + { + "leaid": "0101560", + "name": "Fort Payne City", + "arrests": 8, + "enrollment": 1885, + "rate": 4.24 + }, + { + "leaid": "0103030", + "name": "Shelby County", + "arrests": 7, + "enrollment": 11139, + "rate": 0.63 + }, + { + "leaid": "0100012", + "name": "Boaz City", + "arrests": 6, + "enrollment": 1213, + "rate": 4.95 + }, + { + "leaid": "0101230", + "name": "Dothan City", + "arrests": 5, + "enrollment": 3221, + "rate": 1.55 + }, + { + "leaid": "0101350", + "name": "Escambia County", + "arrests": 5, + "enrollment": 2164, + "rate": 2.31 + }, + { + "leaid": "0103062", + "name": "St Clair County", + "arrests": 5, + "enrollment": 5058, + "rate": 0.99 + }, + { + "leaid": "0102070", + "name": "Lee County", + "arrests": 4, + "enrollment": 4224, + "rate": 0.95 + }, + { + "leaid": "0100240", + "name": "Autauga County", + "arrests": 3, + "enrollment": 4488, + "rate": 0.67 + }, + { + "leaid": "0100540", + "name": "Calhoun County", + "arrests": 3, + "enrollment": 4337, + "rate": 0.69 + }, + { + "leaid": "0100600", + "name": "Chambers County", + "arrests": 3, + "enrollment": 1734, + "rate": 1.73 + }, + { + "leaid": "0100197", + "name": "Acceleration Day and Evening Academy", + "arrests": 2, + "enrollment": 442, + "rate": 4.52 + } + ], + "AR": [ + { + "leaid": "0500026", + "name": "PINE BLUFF SCHOOL DISTRICT", + "arrests": 94, + "enrollment": 1910, + "rate": 49.21 + }, + { + "leaid": "0503060", + "name": "BENTONVILLE SCHOOL DISTRICT", + "arrests": 56, + "enrollment": 7429, + "rate": 7.54 + }, + { + "leaid": "0513530", + "name": "VILONIA SCHOOL DISTRICT", + "arrests": 54, + "enrollment": 1486, + "rate": 36.34 + }, + { + "leaid": "0508040", + "name": "WEST MEMPHIS SCHOOL DISTRICT", + "arrests": 26, + "enrollment": 2054, + "rate": 12.66 + }, + { + "leaid": "0511850", + "name": "PULASKI COUNTY SPECIAL SCHOOL DISTRICT", + "arrests": 17, + "enrollment": 6370, + "rate": 2.67 + }, + { + "leaid": "0509000", + "name": "LITTLE ROCK SCHOOL DISTRICT", + "arrests": 16, + "enrollment": 11015, + "rate": 1.45 + }, + { + "leaid": "0500070", + "name": "CEDAR RIDGE SCHOOL DISTRICT", + "arrests": 9, + "enrollment": 365, + "rate": 24.66 + }, + { + "leaid": "0513410", + "name": "VAN BUREN SCHOOL DISTRICT", + "arrests": 8, + "enrollment": 2831, + "rate": 2.83 + }, + { + "leaid": "0511970", + "name": "ROGERS SCHOOL DISTRICT", + "arrests": 7, + "enrollment": 8009, + "rate": 0.87 + }, + { + "leaid": "0514140", + "name": "WHITE HALL SCHOOL DISTRICT", + "arrests": 7, + "enrollment": 1590, + "rate": 4.4 + }, + { + "leaid": "0513930", + "name": "WATSON CHAPEL SCHOOL DISTRICT", + "arrests": 6, + "enrollment": 980, + "rate": 6.12 + }, + { + "leaid": "0503690", + "name": "BRYANT SCHOOL DISTRICT", + "arrests": 4, + "enrollment": 4999, + "rate": 0.8 + }, + { + "leaid": "0506330", + "name": "FORT SMITH SCHOOL DISTRICT", + "arrests": 4, + "enrollment": 6592, + "rate": 0.61 + }, + { + "leaid": "0506540", + "name": "GENTRY SCHOOL DISTRICT", + "arrests": 4, + "enrollment": 701, + "rate": 5.71 + }, + { + "leaid": "0508280", + "name": "JONESBORO SCHOOL DISTRICT", + "arrests": 4, + "enrollment": 2702, + "rate": 1.48 + } + ], + "AZ": [ + { + "leaid": "0405070", + "name": "Mingus Union High School District (4488)", + "arrests": 55, + "enrollment": 1295, + "rate": 42.47 + }, + { + "leaid": "0400082", + "name": "Colorado River Union High School District (4381)", + "arrests": 33, + "enrollment": 1810, + "rate": 18.23 + }, + { + "leaid": "0408800", + "name": "Tucson Unified District (4403)", + "arrests": 25, + "enrollment": 25818, + "rate": 0.97 + }, + { + "leaid": "0400680", + "name": "Amphitheater Unified District (4406)", + "arrests": 23, + "enrollment": 7720, + "rate": 2.98 + }, + { + "leaid": "0406730", + "name": "Prescott Unified District (4466)", + "arrests": 23, + "enrollment": 2327, + "rate": 9.88 + }, + { + "leaid": "0409630", + "name": "Yuma Union High School District (4507)", + "arrests": 19, + "enrollment": 11077, + "rate": 1.72 + }, + { + "leaid": "0400095", + "name": "Yuma Private Industry Council Inc. (4509)", + "arrests": 16, + "enrollment": 116, + "rate": 137.93 + }, + { + "leaid": "0400450", + "name": "Agua Fria Union High School District (4289)", + "arrests": 16, + "enrollment": 8450, + "rate": 1.89 + }, + { + "leaid": "0403010", + "name": "Flowing Wells Unified District (4405)", + "arrests": 12, + "enrollment": 2683, + "rate": 4.47 + }, + { + "leaid": "0406330", + "name": "Phoenix Union High School District (4286)", + "arrests": 12, + "enrollment": 27187, + "rate": 0.44 + }, + { + "leaid": "0403500", + "name": "Globe Unified District (4208)", + "arrests": 10, + "enrollment": 928, + "rate": 10.78 + }, + { + "leaid": "0402530", + "name": "Douglas Unified District (4174)", + "arrests": 9, + "enrollment": 2202, + "rate": 4.09 + }, + { + "leaid": "0408850", + "name": "Vail Unified District (4413)", + "arrests": 9, + "enrollment": 8666, + "rate": 1.04 + }, + { + "leaid": "0403400", + "name": "Gilbert Unified District (4239)", + "arrests": 7, + "enrollment": 16874, + "rate": 0.41 + }, + { + "leaid": "0400520", + "name": "Ajo Unified District (4409)", + "arrests": 5, + "enrollment": 353, + "rate": 14.16 + } + ], + "CA": [ + { + "leaid": "0600014", + "name": "Hesperia Unified", + "arrests": 180, + "enrollment": 10818, + "rate": 16.64 + }, + { + "leaid": "0634320", + "name": "San Diego Unified", + "arrests": 178, + "enrollment": 39730, + "rate": 4.48 + }, + { + "leaid": "0639870", + "name": "Tulare City", + "arrests": 79, + "enrollment": 4103, + "rate": 19.25 + }, + { + "leaid": "0614550", + "name": "Fresno Unified", + "arrests": 77, + "enrollment": 29991, + "rate": 2.57 + }, + { + "leaid": "0619540", + "name": "Kern High", + "arrests": 69, + "enrollment": 44380, + "rate": 1.55 + }, + { + "leaid": "0609030", + "name": "Clovis Unified", + "arrests": 68, + "enrollment": 16479, + "rate": 4.13 + }, + { + "leaid": "0600065", + "name": "Dinuba Unified", + "arrests": 54, + "enrollment": 3308, + "rate": 16.32 + }, + { + "leaid": "0616325", + "name": "Hacienda la Puente Unified", + "arrests": 52, + "enrollment": 8705, + "rate": 5.97 + }, + { + "leaid": "0634170", + "name": "San Bernardino City Unified", + "arrests": 49, + "enrollment": 21716, + "rate": 2.26 + }, + { + "leaid": "0642510", + "name": "William S. Hart Union High", + "arrests": 47, + "enrollment": 17468, + "rate": 2.69 + }, + { + "leaid": "0613920", + "name": "Fontana Unified", + "arrests": 42, + "enrollment": 18438, + "rate": 2.28 + }, + { + "leaid": "0641160", + "name": "Visalia Unified", + "arrests": 30, + "enrollment": 14712, + "rate": 2.04 + }, + { + "leaid": "0612880", + "name": "Escondido Union", + "arrests": 25, + "enrollment": 4631, + "rate": 5.4 + }, + { + "leaid": "0616230", + "name": "Grossmont Union High", + "arrests": 24, + "enrollment": 15363, + "rate": 1.56 + }, + { + "leaid": "0632010", + "name": "Red Bluff Joint Union High", + "arrests": 24, + "enrollment": 1675, + "rate": 14.33 + } + ], + "CO": [ + { + "leaid": "0807230", + "name": "Westminster Public Schools", + "arrests": 27, + "enrollment": 6134, + "rate": 4.4 + }, + { + "leaid": "0802340", + "name": "Aurora Joint District No. 28 of the counties of Adams and A", + "arrests": 26, + "enrollment": 23607, + "rate": 1.1 + }, + { + "leaid": "0804800", + "name": "Jefferson County School District No. R-1", + "arrests": 12, + "enrollment": 45509, + "rate": 0.26 + }, + { + "leaid": "0802910", + "name": "Cherry Creek School District No. 5 in the county of Arapah", + "arrests": 7, + "enrollment": 26152, + "rate": 0.27 + }, + { + "leaid": "0801950", + "name": "School District N. 14 in the county of Adams & State of Colo", + "arrests": 4, + "enrollment": 3313, + "rate": 1.21 + }, + { + "leaid": "0802580", + "name": "School District 27J", + "arrests": 4, + "enrollment": 12063, + "rate": 0.33 + }, + { + "leaid": "0806900", + "name": "Adams 12 Five Star Schools", + "arrests": 4, + "enrollment": 20562, + "rate": 0.19 + }, + { + "leaid": "0805370", + "name": "St. Vrain Valley School District No. Re1J", + "arrests": 3, + "enrollment": 20631, + "rate": 0.15 + }, + { + "leaid": "0803360", + "name": "School District No. 1 in the county of Denver and State of C", + "arrests": 2, + "enrollment": 48016, + "rate": 0.04 + }, + { + "leaid": "0805310", + "name": "Littleton School District No. 6 in the county of Arapahoe", + "arrests": 2, + "enrollment": 7642, + "rate": 0.26 + }, + { + "leaid": "0805760", + "name": "Monte Vista School District No. C-8", + "arrests": 2, + "enrollment": 640, + "rate": 3.13 + }, + { + "leaid": "0800020", + "name": "State Charter School Institute", + "arrests": 1, + "enrollment": 16471, + "rate": 0.06 + }, + { + "leaid": "0803450", + "name": "Douglas County School District No. Re 1", + "arrests": 1, + "enrollment": 36611, + "rate": 0.03 + }, + { + "leaid": "0804350", + "name": "Mesa County Valley School District No. 51", + "arrests": 1, + "enrollment": 11766, + "rate": 0.08 + }, + { + "leaid": "0805490", + "name": "Manitou Springs School District No. 14 in the county of El", + "arrests": 1, + "enrollment": 690, + "rate": 1.45 + } + ], + "CT": [ + { + "leaid": "0904830", + "name": "Waterbury School District", + "arrests": 197, + "enrollment": 9792, + "rate": 20.12 + }, + { + "leaid": "0900002", + "name": "Connecticut Technical Education and Career System", + "arrests": 80, + "enrollment": 10730, + "rate": 7.46 + }, + { + "leaid": "0902670", + "name": "New Britain School District", + "arrests": 44, + "enrollment": 4746, + "rate": 9.27 + }, + { + "leaid": "0901020", + "name": "Danbury School District", + "arrests": 40, + "enrollment": 5779, + "rate": 6.92 + }, + { + "leaid": "0904320", + "name": "Stamford School District", + "arrests": 40, + "enrollment": 8052, + "rate": 4.97 + }, + { + "leaid": "0903090", + "name": "Norwalk School District", + "arrests": 25, + "enrollment": 6211, + "rate": 4.03 + }, + { + "leaid": "0902790", + "name": "New Haven School District", + "arrests": 21, + "enrollment": 16327, + "rate": 1.29 + }, + { + "leaid": "0902640", + "name": "Naugatuck School District", + "arrests": 18, + "enrollment": 1760, + "rate": 10.23 + }, + { + "leaid": "0900060", + "name": "Ansonia School District", + "arrests": 16, + "enrollment": 964, + "rate": 16.6 + }, + { + "leaid": "0900270", + "name": "Bethel School District", + "arrests": 16, + "enrollment": 1599, + "rate": 10.01 + }, + { + "leaid": "0904890", + "name": "Watertown School District", + "arrests": 14, + "enrollment": 1295, + "rate": 10.81 + }, + { + "leaid": "0901860", + "name": "Hamden School District", + "arrests": 12, + "enrollment": 2217, + "rate": 5.41 + }, + { + "leaid": "0904950", + "name": "West Haven School District", + "arrests": 12, + "enrollment": 2371, + "rate": 5.06 + }, + { + "leaid": "0902820", + "name": "New London School District", + "arrests": 10, + "enrollment": 1302, + "rate": 7.68 + }, + { + "leaid": "0902880", + "name": "Newington School District", + "arrests": 10, + "enrollment": 2137, + "rate": 4.68 + } + ], + "DC": [ + { + "leaid": "1100030", + "name": "District of Columbia Public Schools", + "arrests": 13, + "enrollment": 22048, + "rate": 0.59 + }, + { + "leaid": "1100013", + "name": "IDEA PCS", + "arrests": 1, + "enrollment": 346, + "rate": 2.89 + }, + { + "leaid": "1100097", + "name": "District of Columbia International School", + "arrests": 1, + "enrollment": 1384, + "rate": 0.72 + } + ], + "DE": [ + { + "leaid": "1000200", + "name": "Christina School District", + "arrests": 57, + "enrollment": 6269, + "rate": 9.09 + }, + { + "leaid": "1000190", + "name": "Capital School District", + "arrests": 34, + "enrollment": 2729, + "rate": 12.46 + }, + { + "leaid": "1000680", + "name": "Indian River School District", + "arrests": 25, + "enrollment": 5672, + "rate": 4.41 + }, + { + "leaid": "1000790", + "name": "Lake Forest School District", + "arrests": 18, + "enrollment": 1635, + "rate": 11.01 + }, + { + "leaid": "1001530", + "name": "Seaford School District", + "arrests": 18, + "enrollment": 1557, + "rate": 11.56 + }, + { + "leaid": "1000750", + "name": "POLYTECH School District", + "arrests": 17, + "enrollment": 1083, + "rate": 15.7 + }, + { + "leaid": "1001300", + "name": "Red Clay Consolidated School District", + "arrests": 16, + "enrollment": 7596, + "rate": 2.11 + }, + { + "leaid": "1001680", + "name": "Sussex Technical School District", + "arrests": 11, + "enrollment": 1224, + "rate": 8.99 + }, + { + "leaid": "1000057", + "name": "First State Military Academy", + "arrests": 8, + "enrollment": 439, + "rate": 18.22 + }, + { + "leaid": "1001620", + "name": "Smyrna School District", + "arrests": 6, + "enrollment": 2671, + "rate": 2.25 + }, + { + "leaid": "1000080", + "name": "Appoquinimink School District", + "arrests": 3, + "enrollment": 6038, + "rate": 0.5 + }, + { + "leaid": "1000017", + "name": "Academy of Dover Charter School", + "arrests": 2, + "enrollment": 364, + "rate": 5.49 + }, + { + "leaid": "1000170", + "name": "Cape Henlopen School District", + "arrests": 2, + "enrollment": 3049, + "rate": 0.66 + }, + { + "leaid": "1001240", + "name": "Brandywine School District", + "arrests": 2, + "enrollment": 5095, + "rate": 0.39 + }, + { + "leaid": "1000015", + "name": "Newark Charter School", + "arrests": 1, + "enrollment": 1906, + "rate": 0.52 + } + ], + "FL": [ + { + "leaid": "1201560", + "name": "PINELLAS", + "arrests": 573, + "enrollment": 51392, + "rate": 11.15 + }, + { + "leaid": "1200180", + "name": "BROWARD", + "arrests": 245, + "enrollment": 148526, + "rate": 1.65 + }, + { + "leaid": "1200390", + "name": "MIAMI-DADE", + "arrests": 216, + "enrollment": 228589, + "rate": 0.94 + }, + { + "leaid": "1200870", + "name": "HILLSBOROUGH", + "arrests": 148, + "enrollment": 128079, + "rate": 1.16 + }, + { + "leaid": "1201590", + "name": "POLK", + "arrests": 112, + "enrollment": 61829, + "rate": 1.81 + }, + { + "leaid": "1201530", + "name": "PASCO", + "arrests": 82, + "enrollment": 46462, + "rate": 1.76 + }, + { + "leaid": "1200330", + "name": "COLLIER", + "arrests": 71, + "enrollment": 28129, + "rate": 2.52 + }, + { + "leaid": "1201710", + "name": "SEMINOLE", + "arrests": 50, + "enrollment": 34727, + "rate": 1.44 + }, + { + "leaid": "1201770", + "name": "ST. LUCIE", + "arrests": 44, + "enrollment": 30633, + "rate": 1.44 + }, + { + "leaid": "1201440", + "name": "ORANGE", + "arrests": 34, + "enrollment": 114135, + "rate": 0.3 + }, + { + "leaid": "1201800", + "name": "SUMTER", + "arrests": 22, + "enrollment": 5632, + "rate": 3.91 + }, + { + "leaid": "1200810", + "name": "HERNANDO", + "arrests": 21, + "enrollment": 14425, + "rate": 1.46 + }, + { + "leaid": "1201110", + "name": "LEON", + "arrests": 19, + "enrollment": 17910, + "rate": 1.06 + }, + { + "leaid": "1201080", + "name": "LEE", + "arrests": 18, + "enrollment": 55561, + "rate": 0.32 + }, + { + "leaid": "1200300", + "name": "CLAY", + "arrests": 17, + "enrollment": 18507, + "rate": 0.92 + } + ], + "GA": [ + { + "leaid": "1301290", + "name": "Cobb County", + "arrests": 396, + "enrollment": 54230, + "rate": 7.3 + }, + { + "leaid": "1304380", + "name": "Richmond County", + "arrests": 330, + "enrollment": 16307, + "rate": 20.24 + }, + { + "leaid": "1302550", + "name": "Gwinnett County", + "arrests": 247, + "enrollment": 87745, + "rate": 2.81 + }, + { + "leaid": "1300420", + "name": "Bibb County", + "arrests": 220, + "enrollment": 10070, + "rate": 21.85 + }, + { + "leaid": "1301830", + "name": "Dougherty County", + "arrests": 172, + "enrollment": 5929, + "rate": 29.01 + }, + { + "leaid": "1304020", + "name": "Paulding County", + "arrests": 157, + "enrollment": 16352, + "rate": 9.6 + }, + { + "leaid": "1301410", + "name": "Columbia County", + "arrests": 149, + "enrollment": 13961, + "rate": 10.67 + }, + { + "leaid": "1303930", + "name": "Newton County", + "arrests": 140, + "enrollment": 9142, + "rate": 15.31 + }, + { + "leaid": "1304440", + "name": "Rome City", + "arrests": 74, + "enrollment": 2813, + "rate": 26.31 + }, + { + "leaid": "1303570", + "name": "McDuffie County", + "arrests": 54, + "enrollment": 1727, + "rate": 31.27 + }, + { + "leaid": "1302100", + "name": "Fannin County", + "arrests": 48, + "enrollment": 1509, + "rate": 31.81 + }, + { + "leaid": "1305430", + "name": "Ware County", + "arrests": 42, + "enrollment": 2805, + "rate": 14.97 + }, + { + "leaid": "1302310", + "name": "Gainesville City", + "arrests": 38, + "enrollment": 3680, + "rate": 10.33 + }, + { + "leaid": "1302880", + "name": "Houston County", + "arrests": 30, + "enrollment": 14590, + "rate": 2.06 + }, + { + "leaid": "1304980", + "name": "Tift County", + "arrests": 27, + "enrollment": 3781, + "rate": 7.14 + } + ], + "HI": [ + { + "leaid": "1500030", + "name": "Hawaii Department of Education", + "arrests": 20, + "enrollment": 26287, + "rate": 0.76 + } + ], + "IA": [ + { + "leaid": "1908220", + "name": "Council Bluffs Comm School District", + "arrests": 82, + "enrollment": 4301, + "rate": 19.07 + }, + { + "leaid": "1922110", + "name": "Ottumwa Comm School District", + "arrests": 59, + "enrollment": 2221, + "rate": 26.56 + }, + { + "leaid": "1906540", + "name": "Cedar Rapids Comm School District", + "arrests": 35, + "enrollment": 7283, + "rate": 4.81 + }, + { + "leaid": "1930480", + "name": "Waterloo Comm School District", + "arrests": 34, + "enrollment": 4726, + "rate": 7.19 + }, + { + "leaid": "1904860", + "name": "Bettendorf Comm School District", + "arrests": 31, + "enrollment": 2422, + "rate": 12.8 + }, + { + "leaid": "1920610", + "name": "Newton Comm School District", + "arrests": 30, + "enrollment": 1659, + "rate": 18.08 + }, + { + "leaid": "1926400", + "name": "Sioux City Comm School District", + "arrests": 27, + "enrollment": 7231, + "rate": 3.73 + }, + { + "leaid": "1921240", + "name": "Norwalk Comm School District", + "arrests": 19, + "enrollment": 1715, + "rate": 11.08 + }, + { + "leaid": "1911820", + "name": "Fort Dodge Comm School District", + "arrests": 17, + "enrollment": 1697, + "rate": 10.02 + }, + { + "leaid": "1906270", + "name": "Carlisle Comm School District", + "arrests": 16, + "enrollment": 1181, + "rate": 13.55 + }, + { + "leaid": "1914640", + "name": "Indianola Comm School District", + "arrests": 15, + "enrollment": 1881, + "rate": 7.97 + }, + { + "leaid": "1930510", + "name": "Waukee Comm School District", + "arrests": 14, + "enrollment": 5456, + "rate": 2.57 + }, + { + "leaid": "1930240", + "name": "Washington Comm School District", + "arrests": 13, + "enrollment": 785, + "rate": 16.56 + }, + { + "leaid": "1908970", + "name": "Des Moines Independent Comm School District", + "arrests": 9, + "enrollment": 14007, + "rate": 0.64 + }, + { + "leaid": "1907170", + "name": "Cherokee Comm School District", + "arrests": 7, + "enrollment": 651, + "rate": 10.75 + } + ], + "ID": [ + { + "leaid": "1603240", + "name": "TWIN FALLS DISTRICT", + "arrests": 14, + "enrollment": 5150, + "rate": 2.72 + }, + { + "leaid": "1602670", + "name": "POST FALLS DISTRICT", + "arrests": 3, + "enrollment": 3190, + "rate": 0.94 + }, + { + "leaid": "1602130", + "name": "MIDDLETON DISTRICT", + "arrests": 2, + "enrollment": 2436, + "rate": 0.82 + }, + { + "leaid": "1602340", + "name": "NAMPA SCHOOL DISTRICT", + "arrests": 2, + "enrollment": 7749, + "rate": 0.26 + }, + { + "leaid": "1600142", + "name": "WHITE PINE CHARTER SCHOOL INC.", + "arrests": 1, + "enrollment": 542, + "rate": 1.85 + }, + { + "leaid": "1600270", + "name": "BLACKFOOT DISTRICT", + "arrests": 1, + "enrollment": 1758, + "rate": 0.57 + }, + { + "leaid": "1600600", + "name": "VALLIVUE SCHOOL DISTRICT", + "arrests": 1, + "enrollment": 4960, + "rate": 0.2 + }, + { + "leaid": "1601570", + "name": "JEFFERSON COUNTY JOINT DISTRICT", + "arrests": 1, + "enrollment": 3543, + "rate": 0.28 + }, + { + "leaid": "1601980", + "name": "MARSING JOINT DISTRICT", + "arrests": 1, + "enrollment": 465, + "rate": 2.15 + }, + { + "leaid": "1602100", + "name": "JOINT SCHOOL DISTRICT NO. 2", + "arrests": 1, + "enrollment": 21912, + "rate": 0.05 + }, + { + "leaid": "1603060", + "name": "ST MARIES JOINT DISTRICT", + "arrests": 1, + "enrollment": 471, + "rate": 2.12 + } + ], + "IL": [ + { + "leaid": "1712000", + "name": "DeKalb CUSD 428", + "arrests": 1379, + "enrollment": 3254, + "rate": 423.79 + }, + { + "leaid": "1731110", + "name": "Pekin CSD 303", + "arrests": 94, + "enrollment": 1719, + "rate": 54.68 + }, + { + "leaid": "1730450", + "name": "Township HSD 211", + "arrests": 66, + "enrollment": 8996, + "rate": 7.34 + }, + { + "leaid": "1716830", + "name": "Glenbard Twp HSD 87", + "arrests": 62, + "enrollment": 6242, + "rate": 9.93 + }, + { + "leaid": "1722110", + "name": "La Salle-Peru Twp HSD 120", + "arrests": 61, + "enrollment": 1244, + "rate": 49.04 + }, + { + "leaid": "1734510", + "name": "Rockford SD 205", + "arrests": 59, + "enrollment": 13477, + "rate": 4.38 + }, + { + "leaid": "1720610", + "name": "Joliet Twp HSD 204", + "arrests": 39, + "enrollment": 6529, + "rate": 5.97 + }, + { + "leaid": "1710650", + "name": "Collinsville CUSD 10", + "arrests": 33, + "enrollment": 2715, + "rate": 12.15 + }, + { + "leaid": "1705790", + "name": "Belvidere CUSD 100", + "arrests": 30, + "enrollment": 4184, + "rate": 7.17 + }, + { + "leaid": "1704170", + "name": "Township HSD 214", + "arrests": 22, + "enrollment": 10558, + "rate": 2.08 + }, + { + "leaid": "1731740", + "name": "Plainfield SD 202", + "arrests": 22, + "enrollment": 12999, + "rate": 1.69 + }, + { + "leaid": "1739960", + "name": "Urbana SD 116", + "arrests": 22, + "enrollment": 1760, + "rate": 12.5 + }, + { + "leaid": "1741690", + "name": "Indian Prairie CUSD 204", + "arrests": 21, + "enrollment": 8992, + "rate": 2.34 + }, + { + "leaid": "1720280", + "name": "Jacksonville SD 117", + "arrests": 20, + "enrollment": 1387, + "rate": 14.42 + }, + { + "leaid": "1704680", + "name": "Aurora East USD 131", + "arrests": 16, + "enrollment": 6844, + "rate": 2.34 + } + ], + "IN": [ + { + "leaid": "1803270", + "name": "Elkhart Community Schools", + "arrests": 86, + "enrollment": 4873, + "rate": 17.65 + }, + { + "leaid": "1803940", + "name": "Greater Clark County Schools", + "arrests": 69, + "enrollment": 4944, + "rate": 13.96 + }, + { + "leaid": "1803630", + "name": "Fort Wayne Community Schools", + "arrests": 63, + "enrollment": 12789, + "rate": 4.93 + }, + { + "leaid": "1812090", + "name": "Vigo County School Corp", + "arrests": 44, + "enrollment": 6510, + "rate": 6.76 + }, + { + "leaid": "1802400", + "name": "Concord Community Schools", + "arrests": 42, + "enrollment": 3208, + "rate": 13.09 + }, + { + "leaid": "1801890", + "name": "Clark-Pleasant Community Sch Corp", + "arrests": 40, + "enrollment": 2992, + "rate": 13.37 + }, + { + "leaid": "1803510", + "name": "Fayette County School Corporation", + "arrests": 39, + "enrollment": 1469, + "rate": 26.55 + }, + { + "leaid": "1801020", + "name": "Brownsburg Community School Corp", + "arrests": 35, + "enrollment": 4695, + "rate": 7.45 + }, + { + "leaid": "1805790", + "name": "Lebanon Community School Corp", + "arrests": 33, + "enrollment": 1743, + "rate": 18.93 + }, + { + "leaid": "1801440", + "name": "Center Grove Community School Corp", + "arrests": 31, + "enrollment": 4460, + "rate": 6.95 + }, + { + "leaid": "1804590", + "name": "School City of Hobart", + "arrests": 28, + "enrollment": 2170, + "rate": 12.9 + }, + { + "leaid": "1809510", + "name": "Richmond Community Schools", + "arrests": 27, + "enrollment": 1753, + "rate": 15.4 + }, + { + "leaid": "1803870", + "name": "Gary Community School Corp", + "arrests": 23, + "enrollment": 2151, + "rate": 10.69 + }, + { + "leaid": "1812390", + "name": "Warrick County School Corp", + "arrests": 22, + "enrollment": 5100, + "rate": 4.31 + }, + { + "leaid": "1803450", + "name": "Evansville Vanderburgh School Corp", + "arrests": 20, + "enrollment": 10707, + "rate": 1.87 + } + ], + "KS": [ + { + "leaid": "2005460", + "name": "Derby", + "arrests": 1642, + "enrollment": 3343, + "rate": 491.18 + }, + { + "leaid": "2007950", + "name": "Kansas City", + "arrests": 141, + "enrollment": 10129, + "rate": 13.92 + }, + { + "leaid": "2012990", + "name": "Wichita", + "arrests": 34, + "enrollment": 21833, + "rate": 1.56 + }, + { + "leaid": "2012260", + "name": "Topeka Public Schools", + "arrests": 22, + "enrollment": 5714, + "rate": 3.85 + }, + { + "leaid": "2012360", + "name": "Turner-Kansas City", + "arrests": 12, + "enrollment": 1629, + "rate": 7.37 + }, + { + "leaid": "2009960", + "name": "Newton", + "arrests": 11, + "enrollment": 1378, + "rate": 7.98 + }, + { + "leaid": "2003390", + "name": "Chaparral Schools", + "arrests": 6, + "enrollment": 318, + "rate": 18.87 + }, + { + "leaid": "2004920", + "name": "Clearwater", + "arrests": 6, + "enrollment": 760, + "rate": 7.89 + }, + { + "leaid": "2007050", + "name": "Haysville", + "arrests": 5, + "enrollment": 2775, + "rate": 1.8 + }, + { + "leaid": "2008400", + "name": "Lawrence", + "arrests": 5, + "enrollment": 5761, + "rate": 0.87 + }, + { + "leaid": "2010140", + "name": "Olathe", + "arrests": 4, + "enrollment": 14682, + "rate": 0.27 + }, + { + "leaid": "2010710", + "name": "Pittsburg", + "arrests": 4, + "enrollment": 1469, + "rate": 2.72 + }, + { + "leaid": "2011640", + "name": "Shawnee Mission Pub Sch", + "arrests": 4, + "enrollment": 10832, + "rate": 0.37 + }, + { + "leaid": "2006180", + "name": "Fort Scott", + "arrests": 3, + "enrollment": 993, + "rate": 3.02 + }, + { + "leaid": "2008250", + "name": "Prairie View", + "arrests": 3, + "enrollment": 485, + "rate": 6.19 + } + ], + "KY": [ + { + "leaid": "2101470", + "name": "Daviess County", + "arrests": 40, + "enrollment": 5399, + "rate": 7.41 + }, + { + "leaid": "2102990", + "name": "Jefferson County", + "arrests": 17, + "enrollment": 47447, + "rate": 0.36 + }, + { + "leaid": "2102860", + "name": "Hopkins County", + "arrests": 6, + "enrollment": 3536, + "rate": 1.7 + }, + { + "leaid": "2101860", + "name": "Fayette County", + "arrests": 5, + "enrollment": 20333, + "rate": 0.25 + }, + { + "leaid": "2101150", + "name": "Christian County", + "arrests": 4, + "enrollment": 4184, + "rate": 0.96 + }, + { + "leaid": "2102400", + "name": "Greenup County", + "arrests": 3, + "enrollment": 1480, + "rate": 2.03 + }, + { + "leaid": "2102540", + "name": "Harlan County", + "arrests": 3, + "enrollment": 3420, + "rate": 0.88 + }, + { + "leaid": "2104890", + "name": "Powell County", + "arrests": 3, + "enrollment": 1174, + "rate": 2.56 + }, + { + "leaid": "2105580", + "name": "Trigg County", + "arrests": 3, + "enrollment": 1016, + "rate": 2.95 + }, + { + "leaid": "2100510", + "name": "Boone County", + "arrests": 2, + "enrollment": 10389, + "rate": 0.19 + }, + { + "leaid": "2100960", + "name": "Carlisle County", + "arrests": 2, + "enrollment": 342, + "rate": 5.85 + }, + { + "leaid": "2102710", + "name": "Henderson County", + "arrests": 2, + "enrollment": 3372, + "rate": 0.59 + }, + { + "leaid": "2105320", + "name": "Shelby County", + "arrests": 2, + "enrollment": 3825, + "rate": 0.52 + }, + { + "leaid": "2100030", + "name": "Adair County", + "arrests": 1, + "enrollment": 1350, + "rate": 0.74 + }, + { + "leaid": "2100081", + "name": "Muhlenberg County", + "arrests": 1, + "enrollment": 2138, + "rate": 0.47 + } + ], + "LA": [ + { + "leaid": "2200840", + "name": "Jefferson Parish", + "arrests": 242, + "enrollment": 30038, + "rate": 8.06 + }, + { + "leaid": "2201740", + "name": "Terrebonne Parish", + "arrests": 195, + "enrollment": 6859, + "rate": 28.43 + }, + { + "leaid": "2200300", + "name": "Caddo Parish", + "arrests": 79, + "enrollment": 21269, + "rate": 3.71 + }, + { + "leaid": "2200270", + "name": "Bossier Parish", + "arrests": 51, + "enrollment": 10785, + "rate": 4.73 + }, + { + "leaid": "2201440", + "name": "St. Charles Parish", + "arrests": 31, + "enrollment": 4663, + "rate": 6.65 + }, + { + "leaid": "2201620", + "name": "St. Mary Parish", + "arrests": 26, + "enrollment": 4155, + "rate": 6.26 + }, + { + "leaid": "2200720", + "name": "Iberia Parish", + "arrests": 25, + "enrollment": 4704, + "rate": 5.31 + }, + { + "leaid": "2200900", + "name": "Lafourche Parish", + "arrests": 17, + "enrollment": 7131, + "rate": 2.38 + }, + { + "leaid": "2201890", + "name": "Webster Parish", + "arrests": 17, + "enrollment": 3017, + "rate": 5.63 + }, + { + "leaid": "2201650", + "name": "St. Tammany Parish", + "arrests": 15, + "enrollment": 17872, + "rate": 0.84 + }, + { + "leaid": "2201200", + "name": "Ouachita Parish", + "arrests": 11, + "enrollment": 9355, + "rate": 1.18 + }, + { + "leaid": "2201500", + "name": "St. James Parish", + "arrests": 11, + "enrollment": 1584, + "rate": 6.94 + }, + { + "leaid": "2200540", + "name": "East Baton Rouge Parish", + "arrests": 5, + "enrollment": 23360, + "rate": 0.21 + }, + { + "leaid": "2201230", + "name": "Plaquemines Parish", + "arrests": 4, + "enrollment": 2066, + "rate": 1.94 + }, + { + "leaid": "2201830", + "name": "Vernon Parish", + "arrests": 4, + "enrollment": 3712, + "rate": 1.08 + } + ], + "MA": [ + { + "leaid": "2511130", + "name": "Springfield", + "arrests": 12, + "enrollment": 12021, + "rate": 1 + }, + { + "leaid": "2506270", + "name": "Holyoke", + "arrests": 5, + "enrollment": 3722, + "rate": 1.34 + }, + { + "leaid": "2507110", + "name": "Lynn", + "arrests": 5, + "enrollment": 7690, + "rate": 0.65 + }, + { + "leaid": "2510620", + "name": "Sharon", + "arrests": 3, + "enrollment": 1280, + "rate": 2.34 + }, + { + "leaid": "2500073", + "name": "Sizer School: A North Central Charter Essential (District)", + "arrests": 2, + "enrollment": 329, + "rate": 6.08 + }, + { + "leaid": "2505970", + "name": "Haverhill", + "arrests": 2, + "enrollment": 4696, + "rate": 0.43 + }, + { + "leaid": "2507020", + "name": "Lowell", + "arrests": 2, + "enrollment": 5994, + "rate": 0.33 + }, + { + "leaid": "2510615", + "name": "Shawsheen Valley Regional Vocational Technical", + "arrests": 2, + "enrollment": 1278, + "rate": 1.56 + }, + { + "leaid": "2512030", + "name": "Ware", + "arrests": 2, + "enrollment": 467, + "rate": 4.28 + }, + { + "leaid": "2500075", + "name": "Excel Academy Charter (District)", + "arrests": 1, + "enrollment": 1328, + "rate": 0.75 + }, + { + "leaid": "2500090", + "name": "Phoenix Charter Academy (District)", + "arrests": 1, + "enrollment": 185, + "rate": 5.41 + }, + { + "leaid": "2501980", + "name": "Arlington", + "arrests": 1, + "enrollment": 1987, + "rate": 0.5 + }, + { + "leaid": "2502640", + "name": "Beverly", + "arrests": 1, + "enrollment": 2551, + "rate": 0.39 + }, + { + "leaid": "2502715", + "name": "Blackstone-Millville", + "arrests": 1, + "enrollment": 760, + "rate": 1.32 + }, + { + "leaid": "2503090", + "name": "Brockton", + "arrests": 1, + "enrollment": 8165, + "rate": 0.12 + } + ], + "MD": [ + { + "leaid": "2400060", + "name": "Anne Arundel County Public Schools", + "arrests": 355, + "enrollment": 40930, + "rate": 8.67 + }, + { + "leaid": "2400600", + "name": "St. Mary's County Public Schools", + "arrests": 176, + "enrollment": 8459, + "rate": 20.81 + }, + { + "leaid": "2400690", + "name": "Wicomico County Public Schools", + "arrests": 169, + "enrollment": 6751, + "rate": 25.03 + }, + { + "leaid": "2400390", + "name": "Harford County Public Schools", + "arrests": 125, + "enrollment": 18653, + "rate": 6.7 + }, + { + "leaid": "2400510", + "name": "Prince George's County Public Schools", + "arrests": 120, + "enrollment": 69546, + "rate": 1.73 + }, + { + "leaid": "2400270", + "name": "Charles County Public Schools", + "arrests": 77, + "enrollment": 13589, + "rate": 5.67 + }, + { + "leaid": "2400300", + "name": "Dorchester County Public Schools", + "arrests": 46, + "enrollment": 2351, + "rate": 19.57 + }, + { + "leaid": "2400630", + "name": "Talbot County Public Schools", + "arrests": 40, + "enrollment": 2219, + "rate": 18.03 + }, + { + "leaid": "2400090", + "name": "Baltimore City Public Schools", + "arrests": 34, + "enrollment": 62418, + "rate": 0.54 + }, + { + "leaid": "2400480", + "name": "Montgomery County Public Schools", + "arrests": 20, + "enrollment": 70544, + "rate": 0.28 + }, + { + "leaid": "2400330", + "name": "Frederick County Public Schools", + "arrests": 14, + "enrollment": 22059, + "rate": 0.63 + }, + { + "leaid": "2400150", + "name": "Calvert County Public Schools", + "arrests": 8, + "enrollment": 7692, + "rate": 1.04 + }, + { + "leaid": "2400720", + "name": "Worcester County Public Schools", + "arrests": 7, + "enrollment": 3245, + "rate": 2.16 + }, + { + "leaid": "2400420", + "name": "Howard County Public Schools", + "arrests": 5, + "enrollment": 22453, + "rate": 0.22 + }, + { + "leaid": "2400660", + "name": "Washington County Public Schools", + "arrests": 4, + "enrollment": 10197, + "rate": 0.39 + } + ], + "ME": [ + { + "leaid": "2303510", + "name": "Brewer Public Schools", + "arrests": 1, + "enrollment": 1505, + "rate": 0.66 + }, + { + "leaid": "2306160", + "name": "Great Salt Bay CSD", + "arrests": 1, + "enrollment": 383, + "rate": 2.61 + }, + { + "leaid": "2314812", + "name": "Baxter Academy for Technology and Science", + "arrests": 1, + "enrollment": 361, + "rate": 2.77 + } + ], + "MI": [ + { + "leaid": "2608580", + "name": "Center Line Public Schools", + "arrests": 24, + "enrollment": 1064, + "rate": 22.56 + }, + { + "leaid": "2610750", + "name": "Constantine Public School District", + "arrests": 17, + "enrollment": 559, + "rate": 30.41 + }, + { + "leaid": "2635850", + "name": "West Branch-Rose City Area Schools", + "arrests": 17, + "enrollment": 1113, + "rate": 15.27 + }, + { + "leaid": "2607590", + "name": "Cadillac Area Public Schools", + "arrests": 10, + "enrollment": 1729, + "rate": 5.78 + }, + { + "leaid": "2601103", + "name": "Detroit Public Schools Community District", + "arrests": 7, + "enrollment": 41334, + "rate": 0.17 + }, + { + "leaid": "2606990", + "name": "Columbia School District", + "arrests": 6, + "enrollment": 807, + "rate": 7.43 + }, + { + "leaid": "2623550", + "name": "Menominee Area Public Schools", + "arrests": 6, + "enrollment": 511, + "rate": 11.74 + }, + { + "leaid": "2628950", + "name": "Portage Public Schools", + "arrests": 6, + "enrollment": 4023, + "rate": 1.49 + }, + { + "leaid": "2628830", + "name": "Port Huron Area School District", + "arrests": 5, + "enrollment": 3843, + "rate": 1.3 + }, + { + "leaid": "2635310", + "name": "Waterford School District", + "arrests": 5, + "enrollment": 3971, + "rate": 1.26 + }, + { + "leaid": "2616080", + "name": "Godfrey-Lee Public Schools", + "arrests": 4, + "enrollment": 988, + "rate": 4.05 + }, + { + "leaid": "2614460", + "name": "Fitzgerald Public Schools", + "arrests": 3, + "enrollment": 971, + "rate": 3.09 + }, + { + "leaid": "2630990", + "name": "Sault Ste. Marie Area Schools", + "arrests": 3, + "enrollment": 1484, + "rate": 2.02 + }, + { + "leaid": "2608770", + "name": "Charlotte Public Schools", + "arrests": 2, + "enrollment": 1549, + "rate": 1.29 + }, + { + "leaid": "2608910", + "name": "Cheboygan Area Schools", + "arrests": 2, + "enrollment": 820, + "rate": 2.44 + } + ], + "MN": [ + { + "leaid": "2713170", + "name": "GRAND RAPIDS PUBLIC SCHOOL DISTRICT", + "arrests": 10, + "enrollment": 2195, + "rate": 4.56 + }, + { + "leaid": "2702264", + "name": "NORTHEAST METRO 916", + "arrests": 9, + "enrollment": 649, + "rate": 13.87 + }, + { + "leaid": "2731780", + "name": "ROBBINSDALE PUBLIC SCHOOL DISTRICT", + "arrests": 7, + "enrollment": 5383, + "rate": 1.3 + }, + { + "leaid": "2700063", + "name": "MN VALLEY EDUCATION DISTRICT", + "arrests": 6, + "enrollment": 52, + "rate": 115.38 + }, + { + "leaid": "2721240", + "name": "Minneapolis Public School District", + "arrests": 6, + "enrollment": 14678, + "rate": 0.41 + }, + { + "leaid": "2700025", + "name": "Intermediate School District 287", + "arrests": 4, + "enrollment": 603, + "rate": 6.63 + }, + { + "leaid": "2700291", + "name": "EAST RANGE ACADEMY OF TECH-SCIENCE", + "arrests": 4, + "enrollment": 102, + "rate": 39.22 + }, + { + "leaid": "2718750", + "name": "MAHTOMEDI PUBLIC SCHOOL DISTRICT", + "arrests": 4, + "enrollment": 1747, + "rate": 2.29 + }, + { + "leaid": "2700466", + "name": "Rock Ridge Public Schools", + "arrests": 3, + "enrollment": 1060, + "rate": 2.83 + }, + { + "leaid": "2733480", + "name": "ST. CLAIR PUBLIC SCHOOL DISTRICT", + "arrests": 3, + "enrollment": 377, + "rate": 7.96 + }, + { + "leaid": "2733840", + "name": "ST. PAUL PUBLIC SCHOOL DISTRICT", + "arrests": 3, + "enrollment": 11492, + "rate": 0.26 + }, + { + "leaid": "2700474", + "name": "Kalon Prep Academy", + "arrests": 2, + "enrollment": 102, + "rate": 19.61 + }, + { + "leaid": "2711370", + "name": "Elk River School District", + "arrests": 2, + "enrollment": 6802, + "rate": 0.29 + }, + { + "leaid": "2714970", + "name": "HUTCHINSON PUBLIC SCHOOL DISTRICT", + "arrests": 2, + "enrollment": 1508, + "rate": 1.33 + }, + { + "leaid": "2723850", + "name": "North St. Paul-Maplewood Oakdale", + "arrests": 2, + "enrollment": 3861, + "rate": 0.52 + } + ], + "MO": [ + { + "leaid": "2928860", + "name": "SPRINGFIELD R-XII", + "arrests": 123, + "enrollment": 11200, + "rate": 10.98 + }, + { + "leaid": "2923780", + "name": "PEMISCOT CO. SPEC. SCH. DIST.", + "arrests": 95, + "enrollment": 218, + "rate": 435.78 + }, + { + "leaid": "2908370", + "name": "FT. ZUMWALT R-II", + "arrests": 73, + "enrollment": 9200, + "rate": 7.93 + }, + { + "leaid": "2922800", + "name": "NORTH KANSAS CITY 74", + "arrests": 56, + "enrollment": 8205, + "rate": 6.83 + }, + { + "leaid": "2921510", + "name": "MOUNTAIN GROVE R-III", + "arrests": 40, + "enrollment": 897, + "rate": 44.59 + }, + { + "leaid": "2913650", + "name": "HANNIBAL 60", + "arrests": 39, + "enrollment": 1891, + "rate": 20.62 + }, + { + "leaid": "2901000", + "name": "COLUMBIA 93", + "arrests": 27, + "enrollment": 8402, + "rate": 3.21 + }, + { + "leaid": "2906990", + "name": "CAMDENTON R-III", + "arrests": 21, + "enrollment": 2547, + "rate": 8.24 + }, + { + "leaid": "2925450", + "name": "POPLAR BLUFF R-I", + "arrests": 14, + "enrollment": 2130, + "rate": 6.57 + }, + { + "leaid": "2921810", + "name": "NEOSHO SCHOOL DISTRICT", + "arrests": 8, + "enrollment": 1864, + "rate": 4.29 + }, + { + "leaid": "2910500", + "name": "DESOTO 73", + "arrests": 6, + "enrollment": 1214, + "rate": 4.94 + }, + { + "leaid": "2912030", + "name": "FESTUS R-VI", + "arrests": 5, + "enrollment": 1440, + "rate": 3.47 + }, + { + "leaid": "2920810", + "name": "MEXICO 59", + "arrests": 5, + "enrollment": 1052, + "rate": 4.75 + }, + { + "leaid": "2908670", + "name": "CHARLESTON R-I", + "arrests": 4, + "enrollment": 324, + "rate": 12.35 + }, + { + "leaid": "2927060", + "name": "ST. JOSEPH", + "arrests": 4, + "enrollment": 4429, + "rate": 0.9 + } + ], + "MS": [ + { + "leaid": "2801770", + "name": "HARRISON CO SCHOOL DIST", + "arrests": 88, + "enrollment": 7875, + "rate": 11.17 + }, + { + "leaid": "2802280", + "name": "JONES CO SCHOOL DIST", + "arrests": 54, + "enrollment": 3724, + "rate": 14.5 + }, + { + "leaid": "2801320", + "name": "DESOTO CO SCHOOL DIST", + "arrests": 38, + "enrollment": 18229, + "rate": 2.08 + }, + { + "leaid": "2801710", + "name": "GULFPORT SCHOOL DIST", + "arrests": 16, + "enrollment": 3097, + "rate": 5.17 + }, + { + "leaid": "2802880", + "name": "MCCOMB SCHOOL DISTRICT", + "arrests": 14, + "enrollment": 997, + "rate": 14.04 + }, + { + "leaid": "2802850", + "name": "MARSHALL CO SCHOOL DIST", + "arrests": 10, + "enrollment": 1512, + "rate": 6.61 + }, + { + "leaid": "2804080", + "name": "SOUTH PIKE SCHOOL DIST", + "arrests": 7, + "enrollment": 742, + "rate": 9.43 + }, + { + "leaid": "2800189", + "name": "STARKVILLE- OKTIBBEHA CONS DIST", + "arrests": 5, + "enrollment": 2522, + "rate": 1.98 + }, + { + "leaid": "2803660", + "name": "PONTOTOC CO SCHOOL DIST", + "arrests": 5, + "enrollment": 1659, + "rate": 3.01 + }, + { + "leaid": "2801260", + "name": "CORINTH SCHOOL DIST", + "arrests": 4, + "enrollment": 1262, + "rate": 3.17 + }, + { + "leaid": "2804110", + "name": "SOUTH TIPPAH SCHOOL DIST", + "arrests": 4, + "enrollment": 1899, + "rate": 2.11 + }, + { + "leaid": "2802910", + "name": "MERIDIAN PUBLIC SCHOOLS", + "arrests": 3, + "enrollment": 2313, + "rate": 1.3 + }, + { + "leaid": "2803000", + "name": "MOSS POINT SEPARATE SCHOOL DIST", + "arrests": 3, + "enrollment": 837, + "rate": 3.58 + }, + { + "leaid": "2803030", + "name": "NATCHEZ-ADAMS SCHOOL DISTRICT", + "arrests": 3, + "enrollment": 1461, + "rate": 2.05 + }, + { + "leaid": "2803090", + "name": "NETTLETON SCHOOL DIST", + "arrests": 3, + "enrollment": 832, + "rate": 3.61 + } + ], + "MT": [ + { + "leaid": "3013050", + "name": "Great Falls H S", + "arrests": 37, + "enrollment": 2895, + "rate": 12.78 + }, + { + "leaid": "3013040", + "name": "Great Falls Elem", + "arrests": 17, + "enrollment": 1375, + "rate": 12.36 + }, + { + "leaid": "3007110", + "name": "Columbia Falls Elem", + "arrests": 15, + "enrollment": 492, + "rate": 30.49 + }, + { + "leaid": "3010530", + "name": "Fergus H S", + "arrests": 9, + "enrollment": 332, + "rate": 27.11 + }, + { + "leaid": "3028620", + "name": "Wolf Point H S", + "arrests": 8, + "enrollment": 198, + "rate": 40.4 + }, + { + "leaid": "3013340", + "name": "Hardin H S", + "arrests": 7, + "enrollment": 505, + "rate": 13.86 + }, + { + "leaid": "3022800", + "name": "Ronan H S", + "arrests": 4, + "enrollment": 317, + "rate": 12.62 + }, + { + "leaid": "3021090", + "name": "Polson H S", + "arrests": 3, + "enrollment": 473, + "rate": 6.34 + }, + { + "leaid": "3020100", + "name": "Park H S", + "arrests": 2, + "enrollment": 407, + "rate": 4.91 + }, + { + "leaid": "3021060", + "name": "Polson Elem", + "arrests": 2, + "enrollment": 518, + "rate": 3.86 + }, + { + "leaid": "3022790", + "name": "Ronan Elem", + "arrests": 2, + "enrollment": 406, + "rate": 4.93 + }, + { + "leaid": "3002030", + "name": "Anaconda H S", + "arrests": 1, + "enrollment": 283, + "rate": 3.53 + }, + { + "leaid": "3003090", + "name": "Beaverhead County H S", + "arrests": 1, + "enrollment": 324, + "rate": 3.09 + }, + { + "leaid": "3011520", + "name": "Frenchtown K-12 Schools", + "arrests": 1, + "enrollment": 784, + "rate": 1.28 + }, + { + "leaid": "3013310", + "name": "Hardin Elem", + "arrests": 1, + "enrollment": 423, + "rate": 2.36 + } + ], + "NC": [ + { + "leaid": "3702010", + "name": "Harnett County Schools", + "arrests": 95, + "enrollment": 10040, + "rate": 9.46 + }, + { + "leaid": "3704720", + "name": "Wake County Schools", + "arrests": 66, + "enrollment": 78512, + "rate": 0.84 + }, + { + "leaid": "3704620", + "name": "Union County Public Schools", + "arrests": 62, + "enrollment": 21631, + "rate": 2.87 + }, + { + "leaid": "3702970", + "name": "Charlotte-Mecklenburg Schools", + "arrests": 42, + "enrollment": 77255, + "rate": 0.54 + }, + { + "leaid": "3700012", + "name": "Pitt County Schools", + "arrests": 35, + "enrollment": 13945, + "rate": 2.51 + }, + { + "leaid": "3703990", + "name": "Rockingham County Schools", + "arrests": 28, + "enrollment": 5633, + "rate": 4.97 + }, + { + "leaid": "3701920", + "name": "Guilford County Schools", + "arrests": 3, + "enrollment": 34806, + "rate": 0.09 + }, + { + "leaid": "3703930", + "name": "Public Schools of Robeson County", + "arrests": 3, + "enrollment": 12565, + "rate": 0.24 + }, + { + "leaid": "3702880", + "name": "Martin County Schools", + "arrests": 2, + "enrollment": 1276, + "rate": 1.57 + }, + { + "leaid": "3700690", + "name": "Catawba County Schools", + "arrests": 1, + "enrollment": 6472, + "rate": 0.15 + }, + { + "leaid": "3700900", + "name": "Cleveland County Schools", + "arrests": 1, + "enrollment": 6899, + "rate": 0.14 + }, + { + "leaid": "3702310", + "name": "Iredell-Statesville Schools", + "arrests": 1, + "enrollment": 11050, + "rate": 0.09 + }, + { + "leaid": "3703330", + "name": "New Hanover County Schools", + "arrests": 1, + "enrollment": 13585, + "rate": 0.07 + }, + { + "leaid": "3703900", + "name": "Roanoke Rapids City Schools", + "arrests": 1, + "enrollment": 1394, + "rate": 0.72 + } + ], + "ND": [ + { + "leaid": "3800014", + "name": "BISMARCK 1", + "arrests": 147, + "enrollment": 6696, + "rate": 21.95 + }, + { + "leaid": "3800021", + "name": "JAMESTOWN 1", + "arrests": 16, + "enrollment": 1164, + "rate": 13.75 + }, + { + "leaid": "3813030", + "name": "MINOT 1", + "arrests": 16, + "enrollment": 3680, + "rate": 4.35 + }, + { + "leaid": "3808130", + "name": "GRAND FORKS 1", + "arrests": 6, + "enrollment": 3785, + "rate": 1.59 + }, + { + "leaid": "3814940", + "name": "PARSHALL 3", + "arrests": 6, + "enrollment": 100, + "rate": 60 + }, + { + "leaid": "3805040", + "name": "DEVILS LAKE 1", + "arrests": 4, + "enrollment": 1008, + "rate": 3.97 + }, + { + "leaid": "3819410", + "name": "WEST FARGO 6", + "arrests": 2, + "enrollment": 5594, + "rate": 0.36 + }, + { + "leaid": "3800405", + "name": "WILLISTON BASIN 7", + "arrests": 1, + "enrollment": 2125, + "rate": 0.47 + }, + { + "leaid": "3811430", + "name": "LISBON 19", + "arrests": 1, + "enrollment": 372, + "rate": 2.69 + } + ], + "NE": [ + { + "leaid": "3176860", + "name": "SO SIOUX CITY COMMUNITY SCHS", + "arrests": 41, + "enrollment": 1834, + "rate": 22.36 + }, + { + "leaid": "3174820", + "name": "OMAHA PUBLIC SCHOOLS", + "arrests": 39, + "enrollment": 22520, + "rate": 1.73 + }, + { + "leaid": "3175270", + "name": "PAPILLION LA VISTA COMMUNITY SCHOOLS", + "arrests": 25, + "enrollment": 5250, + "rate": 4.76 + }, + { + "leaid": "3104100", + "name": "BLAIR COMMUNITY SCHOOLS", + "arrests": 23, + "enrollment": 1147, + "rate": 20.05 + }, + { + "leaid": "3175900", + "name": "RALSTON PUBLIC SCHOOLS", + "arrests": 21, + "enrollment": 1397, + "rate": 15.03 + }, + { + "leaid": "3170110", + "name": "ELKHORN PUBLIC SCHOOLS", + "arrests": 11, + "enrollment": 5069, + "rate": 2.17 + }, + { + "leaid": "3171220", + "name": "GRETNA PUBLIC SCHOOLS", + "arrests": 8, + "enrollment": 2959, + "rate": 2.7 + }, + { + "leaid": "3178660", + "name": "WESTSIDE COMMUNITY SCHOOLS", + "arrests": 8, + "enrollment": 2719, + "rate": 2.94 + }, + { + "leaid": "3100029", + "name": "SUPERIOR PUBLIC SCHOOLS", + "arrests": 6, + "enrollment": 215, + "rate": 27.91 + }, + { + "leaid": "3119560", + "name": "UMO N HO N NATION PUBLIC SCHS", + "arrests": 3, + "enrollment": 258, + "rate": 11.63 + }, + { + "leaid": "3173740", + "name": "MILLARD PUBLIC SCHOOLS", + "arrests": 2, + "enrollment": 11350, + "rate": 0.18 + }, + { + "leaid": "3100122", + "name": "SOUTH CENTRAL NEBRASKA UNIFIED 5", + "arrests": 1, + "enrollment": 307, + "rate": 3.26 + }, + { + "leaid": "3100179", + "name": "HUMBOLDT TABLE ROCK STEINAUER", + "arrests": 1, + "enrollment": 144, + "rate": 6.94 + }, + { + "leaid": "3103060", + "name": "ANSLEY PUBLIC SCHOOLS", + "arrests": 1, + "enrollment": 50, + "rate": 20 + }, + { + "leaid": "3103130", + "name": "ARLINGTON PUBLIC SCHOOLS", + "arrests": 1, + "enrollment": 332, + "rate": 3.01 + } + ], + "NH": [ + { + "leaid": "3304590", + "name": "Manchester School District", + "arrests": 37, + "enrollment": 6412, + "rate": 5.77 + }, + { + "leaid": "3302460", + "name": "Concord School District", + "arrests": 30, + "enrollment": 2216, + "rate": 13.54 + }, + { + "leaid": "3304230", + "name": "Lebanon School District", + "arrests": 4, + "enrollment": 990, + "rate": 4.04 + }, + { + "leaid": "3307360", + "name": "Pinkerton Academy School District", + "arrests": 3, + "enrollment": 2962, + "rate": 1.01 + }, + { + "leaid": "3399965", + "name": "Pemi-baker Regional School District", + "arrests": 3, + "enrollment": 661, + "rate": 4.54 + }, + { + "leaid": "3304740", + "name": "Merrimack School District", + "arrests": 2, + "enrollment": 1637, + "rate": 1.22 + }, + { + "leaid": "3301740", + "name": "Bedford School District", + "arrests": 1, + "enrollment": 1840, + "rate": 0.54 + }, + { + "leaid": "3301950", + "name": "Bow School District", + "arrests": 1, + "enrollment": 1148, + "rate": 0.87 + }, + { + "leaid": "3302340", + "name": "Claremont School District", + "arrests": 1, + "enrollment": 868, + "rate": 1.15 + }, + { + "leaid": "3304760", + "name": "Merrimack Valley School District", + "arrests": 1, + "enrollment": 1214, + "rate": 0.82 + }, + { + "leaid": "3305400", + "name": "Northumberland School District", + "arrests": 1, + "enrollment": 190, + "rate": 5.26 + } + ], + "NJ": [ + { + "leaid": "3408490", + "name": "Lenape Regional High School District", + "arrests": 50, + "enrollment": 5854, + "rate": 8.54 + }, + { + "leaid": "3412930", + "name": "Perth Amboy Public School District", + "arrests": 31, + "enrollment": 5568, + "rate": 5.57 + }, + { + "leaid": "3404110", + "name": "East Brunswick Township School District", + "arrests": 18, + "enrollment": 2967, + "rate": 6.07 + }, + { + "leaid": "3405820", + "name": "Gateway Regional High School District", + "arrests": 16, + "enrollment": 808, + "rate": 19.8 + }, + { + "leaid": "3404590", + "name": "Elizabeth Public Schools", + "arrests": 11, + "enrollment": 24101, + "rate": 0.46 + }, + { + "leaid": "3402220", + "name": "Brick Township Public School District", + "arrests": 8, + "enrollment": 4266, + "rate": 1.88 + }, + { + "leaid": "3402250", + "name": "Bridgeton City School District", + "arrests": 8, + "enrollment": 5453, + "rate": 1.47 + }, + { + "leaid": "3404500", + "name": "Edison Township School District", + "arrests": 8, + "enrollment": 3050, + "rate": 2.62 + }, + { + "leaid": "3406270", + "name": "Hackensack School District", + "arrests": 8, + "enrollment": 3129, + "rate": 2.56 + }, + { + "leaid": "3411640", + "name": "North Plainfield School District", + "arrests": 8, + "enrollment": 1622, + "rate": 4.93 + }, + { + "leaid": "3411220", + "name": "New Brunswick School District", + "arrests": 7, + "enrollment": 5423, + "rate": 1.29 + }, + { + "leaid": "3411340", + "name": "Newark Public School District", + "arrests": 6, + "enrollment": 36064, + "rate": 0.17 + }, + { + "leaid": "3413230", + "name": "Plumsted Township School District", + "arrests": 5, + "enrollment": 616, + "rate": 8.12 + }, + { + "leaid": "3401770", + "name": "Black Horse Pike Regional School District", + "arrests": 4, + "enrollment": 3009, + "rate": 1.33 + }, + { + "leaid": "3408400", + "name": "Lawrence Township Public School District", + "arrests": 4, + "enrollment": 1309, + "rate": 3.06 + } + ], + "NM": [ + { + "leaid": "3502800", + "name": "ZUNI PUBLIC SCHOOLS", + "arrests": 67, + "enrollment": 679, + "rate": 98.67 + }, + { + "leaid": "3502070", + "name": "POJOAQUE VALLEY PUBLIC SCHOOLS", + "arrests": 18, + "enrollment": 896, + "rate": 20.09 + }, + { + "leaid": "3501500", + "name": "LAS CRUCES PUBLIC SCHOOLS", + "arrests": 14, + "enrollment": 12795, + "rate": 1.09 + }, + { + "leaid": "3500010", + "name": "RIO RANCHO PUBLIC SCHOOLS", + "arrests": 3, + "enrollment": 8810, + "rate": 0.34 + }, + { + "leaid": "3501170", + "name": "GRANTS-CIBOLA COUNTY SCHOOLS", + "arrests": 3, + "enrollment": 1516, + "rate": 1.98 + }, + { + "leaid": "3501230", + "name": "HATCH VALLEY PUBLIC SCHOOLS", + "arrests": 3, + "enrollment": 656, + "rate": 4.57 + }, + { + "leaid": "3500390", + "name": "CENTRAL CONSOLIDATED SCHOOLS", + "arrests": 2, + "enrollment": 2717, + "rate": 0.74 + }, + { + "leaid": "3502250", + "name": "ROSWELL INDEPENDENT SCHOOLS", + "arrests": 2, + "enrollment": 5202, + "rate": 0.38 + }, + { + "leaid": "3502370", + "name": "SANTA FE PUBLIC SCHOOLS", + "arrests": 2, + "enrollment": 7396, + "rate": 0.27 + }, + { + "leaid": "3500480", + "name": "CIMARRON MUNICIPAL SCHOOLS", + "arrests": 1, + "enrollment": 236, + "rate": 4.24 + }, + { + "leaid": "3500990", + "name": "FARMINGTON MUNICIPAL SCHOOLS", + "arrests": 1, + "enrollment": 6032, + "rate": 0.17 + }, + { + "leaid": "3501050", + "name": "FORT SUMNER MUNICIPAL SCHOOLS", + "arrests": 1, + "enrollment": 144, + "rate": 6.94 + }, + { + "leaid": "3501980", + "name": "MESA VISTA CONSOLIDATED SCHOOLS", + "arrests": 1, + "enrollment": 134, + "rate": 7.46 + } + ], + "NV": [ + { + "leaid": "3200060", + "name": "CLARK COUNTY SCHOOL DISTRICT", + "arrests": 100, + "enrollment": 148928, + "rate": 0.67 + }, + { + "leaid": "3200090", + "name": "DOUGLAS COUNTY SCHOOL DISTRICT", + "arrests": 80, + "enrollment": 2849, + "rate": 28.08 + }, + { + "leaid": "3200480", + "name": "WASHOE COUNTY SCHOOL DISTRICT", + "arrests": 80, + "enrollment": 32107, + "rate": 2.49 + }, + { + "leaid": "3200120", + "name": "ELKO COUNTY SCHOOL DISTRICT", + "arrests": 9, + "enrollment": 4871, + "rate": 1.85 + }, + { + "leaid": "3200001", + "name": "STATE-SPONSORED CHARTER SCHOOLS", + "arrests": 6, + "enrollment": 41838, + "rate": 0.14 + }, + { + "leaid": "3200390", + "name": "CARSON CITY SCHOOL DISTRICT", + "arrests": 6, + "enrollment": 4073, + "rate": 1.47 + }, + { + "leaid": "3200300", + "name": "LYON COUNTY SCHOOL DISTRICT", + "arrests": 3, + "enrollment": 4910, + "rate": 0.61 + }, + { + "leaid": "3200360", + "name": "NYE COUNTY SCHOOL DISTRICT", + "arrests": 2, + "enrollment": 2836, + "rate": 0.71 + }, + { + "leaid": "3200450", + "name": "STOREY COUNTY SCHOOL DISTRICT", + "arrests": 2, + "enrollment": 250, + "rate": 8 + } + ], + "NY": [ + { + "leaid": "3624900", + "name": "ROME CITY SCHOOL DISTRICT", + "arrests": 24, + "enrollment": 2292, + "rate": 10.47 + }, + { + "leaid": "3605850", + "name": "BUFFALO CITY SCHOOL DISTRICT", + "arrests": 21, + "enrollment": 21962, + "rate": 0.96 + }, + { + "leaid": "3631920", + "name": "YONKERS CITY SCHOOL DISTRICT", + "arrests": 8, + "enrollment": 18099, + "rate": 0.44 + }, + { + "leaid": "3612270", + "name": "GLOVERSVILLE CITY SCHOOL DISTRICT", + "arrests": 7, + "enrollment": 1162, + "rate": 6.02 + }, + { + "leaid": "3612240", + "name": "GLENS FALLS CITY SCHOOL DISTRICT", + "arrests": 6, + "enrollment": 1303, + "rate": 4.6 + }, + { + "leaid": "3618960", + "name": "MEDINA CENTRAL SCHOOL DISTRICT", + "arrests": 6, + "enrollment": 588, + "rate": 10.2 + }, + { + "leaid": "3603480", + "name": "AUBURN CITY SCHOOL DISTRICT", + "arrests": 5, + "enrollment": 1601, + "rate": 3.12 + }, + { + "leaid": "3623760", + "name": "POUGHKEEPSIE CITY SCHOOL DISTRICT", + "arrests": 5, + "enrollment": 3178, + "rate": 1.57 + }, + { + "leaid": "3630780", + "name": "WEST SENECA CENTRAL SCHOOL DISTRICT", + "arrests": 5, + "enrollment": 3170, + "rate": 1.58 + }, + { + "leaid": "3600024", + "name": "CATTARAUGUS-LITTLE VALLEY CENTRAL SCHOOL DISTRICT", + "arrests": 3, + "enrollment": 477, + "rate": 6.29 + }, + { + "leaid": "3600124", + "name": "CANISTEO-GREENWOOD CSD", + "arrests": 3, + "enrollment": 441, + "rate": 6.8 + }, + { + "leaid": "3608130", + "name": "COMMACK UNION FREE SCHOOL DISTRICT", + "arrests": 3, + "enrollment": 2788, + "rate": 1.08 + }, + { + "leaid": "3629520", + "name": "VALLEY STREAM CENTRAL HIGH SCHOOL DISTRICT", + "arrests": 3, + "enrollment": 3507, + "rate": 0.86 + }, + { + "leaid": "3680150", + "name": "CATTARAUGUS-ALLEGANY-ERIE-WYOMING BOCES", + "arrests": 3, + "enrollment": 2173, + "rate": 1.38 + }, + { + "leaid": "3601162", + "name": "NEW VISIONS CHARTER HIGH SCHOOL FOR THE HUMANITIES IV", + "arrests": 2, + "enrollment": 312, + "rate": 6.41 + } + ], + "OH": [ + { + "leaid": "3904610", + "name": "Fairfield City", + "arrests": 74, + "enrollment": 4564, + "rate": 16.21 + }, + { + "leaid": "3904378", + "name": "Cleveland Municipal", + "arrests": 48, + "enrollment": 32833, + "rate": 1.46 + }, + { + "leaid": "3904736", + "name": "Northwest Local", + "arrests": 44, + "enrollment": 3951, + "rate": 11.14 + }, + { + "leaid": "3904410", + "name": "Hamilton City", + "arrests": 28, + "enrollment": 3319, + "rate": 8.44 + }, + { + "leaid": "3904366", + "name": "Brunswick City", + "arrests": 27, + "enrollment": 3181, + "rate": 8.49 + }, + { + "leaid": "3904424", + "name": "Logan-Hocking Local", + "arrests": 25, + "enrollment": 1996, + "rate": 12.53 + }, + { + "leaid": "3904426", + "name": "Lorain City", + "arrests": 19, + "enrollment": 2907, + "rate": 6.54 + }, + { + "leaid": "3904375", + "name": "Cincinnati Public Schools", + "arrests": 17, + "enrollment": 20664, + "rate": 0.82 + }, + { + "leaid": "3904788", + "name": "Madison Local", + "arrests": 12, + "enrollment": 1480, + "rate": 8.11 + }, + { + "leaid": "3900127", + "name": "Glass City Academy", + "arrests": 11, + "enrollment": 295, + "rate": 37.29 + }, + { + "leaid": "3904420", + "name": "Lancaster City", + "arrests": 11, + "enrollment": 2983, + "rate": 3.69 + }, + { + "leaid": "3904441", + "name": "Mt Healthy City", + "arrests": 10, + "enrollment": 1344, + "rate": 7.44 + }, + { + "leaid": "3904380", + "name": "Columbus City School District", + "arrests": 8, + "enrollment": 20803, + "rate": 0.38 + }, + { + "leaid": "3904611", + "name": "Lakota Local", + "arrests": 8, + "enrollment": 7018, + "rate": 1.14 + }, + { + "leaid": "3904408", + "name": "Winton Woods City", + "arrests": 7, + "enrollment": 1574, + "rate": 4.45 + } + ], + "OK": [ + { + "leaid": "4030240", + "name": "TULSA", + "arrests": 87, + "enrollment": 13038, + "rate": 6.67 + }, + { + "leaid": "4022770", + "name": "OKLAHOMA CITY", + "arrests": 77, + "enrollment": 15975, + "rate": 4.82 + }, + { + "leaid": "4025290", + "name": "PUTNAM CITY", + "arrests": 31, + "enrollment": 7936, + "rate": 3.91 + }, + { + "leaid": "4010590", + "name": "EDMOND", + "arrests": 26, + "enrollment": 11245, + "rate": 2.31 + }, + { + "leaid": "4013590", + "name": "GUYMON", + "arrests": 22, + "enrollment": 1209, + "rate": 18.2 + }, + { + "leaid": "4007620", + "name": "CHOCTAW-NICOMA PARK", + "arrests": 19, + "enrollment": 2519, + "rate": 7.54 + }, + { + "leaid": "4010650", + "name": "EL RENO", + "arrests": 18, + "enrollment": 1229, + "rate": 14.65 + }, + { + "leaid": "4024690", + "name": "PONCA CITY", + "arrests": 11, + "enrollment": 2114, + "rate": 5.2 + }, + { + "leaid": "4023550", + "name": "PAULS VALLEY", + "arrests": 10, + "enrollment": 602, + "rate": 16.61 + }, + { + "leaid": "4015210", + "name": "HUGO", + "arrests": 8, + "enrollment": 516, + "rate": 15.5 + }, + { + "leaid": "4017250", + "name": "LAWTON", + "arrests": 7, + "enrollment": 5445, + "rate": 1.29 + }, + { + "leaid": "4019950", + "name": "MIDWEST CITY-DEL CITY", + "arrests": 6, + "enrollment": 5442, + "rate": 1.1 + }, + { + "leaid": "4028680", + "name": "STILLWATER", + "arrests": 5, + "enrollment": 2567, + "rate": 1.95 + }, + { + "leaid": "4000020", + "name": "FRONTIER", + "arrests": 3, + "enrollment": 292, + "rate": 10.27 + }, + { + "leaid": "4028710", + "name": "STILWELL", + "arrests": 3, + "enrollment": 858, + "rate": 3.5 + } + ], + "OR": [ + { + "leaid": "4109630", + "name": "Phoenix-Talent SD 4", + "arrests": 6, + "enrollment": 1184, + "rate": 5.07 + }, + { + "leaid": "4101120", + "name": "Greater Albany Public SD 8J", + "arrests": 2, + "enrollment": 4711, + "rate": 0.42 + }, + { + "leaid": "4102940", + "name": "Central Point SD 6", + "arrests": 1, + "enrollment": 2406, + "rate": 0.42 + }, + { + "leaid": "4104740", + "name": "Eugene SD 4J", + "arrests": 1, + "enrollment": 8191, + "rate": 0.12 + }, + { + "leaid": "4106740", + "name": "Jefferson County SD 509J", + "arrests": 1, + "enrollment": 1860, + "rate": 0.54 + }, + { + "leaid": "4108040", + "name": "Medford SD 549C", + "arrests": 1, + "enrollment": 7717, + "rate": 0.13 + }, + { + "leaid": "4108160", + "name": "Milton-Freewater Unified SD 7", + "arrests": 1, + "enrollment": 887, + "rate": 1.13 + }, + { + "leaid": "4108700", + "name": "Nestucca Valley SD 101J", + "arrests": 1, + "enrollment": 414, + "rate": 2.42 + }, + { + "leaid": "4108830", + "name": "North Clackamas SD 12", + "arrests": 1, + "enrollment": 7319, + "rate": 0.14 + }, + { + "leaid": "4110350", + "name": "Redmond SD 2J", + "arrests": 1, + "enrollment": 3808, + "rate": 0.26 + }, + { + "leaid": "4113530", + "name": "Woodburn SD 103", + "arrests": 1, + "enrollment": 2927, + "rate": 0.34 + } + ], + "PA": [ + { + "leaid": "4205550", + "name": "Chambersburg Area SD", + "arrests": 247, + "enrollment": 4521, + "rate": 54.63 + }, + { + "leaid": "4218990", + "name": "Philadelphia City SD", + "arrests": 173, + "enrollment": 80729, + "rate": 2.14 + }, + { + "leaid": "4219170", + "name": "Pittsburgh SD", + "arrests": 154, + "enrollment": 11661, + "rate": 13.21 + }, + { + "leaid": "4226300", + "name": "Wilkes-Barre Area SD", + "arrests": 106, + "enrollment": 3701, + "rate": 28.64 + }, + { + "leaid": "4205400", + "name": "Central Dauphin SD", + "arrests": 103, + "enrollment": 5138, + "rate": 20.05 + }, + { + "leaid": "4203330", + "name": "Bensalem Township SD", + "arrests": 79, + "enrollment": 2545, + "rate": 31.04 + }, + { + "leaid": "4211700", + "name": "Hazleton Area SD", + "arrests": 78, + "enrollment": 10863, + "rate": 7.18 + }, + { + "leaid": "4220100", + "name": "Red Lion Area SD", + "arrests": 78, + "enrollment": 2164, + "rate": 36.04 + }, + { + "leaid": "4212725", + "name": "Keystone Central SD", + "arrests": 70, + "enrollment": 2280, + "rate": 30.7 + }, + { + "leaid": "4217370", + "name": "Northampton Area SD", + "arrests": 66, + "enrollment": 3062, + "rate": 21.55 + }, + { + "leaid": "4210950", + "name": "Greater Johnstown SD", + "arrests": 65, + "enrollment": 1410, + "rate": 46.1 + }, + { + "leaid": "4203000", + "name": "Bangor Area SD", + "arrests": 60, + "enrollment": 1314, + "rate": 45.66 + }, + { + "leaid": "4208580", + "name": "East Pennsboro Area SD", + "arrests": 57, + "enrollment": 1128, + "rate": 50.53 + }, + { + "leaid": "4221090", + "name": "Scranton SD", + "arrests": 54, + "enrollment": 4924, + "rate": 10.97 + }, + { + "leaid": "4214880", + "name": "McGuffey SD", + "arrests": 51, + "enrollment": 819, + "rate": 62.27 + } + ], + "RI": [ + { + "leaid": "4400120", + "name": "Central Falls", + "arrests": 15, + "enrollment": 1477, + "rate": 10.16 + }, + { + "leaid": "4400900", + "name": "Providence", + "arrests": 8, + "enrollment": 10932, + "rate": 0.73 + }, + { + "leaid": "4401170", + "name": "Westerly", + "arrests": 7, + "enrollment": 1329, + "rate": 5.27 + }, + { + "leaid": "4400720", + "name": "Newport", + "arrests": 6, + "enrollment": 1013, + "rate": 5.92 + }, + { + "leaid": "4400840", + "name": "Pawtucket", + "arrests": 3, + "enrollment": 3820, + "rate": 0.79 + }, + { + "leaid": "4400150", + "name": "Chariho", + "arrests": 2, + "enrollment": 1972, + "rate": 1.01 + }, + { + "leaid": "4400032", + "name": "Paul Cuffee Charter Sch", + "arrests": 1, + "enrollment": 423, + "rate": 2.36 + }, + { + "leaid": "4400810", + "name": "North Smithfield", + "arrests": 1, + "enrollment": 986, + "rate": 1.01 + }, + { + "leaid": "4400990", + "name": "Smithfield", + "arrests": 1, + "enrollment": 1259, + "rate": 0.79 + } + ], + "SC": [ + { + "leaid": "4502700", + "name": "Lexington 01", + "arrests": 120, + "enrollment": 13852, + "rate": 8.66 + }, + { + "leaid": "4503870", + "name": "York 03", + "arrests": 113, + "enrollment": 8083, + "rate": 13.98 + }, + { + "leaid": "4502010", + "name": "Dorchester 02", + "arrests": 85, + "enrollment": 12884, + "rate": 6.6 + }, + { + "leaid": "4501170", + "name": "Berkeley 01", + "arrests": 45, + "enrollment": 18650, + "rate": 2.41 + }, + { + "leaid": "4503390", + "name": "Richland 02", + "arrests": 35, + "enrollment": 13967, + "rate": 2.51 + }, + { + "leaid": "4503330", + "name": "Pickens 01", + "arrests": 31, + "enrollment": 7898, + "rate": 3.93 + }, + { + "leaid": "4502490", + "name": "Horry 01", + "arrests": 25, + "enrollment": 23119, + "rate": 1.08 + }, + { + "leaid": "4501110", + "name": "Beaufort 01", + "arrests": 24, + "enrollment": 12054, + "rate": 1.99 + }, + { + "leaid": "4503060", + "name": "Oconee 01", + "arrests": 22, + "enrollment": 4938, + "rate": 4.46 + }, + { + "leaid": "4503750", + "name": "Union 01", + "arrests": 18, + "enrollment": 2178, + "rate": 8.26 + }, + { + "leaid": "4502340", + "name": "Greenwood 50", + "arrests": 12, + "enrollment": 4243, + "rate": 2.83 + }, + { + "leaid": "4503908", + "name": "Marion 10", + "arrests": 11, + "enrollment": 2253, + "rate": 4.88 + }, + { + "leaid": "4502730", + "name": "Lexington 02", + "arrests": 9, + "enrollment": 4202, + "rate": 2.14 + }, + { + "leaid": "4501440", + "name": "Charleston 01", + "arrests": 8, + "enrollment": 26536, + "rate": 0.3 + }, + { + "leaid": "4500720", + "name": "Aiken 01", + "arrests": 6, + "enrollment": 10864, + "rate": 0.55 + } + ], + "SD": [ + { + "leaid": "4659820", + "name": "Rapid City Area School District 51-4", + "arrests": 196, + "enrollment": 6146, + "rate": 31.89 + }, + { + "leaid": "4666270", + "name": "Sioux Falls School District 49-5", + "arrests": 72, + "enrollment": 11567, + "rate": 6.22 + }, + { + "leaid": "4676620", + "name": "Watertown School District 14-4", + "arrests": 32, + "enrollment": 1844, + "rate": 17.35 + }, + { + "leaid": "4631350", + "name": "Harrisburg School District 41-2", + "arrests": 16, + "enrollment": 2722, + "rate": 5.88 + }, + { + "leaid": "4602070", + "name": "Aberdeen School District 06-1", + "arrests": 4, + "enrollment": 2220, + "rate": 1.8 + }, + { + "leaid": "4650670", + "name": "New Underwood School District 51-3", + "arrests": 4, + "enrollment": 141, + "rate": 28.37 + }, + { + "leaid": "4604270", + "name": "Avon School District 04-1", + "arrests": 3, + "enrollment": 149, + "rate": 20.13 + }, + { + "leaid": "4600027", + "name": "East Dakota Educational Cooperative", + "arrests": 2, + "enrollment": 81, + "rate": 24.69 + }, + { + "leaid": "4633360", + "name": "Hill City School District 51-2", + "arrests": 2, + "enrollment": 282, + "rate": 7.09 + }, + { + "leaid": "4636150", + "name": "Iroquois School District 02-3", + "arrests": 2, + "enrollment": 120, + "rate": 16.67 + }, + { + "leaid": "4648390", + "name": "Mitchell School District 17-2", + "arrests": 2, + "enrollment": 1564, + "rate": 1.28 + }, + { + "leaid": "4676740", + "name": "Waverly School District 14-5", + "arrests": 2, + "enrollment": 137, + "rate": 14.6 + }, + { + "leaid": "4600046", + "name": "Hitchcock Tulare School District 56-6", + "arrests": 1, + "enrollment": 149, + "rate": 6.71 + }, + { + "leaid": "4600052", + "name": "Tea Area School District 41-5", + "arrests": 1, + "enrollment": 1083, + "rate": 0.92 + }, + { + "leaid": "4608520", + "name": "Brookings School District 05-1", + "arrests": 1, + "enrollment": 1648, + "rate": 0.61 + } + ], + "TN": [ + { + "leaid": "4700570", + "name": "Cheatham County", + "arrests": 83, + "enrollment": 3400, + "rate": 24.41 + }, + { + "leaid": "4702220", + "name": "Knox County", + "arrests": 75, + "enrollment": 30109, + "rate": 2.49 + }, + { + "leaid": "4702130", + "name": "Johnson City", + "arrests": 58, + "enrollment": 3202, + "rate": 18.11 + }, + { + "leaid": "4704550", + "name": "Wilson County", + "arrests": 58, + "enrollment": 12352, + "rate": 4.7 + }, + { + "leaid": "4702190", + "name": "Kingsport", + "arrests": 53, + "enrollment": 3775, + "rate": 14.04 + }, + { + "leaid": "4700900", + "name": "Cumberland County", + "arrests": 48, + "enrollment": 6797, + "rate": 7.06 + }, + { + "leaid": "4701590", + "name": "Hamilton County", + "arrests": 41, + "enrollment": 23254, + "rate": 1.76 + }, + { + "leaid": "4700180", + "name": "Bedford County", + "arrests": 34, + "enrollment": 4797, + "rate": 7.09 + }, + { + "leaid": "4704020", + "name": "Sumner County", + "arrests": 33, + "enrollment": 15936, + "rate": 2.07 + }, + { + "leaid": "4704350", + "name": "Warren County", + "arrests": 33, + "enrollment": 4376, + "rate": 7.54 + }, + { + "leaid": "4700600", + "name": "Chester County", + "arrests": 21, + "enrollment": 1341, + "rate": 15.66 + }, + { + "leaid": "4701500", + "name": "Greeneville", + "arrests": 17, + "enrollment": 1520, + "rate": 11.18 + }, + { + "leaid": "4703690", + "name": "Rutherford County", + "arrests": 17, + "enrollment": 28961, + "rate": 0.59 + }, + { + "leaid": "4704260", + "name": "Union City", + "arrests": 17, + "enrollment": 809, + "rate": 21.01 + }, + { + "leaid": "4700149", + "name": "Collierville", + "arrests": 16, + "enrollment": 4038, + "rate": 3.96 + } + ], + "TX": [ + { + "leaid": "4834320", + "name": "PASADENA ISD", + "arrests": 417, + "enrollment": 22530, + "rate": 18.51 + }, + { + "leaid": "4818000", + "name": "ECTOR COUNTY ISD", + "arrests": 361, + "enrollment": 15456, + "rate": 23.36 + }, + { + "leaid": "4840710", + "name": "SOCORRO ISD", + "arrests": 252, + "enrollment": 28025, + "rate": 8.99 + }, + { + "leaid": "4833120", + "name": "NORTHSIDE ISD", + "arrests": 193, + "enrollment": 51614, + "rate": 3.74 + }, + { + "leaid": "4820340", + "name": "GARLAND ISD", + "arrests": 185, + "enrollment": 26035, + "rate": 7.11 + }, + { + "leaid": "4828500", + "name": "LUBBOCK ISD", + "arrests": 185, + "enrollment": 12681, + "rate": 14.59 + }, + { + "leaid": "4816230", + "name": "DALLAS ISD", + "arrests": 147, + "enrollment": 71761, + "rate": 2.05 + }, + { + "leaid": "4843650", + "name": "UNITED ISD", + "arrests": 140, + "enrollment": 22357, + "rate": 6.26 + }, + { + "leaid": "4830390", + "name": "MESQUITE ISD", + "arrests": 130, + "enrollment": 20838, + "rate": 6.24 + }, + { + "leaid": "4828920", + "name": "MANSFIELD ISD", + "arrests": 126, + "enrollment": 15387, + "rate": 8.19 + }, + { + "leaid": "4824100", + "name": "HUTTO ISD", + "arrests": 116, + "enrollment": 4303, + "rate": 26.96 + }, + { + "leaid": "4808090", + "name": "ALVIN ISD", + "arrests": 114, + "enrollment": 13368, + "rate": 8.53 + }, + { + "leaid": "4838790", + "name": "SAN BENITO CISD", + "arrests": 102, + "enrollment": 5007, + "rate": 20.37 + }, + { + "leaid": "4824420", + "name": "IRVING ISD", + "arrests": 96, + "enrollment": 16322, + "rate": 5.88 + }, + { + "leaid": "4819560", + "name": "FORNEY ISD", + "arrests": 92, + "enrollment": 6263, + "rate": 14.69 + } + ], + "UT": [ + { + "leaid": "4900030", + "name": "Alpine District", + "arrests": 36, + "enrollment": 37998, + "rate": 0.95 + }, + { + "leaid": "4900390", + "name": "Iron District", + "arrests": 15, + "enrollment": 6912, + "rate": 2.17 + }, + { + "leaid": "4900450", + "name": "Juab District", + "arrests": 9, + "enrollment": 1458, + "rate": 6.17 + }, + { + "leaid": "4900210", + "name": "Davis District", + "arrests": 3, + "enrollment": 33534, + "rate": 0.09 + }, + { + "leaid": "4900930", + "name": "Sevier District", + "arrests": 3, + "enrollment": 2584, + "rate": 1.16 + }, + { + "leaid": "4900174", + "name": "Ascent Academies of Utah", + "arrests": 2, + "enrollment": 1510, + "rate": 1.32 + }, + { + "leaid": "4900630", + "name": "Nebo District", + "arrests": 2, + "enrollment": 19557, + "rate": 0.1 + }, + { + "leaid": "4900056", + "name": "Karl G. Maeser Preparatory Academy", + "arrests": 1, + "enrollment": 557, + "rate": 1.8 + }, + { + "leaid": "4900090", + "name": "Box Elder District", + "arrests": 1, + "enrollment": 6470, + "rate": 0.15 + }, + { + "leaid": "4900120", + "name": "Cache District", + "arrests": 1, + "enrollment": 9309, + "rate": 0.11 + }, + { + "leaid": "4900131", + "name": "Merit College Preparatory Academy", + "arrests": 1, + "enrollment": 442, + "rate": 2.26 + }, + { + "leaid": "4900132", + "name": "Quest Academy", + "arrests": 1, + "enrollment": 958, + "rate": 1.04 + }, + { + "leaid": "4900144", + "name": "Maria Montessori Academy", + "arrests": 1, + "enrollment": 354, + "rate": 2.82 + }, + { + "leaid": "4900150", + "name": "Carbon District", + "arrests": 1, + "enrollment": 2054, + "rate": 0.49 + }, + { + "leaid": "4900600", + "name": "Murray District", + "arrests": 1, + "enrollment": 2577, + "rate": 0.39 + } + ], + "VA": [ + { + "leaid": "5102670", + "name": "NORFOLK CITY PBLC SCHS", + "arrests": 33, + "enrollment": 13385, + "rate": 2.47 + }, + { + "leaid": "5101770", + "name": "HALIFAX CO PBLC SCHS", + "arrests": 19, + "enrollment": 2342, + "rate": 8.11 + }, + { + "leaid": "5103840", + "name": "VA BEACH CITY PBLC SCHS", + "arrests": 17, + "enrollment": 28854, + "rate": 0.59 + }, + { + "leaid": "5101260", + "name": "FAIRFAX CO PBLC SCHS", + "arrests": 16, + "enrollment": 64165, + "rate": 0.25 + }, + { + "leaid": "5104080", + "name": "WISE CO PBLC SCHS", + "arrests": 16, + "enrollment": 3714, + "rate": 4.31 + }, + { + "leaid": "5100420", + "name": "BOTETOURT CO PBLC SCHS", + "arrests": 10, + "enrollment": 2333, + "rate": 4.29 + }, + { + "leaid": "5102460", + "name": "MECKLENBURG CO PBLC SCHS", + "arrests": 9, + "enrollment": 2352, + "rate": 3.83 + }, + { + "leaid": "5100600", + "name": "CAMPBELL CO PBLC SCHS", + "arrests": 8, + "enrollment": 3799, + "rate": 2.11 + }, + { + "leaid": "5103980", + "name": "WESTMORELAND CO PBLC SCHS", + "arrests": 6, + "enrollment": 764, + "rate": 7.85 + }, + { + "leaid": "5102580", + "name": "NELSON CO PBLC SCHS", + "arrests": 4, + "enrollment": 847, + "rate": 4.72 + }, + { + "leaid": "5103130", + "name": "PRINCE WILLIAM CO PBLC SCHS", + "arrests": 4, + "enrollment": 42839, + "rate": 0.09 + }, + { + "leaid": "5102070", + "name": "KING AND QUEEN CO PBLC SCHS", + "arrests": 3, + "enrollment": 708, + "rate": 4.24 + }, + { + "leaid": "5103330", + "name": "ROANOKE CO PBLC SCHS", + "arrests": 3, + "enrollment": 7049, + "rate": 0.43 + }, + { + "leaid": "5103640", + "name": "SPOTSYLVANIA CO PBLC SCHS", + "arrests": 3, + "enrollment": 11878, + "rate": 0.25 + }, + { + "leaid": "5100090", + "name": "ALBEMARLE CO PBLC SCHS", + "arrests": 2, + "enrollment": 6664, + "rate": 0.3 + } + ], + "VT": [ + { + "leaid": "5000431", + "name": "Windham Southeast Unified Union School District #96", + "arrests": 2, + "enrollment": 1250, + "rate": 1.6 + }, + { + "leaid": "5000024", + "name": "Rivendell Interstate School District", + "arrests": 1, + "enrollment": 248, + "rate": 4.03 + }, + { + "leaid": "5000439", + "name": "Washington Central Unified Union School District #92", + "arrests": 1, + "enrollment": 687, + "rate": 1.46 + } + ], + "WA": [ + { + "leaid": "5304650", + "name": "Mabton School District", + "arrests": 87, + "enrollment": 383, + "rate": 227.15 + }, + { + "leaid": "5301110", + "name": "Central Valley School District", + "arrests": 39, + "enrollment": 7569, + "rate": 5.15 + }, + { + "leaid": "5306150", + "name": "Okanogan School District", + "arrests": 20, + "enrollment": 610, + "rate": 32.79 + }, + { + "leaid": "5304920", + "name": "Mead School District", + "arrests": 14, + "enrollment": 5779, + "rate": 2.42 + }, + { + "leaid": "5306960", + "name": "Puyallup School District", + "arrests": 8, + "enrollment": 8678, + "rate": 0.92 + }, + { + "leaid": "5307230", + "name": "Renton School District", + "arrests": 7, + "enrollment": 5489, + "rate": 1.28 + }, + { + "leaid": "5302700", + "name": "Evergreen School District (Clark)", + "arrests": 5, + "enrollment": 11004, + "rate": 0.45 + }, + { + "leaid": "5307080", + "name": "Quincy School District", + "arrests": 4, + "enrollment": 1733, + "rate": 2.31 + }, + { + "leaid": "5300480", + "name": "Bethel School District", + "arrests": 3, + "enrollment": 8927, + "rate": 0.34 + }, + { + "leaid": "5302670", + "name": "Everett School District", + "arrests": 3, + "enrollment": 7963, + "rate": 0.38 + }, + { + "leaid": "5304470", + "name": "Longview School District", + "arrests": 3, + "enrollment": 3137, + "rate": 0.96 + }, + { + "leaid": "5309720", + "name": "West Valley School District (Yakima)", + "arrests": 2, + "enrollment": 2775, + "rate": 0.72 + }, + { + "leaid": "5300300", + "name": "Auburn School District", + "arrests": 1, + "enrollment": 7272, + "rate": 0.14 + }, + { + "leaid": "5302820", + "name": "Federal Way School District", + "arrests": 1, + "enrollment": 9083, + "rate": 0.11 + }, + { + "leaid": "5305910", + "name": "Northshore School District", + "arrests": 1, + "enrollment": 8727, + "rate": 0.11 + } + ], + "WI": [ + { + "leaid": "5516290", + "name": "West Bend School District", + "arrests": 131, + "enrollment": 2824, + "rate": 46.39 + }, + { + "leaid": "5501050", + "name": "Beloit School District", + "arrests": 103, + "enrollment": 3408, + "rate": 30.22 + }, + { + "leaid": "5507020", + "name": "Janesville School District", + "arrests": 69, + "enrollment": 4782, + "rate": 14.43 + }, + { + "leaid": "5510170", + "name": "Muskego-Norway School District", + "arrests": 58, + "enrollment": 2954, + "rate": 19.63 + }, + { + "leaid": "5513650", + "name": "Sheboygan Area School District", + "arrests": 36, + "enrollment": 4257, + "rate": 8.46 + }, + { + "leaid": "5504050", + "name": "Eau Claire Area School District", + "arrests": 23, + "enrollment": 4877, + "rate": 4.72 + }, + { + "leaid": "5506000", + "name": "Whitnall School District", + "arrests": 22, + "enrollment": 1247, + "rate": 17.64 + }, + { + "leaid": "5510530", + "name": "New Holstein School District", + "arrests": 22, + "enrollment": 530, + "rate": 41.51 + }, + { + "leaid": "5509030", + "name": "Menasha Joint School District", + "arrests": 18, + "enrollment": 1499, + "rate": 12.01 + }, + { + "leaid": "5513020", + "name": "Ripon Area School District", + "arrests": 12, + "enrollment": 1041, + "rate": 11.53 + }, + { + "leaid": "5503640", + "name": "Delavan-Darien School District", + "arrests": 11, + "enrollment": 1098, + "rate": 10.02 + }, + { + "leaid": "5508940", + "name": "Medford Area Public School District", + "arrests": 10, + "enrollment": 2244, + "rate": 4.46 + }, + { + "leaid": "5510830", + "name": "Oak Creek-Franklin Joint School District", + "arrests": 10, + "enrollment": 3200, + "rate": 3.13 + }, + { + "leaid": "5515780", + "name": "Waukesha School District", + "arrests": 8, + "enrollment": 6719, + "rate": 1.19 + }, + { + "leaid": "5507320", + "name": "Kenosha School District", + "arrests": 7, + "enrollment": 10799, + "rate": 0.65 + } + ], + "WV": [ + { + "leaid": "5400180", + "name": "CABELL COUNTY SCHOOLS", + "arrests": 143, + "enrollment": 5629, + "rate": 25.4 + }, + { + "leaid": "5400570", + "name": "JEFFERSON COUNTY SCHOOLS", + "arrests": 36, + "enrollment": 4466, + "rate": 8.06 + }, + { + "leaid": "5401170", + "name": "PRESTON COUNTY SCHOOLS", + "arrests": 3, + "enrollment": 3743, + "rate": 0.8 + }, + { + "leaid": "5400450", + "name": "HANCOCK COUNTY SCHOOLS", + "arrests": 2, + "enrollment": 2143, + "rate": 0.93 + }, + { + "leaid": "5400060", + "name": "BERKELEY COUNTY SCHOOLS", + "arrests": 1, + "enrollment": 9776, + "rate": 0.1 + }, + { + "leaid": "5400090", + "name": "BOONE COUNTY SCHOOLS", + "arrests": 1, + "enrollment": 1822, + "rate": 0.55 + }, + { + "leaid": "5400240", + "name": "CLAY COUNTY SCHOOLS", + "arrests": 1, + "enrollment": 947, + "rate": 1.06 + }, + { + "leaid": "5400540", + "name": "JACKSON COUNTY SCHOOLS", + "arrests": 1, + "enrollment": 2138, + "rate": 0.47 + }, + { + "leaid": "5401620", + "name": "WOOD COUNTY SCHOOLS", + "arrests": 1, + "enrollment": 6311, + "rate": 0.16 + } + ], + "WY": [ + { + "leaid": "5601030", + "name": "Carbon County School District #1", + "arrests": 64, + "enrollment": 936, + "rate": 68.38 + }, + { + "leaid": "5601470", + "name": "Campbell County School District #1", + "arrests": 56, + "enrollment": 4346, + "rate": 12.89 + }, + { + "leaid": "5602990", + "name": "Goshen County School District #1", + "arrests": 8, + "enrollment": 830, + "rate": 9.64 + }, + { + "leaid": "5604510", + "name": "Natrona County School District #1", + "arrests": 4, + "enrollment": 7019, + "rate": 0.57 + }, + { + "leaid": "5600730", + "name": "Albany County School District #1", + "arrests": 1, + "enrollment": 2214, + "rate": 0.45 + }, + { + "leaid": "5602070", + "name": "Park County School District # 6", + "arrests": 1, + "enrollment": 1079, + "rate": 0.93 + }, + { + "leaid": "5604860", + "name": "Sublette County School District #1", + "arrests": 1, + "enrollment": 582, + "rate": 1.72 + }, + { + "leaid": "5605220", + "name": "Fremont County School District #25", + "arrests": 1, + "enrollment": 1214, + "rate": 0.82 + } + ] + } +} diff --git a/scripts/build-top-districts.mjs b/scripts/build-top-districts.mjs new file mode 100644 index 0000000..952b1ab --- /dev/null +++ b/scripts/build-top-districts.mjs @@ -0,0 +1,204 @@ +#!/usr/bin/env node +/** + * Builds `public/data/top_districts.json` — the "suggested districts" list the + * search screen shows before you type anything. + * + * Why this exists: the app used to build that list at runtime from + * `/estimates?state=XX&year=21-22&limit=500`. That endpoint returns rows + * `ORDER BY LEAID, RACE, SEX` at eight rows per district, so a 500-row cap is + * the ~62 *lowest-LEAID* districts in the state, not the busiest ones — + * California alone has 11,488 rows. The list was therefore ranked over a + * truncated and essentially arbitrary slice of each state. + * + * This script pages the whole state using `meta.total` from the response + * envelope, aggregates observed arrests per district, and commits the answer as + * a fixture (the `public/data/national_rates.json` precedent). The search screen + * then loses a multi-second fetch and gets a correct ranking. + * + * Read-only against the public API. Roughly 150 requests as a one-off; re-run it + * only when a new CRDC wave lands. + * + * node scripts/build-top-districts.mjs + * node scripts/build-top-districts.mjs --states NV,CA # spot-check a few + */ + +import { writeFile, mkdir } from 'node:fs/promises' +import { dirname, resolve } from 'node:path' +import { fileURLToPath } from 'node:url' + +const BASE_URL = process.env.CRDC_API_BASE || 'https://crdc-api.civilytics.org/api/v1' +const YEAR = '21-22' +// Pinned rather than left to the API default so a change to that default can't +// silently alter the fixture. Enrollment and observed arrests are the same in +// every specification; only the modelled columns differ, and we read none. +const MODEL = 'unified_m2_mod' +const PAGE_SIZE = 1000 // the API's LIMIT_CAP +const TOP_N = 15 +const CONCURRENCY = 3 +const MAX_RETRIES = 4 + +const ALL_STATES = [ + 'AL', 'AK', 'AZ', 'AR', 'CA', 'CO', 'CT', 'DE', 'DC', 'FL', 'GA', 'HI', + 'ID', 'IL', 'IN', 'IA', 'KS', 'KY', 'LA', 'ME', 'MD', 'MA', 'MI', 'MN', + 'MS', 'MO', 'MT', 'NE', 'NV', 'NH', 'NJ', 'NM', 'NY', 'NC', 'ND', 'OH', + 'OK', 'OR', 'PA', 'RI', 'SC', 'SD', 'TN', 'TX', 'UT', 'VT', 'VA', 'WA', + 'WV', 'WI', 'WY', +] + +const OUT_PATH = resolve( + dirname(fileURLToPath(import.meta.url)), + '..', + 'public', + 'data', + 'top_districts.json', +) + +function parseStates() { + const flag = process.argv.indexOf('--states') + if (flag === -1) return ALL_STATES + const requested = (process.argv[flag + 1] || '').split(',').map((s) => s.trim().toUpperCase()) + const unknown = requested.filter((s) => !ALL_STATES.includes(s)) + if (unknown.length) throw new Error(`Unknown state code(s): ${unknown.join(', ')}`) + return requested +} + +const sleep = (ms) => new Promise((r) => setTimeout(r, ms)) + +/** GET one page, returning the full envelope (we need `meta.total`). */ +async function fetchPage(state, page) { + const params = new URLSearchParams({ + state, + year: YEAR, + model: MODEL, + limit: String(PAGE_SIZE), + page: String(page), + }) + const url = `${BASE_URL}/estimates?${params}` + + let lastError + for (let attempt = 0; attempt <= MAX_RETRIES; attempt++) { + try { + const res = await fetch(url, { signal: AbortSignal.timeout(60000) }) + if (!res.ok) throw new Error(`HTTP ${res.status} ${res.statusText}`) + const envelope = await res.json() + if (envelope.status !== 'success') throw new Error(envelope.error || 'Unknown API error') + if (!envelope.meta || typeof envelope.meta.total !== 'number') { + throw new Error('Response envelope is missing meta.total — cannot page safely') + } + return envelope + } catch (err) { + lastError = err + if (attempt === MAX_RETRIES) break + await sleep(500 * 2 ** attempt) + } + } + throw new Error(`${state} page ${page}: ${lastError.message}`) +} + +async function collectState(state) { + const first = await fetchPage(state, 0) + const total = first.meta.total + const rows = [...first.data] + + const pages = Math.ceil(total / PAGE_SIZE) + for (let page = 1; page < pages; page++) { + const envelope = await fetchPage(state, page) + rows.push(...envelope.data) + } + + if (rows.length !== total) { + // Loud rather than silent: a short read here would quietly produce a + // truncated ranking, which is the exact bug this script exists to fix. + throw new Error(`${state}: expected ${total} rows, collected ${rows.length}`) + } + + const byLeaid = new Map() + for (const row of rows) { + const leaid = row.leaid + if (!leaid) continue + const prev = byLeaid.get(leaid) || { leaid, name: row.lea_name || leaid, arrests: 0, enrollment: 0 } + byLeaid.set(leaid, { + ...prev, + name: prev.name || row.lea_name || leaid, + arrests: prev.arrests + (row.observed_arrests || 0), + enrollment: prev.enrollment + (row.stu_enroll || 0), + }) + } + + const ranked = [...byLeaid.values()] + .filter((d) => d.arrests > 0) + .sort((a, b) => b.arrests - a.arrests || a.leaid.localeCompare(b.leaid)) + .slice(0, TOP_N) + .map((d) => ({ + leaid: d.leaid, + name: d.name, + arrests: d.arrests, + enrollment: d.enrollment, + rate: d.enrollment > 0 ? Math.round((d.arrests / d.enrollment) * 1000 * 100) / 100 : 0, + })) + + return { state, districts: ranked, districtsSeen: byLeaid.size, rows: total, pages } +} + +/** Small fixed-size worker pool — polite to a single public API host. */ +async function mapWithConcurrency(items, limit, worker) { + const results = new Array(items.length) + let next = 0 + const runners = Array.from({ length: Math.min(limit, items.length) }, async () => { + while (next < items.length) { + const i = next++ + results[i] = await worker(items[i], i) + } + }) + await Promise.all(runners) + return results +} + +async function main() { + const states = parseStates() + console.log(`Fetching ${states.length} state(s) from ${BASE_URL} (year ${YEAR}, model ${MODEL})…`) + + let done = 0 + let requests = 0 + const collected = await mapWithConcurrency(states, CONCURRENCY, async (state) => { + const result = await collectState(state) + requests += result.pages + done += 1 + console.log( + ` [${String(done).padStart(2)}/${states.length}] ${state}: ` + + `${result.rows} rows / ${result.pages} page(s), ` + + `${result.districtsSeen} districts, top ${result.districts.length} kept`, + ) + return result + }) + + const byState = {} + for (const { state, districts } of collected.sort((a, b) => a.state.localeCompare(b.state))) { + byState[state] = districts + } + + const payload = { + metadata: { + source: 'CRDC School Arrest Rate API (Knowles & Miller 2025)', + endpoint: `${BASE_URL}/estimates`, + year: YEAR, + model: MODEL, + description: + `Top ${TOP_N} school districts per state by total observed arrests in ${YEAR}, ` + + 'summed across the eight modelled race×sex groups. Generated by ' + + 'scripts/build-top-districts.mjs over the complete paged result set for each state.', + generated_states: states.length, + generated_requests: requests, + }, + states: byState, + } + + await mkdir(dirname(OUT_PATH), { recursive: true }) + await writeFile(OUT_PATH, `${JSON.stringify(payload, null, 2)}\n`, 'utf8') + console.log(`\nWrote ${OUT_PATH} (${requests} requests, ${states.length} states).`) +} + +main().catch((err) => { + console.error('\nbuild-top-districts failed:', err.message) + process.exit(1) +}) diff --git a/src/components/DistrictSearch.jsx b/src/components/DistrictSearch.jsx index 613a7f5..1374d54 100644 --- a/src/components/DistrictSearch.jsx +++ b/src/components/DistrictSearch.jsx @@ -1,10 +1,42 @@ import { useState, useEffect } from 'react' -import { searchDistricts, fetchStateDistricts } from '../hooks/useApi.js' +import { searchDistricts } from '../hooks/useApi.js' + +const TOP_DISTRICTS_URL = `${import.meta.env.BASE_URL}data/top_districts.json` +const SUGGESTION_COUNT = 8 + +// Module-level cache: the fixture covers every state, so it is fetched at most +// once per page load no matter how many states the visitor browses through. +let topDistrictsPromise = null + +function loadTopDistricts() { + if (!topDistrictsPromise) { + topDistrictsPromise = fetch(TOP_DISTRICTS_URL) + .then((res) => { + if (!res.ok) throw new Error(`HTTP ${res.status} loading ${TOP_DISTRICTS_URL}`) + return res.json() + }) + .catch((err) => { + // Don't poison the cache with a rejected promise — let a later visit retry. + topDistrictsPromise = null + throw err + }) + } + return topDistrictsPromise +} /** * District search screen with: - * 1. "Interesting" suggestions — districts with the most arrests in the selected state (fetched once) + * 1. "Interesting" suggestions — the districts with the most arrests in the + * selected state, read from the committed `public/data/top_districts.json` + * fixture (built by `scripts/build-top-districts.mjs`). * 2. Live-search as you type → /api/v1/districts?q=...&state=XX + * + * The suggestions used to be computed at runtime from + * `/estimates?state=XX&year=21-22&limit=500`. That endpoint returns rows + * `ORDER BY LEAID, RACE, SEX` at eight rows per district, so the cap selected + * the ~62 lowest-LEAID districts in the state rather than the busiest ones — + * California has 11,488 rows. The fixture is ranked over the complete result + * set, and it also removes a multi-second fetch from this screen. */ export default function DistrictSearch({ state, onSelect, onBack }) { const [query, setQuery] = useState('') @@ -13,38 +45,32 @@ export default function DistrictSearch({ state, onSelect, onBack }) { const [loadingSugg, setLoadingSugg] = useState(true) const [loadingSearch, setLoadingSearch] = useState(false) - // ——— Fetch interesting suggestions (top arrests in this state) once on mount ——— + // ——— Read the suggestion fixture for this state ——— useEffect(() => { let cancelled = false - async function loadSuggestions() { - try { - // /estimates?state=XX&year=21-22 returns all districts; sort by observed_arrests desc client-side - const data = await fetchStateDistricts(state, '21-22', 500) + setLoadingSugg(true) - // Aggregate arrests per district (sum across race×sex groups), then sort - const byLeaid = {} - for (const row of data) { - if (!byLeaid[row.leaid]) { - byLeaid[row.leaid] = { leaid: row.leaid, lea_name: row.lea_name, state: row.state, observed_arrests: 0 } - } - byLeaid[row.leaid].observed_arrests += (row.observed_arrests || 0) - } - - const sorted = Object.values(byLeaid).sort((a, b) => b.observed_arrests - a.observed_arrests) - - if (!cancelled) { - // Take top 8 for suggestions; filter to those with >0 arrests - setSuggestions(sorted.filter(d => d.observed_arrests > 0).slice(0, 8)) - } - } catch (err) { - console.error('Failed to load interesting districts:', err) + loadTopDistricts() + .then((fixture) => { + if (cancelled) return + const forState = fixture?.states?.[state] || [] + setSuggestions( + forState.slice(0, SUGGESTION_COUNT).map((d) => ({ + leaid: d.leaid, + lea_name: d.name, + state, + observed_arrests: d.arrests, + })), + ) + }) + .catch((err) => { + console.error('Failed to load suggested districts:', err) if (!cancelled) setSuggestions([]) // degrade gracefully — just show search box - } finally { + }) + .finally(() => { if (!cancelled) setLoadingSugg(false) - } - } + }) - loadSuggestions() return () => { cancelled = true } }, [state]) @@ -158,11 +184,6 @@ export default function DistrictSearch({ state, onSelect, onBack }) { )} - - {/* Hint */} -

- Tip: Try districts like Derby (KS), Paterson (NJ), or Mobile County (AL) — they have notable arrest rates. -

) } diff --git a/src/hooks/useApi.js b/src/hooks/useApi.js index b16a53b..b122a04 100644 --- a/src/hooks/useApi.js +++ b/src/hooks/useApi.js @@ -119,7 +119,16 @@ export async function fetchStateEstimates(state, options = {}) { return apiFetch(`/states/${state}${qs ? `?${qs}` : ''}`) } -/** GET /estimates?state=XX&year=Y — all districts in a state for "interesting" suggestions */ +/** + * GET /estimates?state=XX&year=Y — every estimate row in a state. + * + * Not used by the running app. The rows come back `ORDER BY LEAID, RACE, SEX` + * at eight per district, so any `limit` short of the state's full row count + * selects the lowest-LEAID districts rather than a meaningful sample — + * `DistrictSearch` reads the pre-ranked `public/data/top_districts.json` + * fixture instead. Kept for scripts and ad-hoc use; page it with `meta.total` + * as `scripts/build-top-districts.mjs` does. + */ export async function fetchStateDistricts(state, year = '21-22', limit = 500) { return apiFetch(`/estimates?state=${state}&year=${year}&limit=${limit}`) }