scripts/loaders/miami/gis_schoolsite.ts
Served verbatim from the project repository. Internal working document conventions apply: documents may reference file paths, branch names, and findings-ledger anchors from the repo.
// Load the county GIS Public School layer → enrollment_gis and
// fish_capacity_permanent_gis, stored under 2024-25 (the count date the
// ENROLLMNT field was measured to reflect; findings.md M.5).
// Run: npx tsx scripts/loaders/miami/gis_schoolsite.ts
import fs from "node:fs";
import { requireSource, startDataLoad, finishDataLoad, padSchoolNumber, schoolUniverse, upsertFacts, runMain, type Fact } from "./_lib";
const SCRIPT_PATH = "scripts/loaders/miami/gis_schoolsite.ts";
const SOURCE_ID = "mdc_gis_schoolsite";
const YEAR = "2024-25";
async function main() {
const { filePath, prov } = requireSource(SOURCE_ID);
const universe = await schoolUniverse();
const json = JSON.parse(fs.readFileSync(filePath, "utf-8")) as { features: { attributes: Record<string, unknown> }[] };
const facts: Fact[] = [];
let matched = 0;
for (const f of json.features) {
const num = padSchoolNumber(f.attributes.ID);
if (!num || !universe.has(num)) continue;
matched++;
const cap = Number(f.attributes.CAPACITY);
const enr = Number(f.attributes.ENROLLMNT);
if (Number.isFinite(cap) && cap > 0) facts.push({ schoolNumber: num, year: YEAR, metricKey: "fish_capacity_permanent_gis", value: cap });
if (Number.isFinite(enr) && enr > 0) facts.push({ schoolNumber: num, year: YEAR, metricKey: "enrollment_gis", value: enr });
}
const load = await startDataLoad({ sourceId: SOURCE_ID, sourceUrl: prov.url, sha256: prov.sha256, bytes: prov.bytes, yearCovered: YEAR, scriptPath: SCRIPT_PATH,
notes: "ENROLLMNT vintage inferred as 2024-25 (between CCD Oct 2023 and the board's 2025-26 figures); CAPACITY = permanent FISH capacity for 200 of the 326 schools with both (61%; the first-fetch spot check found 7 of 9)." });
const res = await upsertFacts(facts, load.id);
await finishDataLoad(load.id, { inserted: res.written, updated: 0, suppressed: 0 }, `${matched} of ${json.features.length} points matched the directory`);
console.log(`[gis] ${res.written} facts for ${matched} schools`);
}
runMain(main);