Data dictionary

93 measurements, each with its source, units, and validation status. Validation status is stated plainly, including where a measurement rests on a constant nobody has checked.

Address

addr_uniqueAddress identifies one buildingMethod sound, unmeasured

Whether this street address belongs to this building alone. False where several buildings share it — a two-flat, a duplex, or two structures on one parcel.

Three states. 1 unique, 0 shared, NULL means the building has no address on file — 149 rows in Cook, 1,258 in DuPage. NULL must never be coerced to 0: that would tell a house with no address that its address is shared. Some source rows also carry the literal string 'UNKNOWN' as the address, which the loader converts to NULL rather than storing, so nobody can look up a house by searching for 'unknown'.

derived

gers_idOverture GERS address idValidated

The Overture Global Entity Reference System id of the address feature this house keys to. It is what turns an address a user types into this house.

2,857,206 of 3,693,609 Illinois houses carry one — 77.4% of the state, and 91.0% of the houses that have an address at all. Those denominators are not interchangeable: answering a coverage question with 91.0% drops 528,085 addressless houses out of the denominator without saying so. Blank means the address was looked for and not matched; a house with no address has no value here at all.

derived

assessor_classAssessor property classValidated

The county assessor's own class code for this parcel. It says what KIND of building this is, which decides whether a measurement validated on single-family houses may be reported for it.

Published by the county assessor, carried through unchanged. Cook classes 202-210 are single-family and 211 is two-to-six apartments; the accuracy figures for pool, roof_shape and detached were all measured on single-family stock. A row whose class is outside that set has those columns withheld rather than reported at an accuracy nobody measured for it.

derived

Detectors

poolSwimming poolValidated

A swimming pool was detected within the parcel boundary.

Hand-checked. Two figures, because the boundary matters: 97.2%/88.7% where a real assessor parcel exists, and 97.8%/80.6% against a drawn lot at a stricter threshold. Available in all 102 counties since drawn lots closed the 92-county gap; each answer carries whether its boundary was real or estimated.

USDA NAIP aerial imagery · needs parcel boundary

pool_pPool confidenceMethod sound, unmeasured

Model probability for the pool detection.

USDA NAIP aerial imagery · needs parcel boundary

solarRooftop solarBeta

Rooftop solar panels were detected. Suitable for flagging an individual property. NOT suitable for counting installations across a portfolio.

85.9% precision but only 43.7% RECALL on 9,158 hand-reviewed labels. Accurate when it flags a property; it misses more than half of them. Every surface describing this field must disclose that it is for individual flagging and must NOT be used to count installations across a geography.

USDA NAIP aerial imagery

solar_pSolar confidenceMethod sound, unmeasured

Model probability for the rooftop solar detection.

USDA NAIP aerial imagery

roof_shapeRoof shapeValidated

Flat or pitched. Classified on the roof mask for all building types.

Hand-checked on 7,218 labels. `roof_shape_p` is the probability of FLAT and the flag fires at p >= 0.9. Cook once stored the opposite polarity and was suppressed for it; the re-score landed 2026-08-24 and was verified in Cook's own stored values, where flat carries a median p of 0.9986 against pitched's 0.0000 and the split falls exactly on 0.9. All 102 counties now share one convention.

USDA NAIP aerial imagery

roof_shape_pRoof shape confidenceMethod sound, unmeasured

Model probability for the roof shape classification.

USDA NAIP aerial imagery

detachedDetached structureValidated

A separate building (garage, shed, ADU) stands in the yard. Fuses LiDAR yard features with Clay embeddings where LiDAR exists.

Two counties have their own hand-checked measurement, at DIFFERENT thresholds: Lake (17097) runs at 0.5 from 800 reweighted houses, and Cook (17031) runs at 0.6 from ~4,000 houses. The other four LiDAR counties carry Lake's 0.5 with no local measurement, so their precision is unknown - Sangamon's detached rate is five times Kane's. Blanked where the parcel is shared or holds more than 9 buildings. Cook cannot hit that gate; its assessor class filter names single-family outright.

USDA NAIP aerial imagery · needs parcel boundary

detached_pDetached structure confidenceMethod sound, unmeasured

Model probability for the detached structure detection.

USDA NAIP aerial imagery · needs parcel boundary

detached_srcDetached structure methodValidated

Which evidence produced the detached value for this house: lidar+clay, clay_only, or no_single_lot.

derived · needs parcel boundary

lot_open_fracLot boundary inventedValidated

Share of this lot's boundary that had to be invented by the 120 ft cap rather than being bounded by a neighbouring house or a road. 0 means the lot was fully constrained; higher means more of it was guessed.

THE confidence column for pool and detached in the 92 counties with no published parcel. Detached is 76.1% precise where neighbours and roads bounded the lot against 47.3% where they did not — a 29-point spread, so any consumer filtering on detached should filter on this too. 81% of houses sit in the good bucket. Only 10 Illinois counties publish a parcel boundary; the other 92 (1,962,953 houses, 53% of the state) use a drawn lot.

derived · needs parcel boundary

Roof geometry

roof_h_p50_mRoof height (median)(m)Method sound, unmeasured

50th percentile roof return height above ground.

Illinois Height Modernization Program LiDAR · LiDAR only

roof_h_p90_mRoof height (p90)(m)Method sound, unmeasured

90th percentile roof return height above ground.

Illinois Height Modernization Program LiDAR · LiDAR only

roof_h_max_mRoof height (max)(m)Method sound, unmeasured

Maximum roof return height above ground.

Illinois Height Modernization Program LiDAR · LiDAR only

stories_estEstimated storiesUnvalidated

round(roof_h_p50_m / 3.0).

Per-house values discriminate correctly. COUNTY-LEVEL SUMMARIES ARE MISLEADING and must not be quoted: the 3 m per storey constant returns a median of 1 storey for most counties regardless of their actual housing stock.

derived · LiDAR only

roof_pitch_proxy_mRoof pitch proxy(m)Method sound, unmeasured

Height spread across the roof surface, used as a pitch stand-in.

Illinois Height Modernization Program LiDAR · LiDAR only

roof_planarity_std_mRoof planarity(m)Method sound, unmeasured

Standard deviation of residuals from a fitted plane. Read it with roof_resid_m, which says whether that plane fitted anything.

Illinois Height Modernization Program LiDAR · LiDAR only

roof_tilt_degRoof tilt(deg)Method sound, unmeasured

Tilt of the dominant fitted roof plane.

Illinois Height Modernization Program LiDAR · LiDAR only

roof_resid_mRoof plane residual(m)Method sound, unmeasured

Mean absolute residual from the fitted roof plane.

Illinois Height Modernization Program LiDAR · LiDAR only

roof_area_sqftRoof footprint area(sqft)Method sound, unmeasured

Plan-view roof footprint area.

Correlates only 0.22 with assessor floor area. This is a footprint, not a substitute for living area, and must not be presented as one.

Illinois Height Modernization Program LiDAR · LiDAR only

roof_mean_slope_degRoof mean slope(deg)Method sound, unmeasured

Mean slope across roof cells.

Illinois Height Modernization Program LiDAR · LiDAR only

roof_aspect_degRoof aspect(deg)Method sound, unmeasured

Compass bearing the sloped part of the roof faces. 0 = north, 90 = east. A value of -1 means FLAT, which is a real answer about the roof rather than a missing measurement.

Illinois Height Modernization Program LiDAR · LiDAR only

roof_south_fracRoof fraction with a southward componentMethod sound, unmeasured

Share of roof area whose aspect falls anywhere in 90-270 degrees. That is half the compass, so it includes due east and due west faces - it is NOT the S/SE/SW area a solar installer means.

NEVER PRESENT THIS AS USABLE SOLAR AREA. The loose 90-270 degree definition measures the same roofs at about 54% where the tight S/SE/SW definition measures about 30% - a 24-point gap that would overstate a solar estimate by most of its value. For real per-face direction, pitch and surface area, the facets data is the right source once it has a shape in this schema.

Illinois Height Modernization Program LiDAR · LiDAR only

solar_potential_sqftSolar potential area(sqft)Unvalidated

Roof area estimated from the southward-component share and slope. Not a figure of installable area, and not an upper bound on one either - see the validation note.

Never compared against a real installation. THIS COLUMN IS AGGREGATE-ONLY - measured 2026-08-31 against per-face solar across all 48 counties that carry it, 1,133,968 houses, superseding the three-county reading this note gave on 2026-08-27. Summed over every house it is within 10% of the per-face answer (1,239 M against 1,130 M sq ft), so it is serviceable for sizing a market. PER HOUSE IT IS NOT: the median ratio is 0.94 but p10 is 0.53 and p90 2.61, and only 31.0% of houses land within a quarter of the right answer. It also cannot filter, because it is almost never zero - it reports nothing usable for 4,290 houses out of 1.13 million, while 18.1% (205,335 houses) carry a positive figure with no mountable face at all. A prospecting list ordered by this column sends someone to a roof that cannot host panels about one visit in five. Where solar_sqft_s / solar_sqft_sew / solar_sqft_all exist, use those and ignore this. DO NOT SHIP A SCALING FACTOR: the median sits near 1 only because two opposite errors cancel - the 90-270 degree window overstates the southward share 1.6-1.7x while roof_area_sqft is the bare FOOTPRINT and understates a pitched roof - so scaling it makes it worse. That correction retracted an earlier version of this note which said it simply runs high. DO NOT STACK A kW CONVERSION ON IT either - the product of an unvalidated area and a nameplate factor reads like an engineering estimate while being neither.

Illinois Height Modernization Program LiDAR · LiDAR only

Per-face solar

solar_tierBest solar tier reachedMethod sound, unmeasured

The best orientation tier this roof reaches: south-facing, south plus east/west, any orientation, or none. The natural sort key for a prospecting list.

Illinois Height Modernization Program LiDAR

solar_sqft_sMountable area, south-facing(sqft)Method sound, unmeasured

Roof area on faces pointing south, south-east or south-west at a mountable pitch, summed from the measured planes.

Illinois Height Modernization Program LiDAR

solar_sqft_sewMountable area, south plus east/west(sqft)Method sound, unmeasured

Adds east and west faces to the south-facing area. East and west yield 80-85% of south, which installers routinely accept.

Illinois Height Modernization Program LiDAR

solar_sqft_allMountable area, any orientation(sqft)Method sound, unmeasured

Every face at a mountable pitch regardless of direction, including north. The widest figure and the least selective.

Illinois Height Modernization Program LiDAR

solar_flat_sqftMountable area, flat roof(sqft)Method sound, unmeasured

Roof area flat enough to take a ballasted or tilted mount, where orientation is chosen by the installer rather than by the roof.

Illinois Height Modernization Program LiDAR

solar_best_sqftLargest single usable face(sqft)Method sound, unmeasured

Area of the biggest single mountable plane. A roof split into many small faces takes more hardware than one large plane of the same total area, so this matters separately from the totals.

Illinois Height Modernization Program LiDAR

solar_best_aspect_degDirection of that face(deg)Method sound, unmeasured

Compass bearing the largest usable face points, 0 north through 180 south.

Illinois Height Modernization Program LiDAR

solar_best_slope_degPitch of that face(deg)Method sound, unmeasured

Slope of the largest usable face, in degrees from horizontal.

Illinois Height Modernization Program LiDAR

solar_facets_sSouth-facing facesMethod sound, unmeasured

How many separate planes make up the south-facing area. More faces for the same area means a more broken roof.

Illinois Height Modernization Program LiDAR

solar_facets_sewSouth plus east/west facesMethod sound, unmeasured

Face count behind the south-plus-east/west area.

Illinois Height Modernization Program LiDAR

solar_facets_allFaces at any orientationMethod sound, unmeasured

Face count behind the all-orientation area.

Illinois Height Modernization Program LiDAR

facet_countRoof facesMethod sound, unmeasured

How many distinct planes the roof breaks into, from the per-house roof summary.

From our per-county facet exports — the lot-classified set where the survey carries class-6 building returns, the derived set elsewhere — 2026-09-13, 99 counties and 3,428,442 houses. Scales with how many returns the survey put on the roof: 430 class-6 points per house gives a median of 4 faces, 2,742 gives 7. Not comparable across counties without that figure.

derived

facet_area_sqftRoof surface area(sqft)Method sound, unmeasured

True surface area of the roof, summed over its faces — larger than the footprint because a pitched face is longer than its shadow.

CLASS-6 COUNTIES ONLY. The 49 derived counties publish no area — OPEN-ISSUES D65 — because the derived source measures about 0.85x of class 6 per house and nothing establishes which is closer to the truth. Do not compare this figure across counties: it tracks point density on the roof as much as house size.

derived

facet_south_sqftSouth-facing roof area(sqft)Method sound, unmeasured

Roof surface area on faces pointing south, on the strict definition.

derived

facet_south_fracShare of roof facing southMethod sound, unmeasured

South-facing surface area as a share of the whole roof.

THE STRICT DEFINITION, and the reason it exists. `roof_south_frac` counts every face between 90 and 270 degrees — half the compass — and measures around 54%. This one has a statewide median of 0.14-0.30. They are different questions and must never be presented as the same number.

derived

facet_has_usable_southHas a usable south roofMethod sound, unmeasured

At least one south-facing face large enough and shallow enough to mount on.

derived

solar_shade_classCanopy shadingMethod sound, unmeasured

How much tree canopy sits over the roof: clear, light, moderate or heavy.

A CLASSIFICATION, not a subtraction. It does not say WHICH face the canopy sits over, so a shaded house may still have a clear mountable face — an earlier version of the analysis layer excluded on shading and removed 300,346 houses whose only shade was on a face that did not matter.

Illinois Height Modernization Program LiDAR

Insurance

bldg_height_ftBuilding height(ft)Validated

Structure height above ground.

Two regimes, and `bldg_src` says which one a house is in. MEASURED where the survey classifies buildings (`class6`). DERIVED from the last return of each laser pulse where it does not — and the derivation's accuracy depends on the flight, graded across six counties on 2026-08-25: 97.5-98.7% within 5 ft with a median error of about 1 ft where pulses carry multiple returns (Sangamon, McHenry, Peoria, Tazewell), against 72.0-73.7% within 5 ft with a p90 error near 17 ft on a single-return flight (Kane, Lake), where the last-return test that separates roof from tree canopy has nothing to discard. Quote the error, not a correlation: r depends on how much the heights vary, reading 0.958 on Cook's mix of storeys and 0.899 on one-to-two storey Sangamon for the same real accuracy.

Illinois Height Modernization Program LiDAR, Overture Maps building footprints · LiDAR only

bldg_srcBuilding height methodValidated

Which evidence produced this house's building height: class6 where the survey classified building points and the height is measured, derived_p95_last where it did not and the height was derived from the last return of each pulse.

Read this before comparing heights across counties. A derived height is 97.5-98.7% within 5 ft on a multi-return flight but 72.0-73.7% on a single-return one, so `bldg_src` is the difference between a measurement and an estimate — 1,113,282 of the 1,712,264 Illinois houses that carry a height at all have a derived one.

Illinois Height Modernization Program LiDAR · LiDAR only

roof_complexity_scoreRoof complexityUnvalidated

Planarity standard deviation x 10, capped at 100. Drives rebuild cost.

std of building point heights x10, capped at 100. Requires LiDAR class 6 and is BLANK without it. The ORDERING claim was asserted until 2026-08-27 and now has evidence: against per-facet solar, Spearman +0.443 over 64,357 Sangamon houses and +0.550 over 22,806 in Adams, both rising monotonically from a median 2-3 faces in the lowest score decile to 7-9 in the highest. Moderate, not strong - a house scoring 35 is genuinely likelier to have a complicated roof than one scoring 15; a single house score is not a precise complexity measure. The x10 scaling and the cap at 100 remain untested, and the derived variant overshoots the measured one badly - Lake median 61.3 against 39.8, Kane 56.4 against 32.6.

derived · LiDAR only

tree_overhang_5ftCanopy points within 5 ft(points)Method sound, unmeasured

Count of vegetation LiDAR returns within 5 ft of the structure. A COUNT of laser points, not an area and not a share — higher means more canopy against the wall, but it cannot be converted to square feet or to a percentage.

Illinois Height Modernization Program LiDAR · LiDAR only

tree_overhang_30ftCanopy points within 30 ft(points)Method sound, unmeasured

Count of vegetation LiDAR returns within 30 ft of the structure. A COUNT of laser points, not an area and not a share. Compare it between properties; do not read it as a proportion of anything.

Illinois Height Modernization Program LiDAR · LiDAR only

defensible_space_pctDefensible space(%)Method sound, unmeasured

Share of the 30 ft ring around the structure carrying vegetation.

Illinois Height Modernization Program LiDAR · LiDAR only

tree_countTree countUnvalidated

Canopy cells divided by 4.

Corrected 2026-08-18. The earlier formula assumed 100 sq ft per tree and overcounted by roughly 5x — the median Cook house claimed 18 trees within 30 feet. The corrected formula uses 490 sq ft per crown and the median is now 4. Every extracted county was converted, so there is ONE version of this number.

derived · LiDAR only

Terrain and drainage

terrain_slope_degLot slope(deg)Method sound, unmeasured

Mean ground slope across the parcel.

Illinois Height Modernization Program LiDAR · needs parcel boundary · LiDAR only

lot_relief_mLot relief(m)Method sound, unmeasured

Elevation range across the parcel.

Illinois Height Modernization Program LiDAR · needs parcel boundary · LiDAR only

terrain_aspect_degLot aspect(deg)Method sound, unmeasured

Compass direction the lot slopes toward.

Meaningless on a flat lot. Consumers MUST gate this on terrain_slope_deg before displaying it.

Illinois Height Modernization Program LiDAR · needs parcel boundary · LiDAR only

grade_to_house_ftGrade to house(ft)Validated

Elevation change from the parcel toward the structure. Negative means ground falls toward the foundation, so water drains at the house.

Negative means the house sits at the low end and water drains toward the foundation. The genuinely new capability here: a FEMA flood map gives a zone, this gives a direction per property. VALIDATED 2026-08-25 against USGS 3DEP — an independent survey flown 8-12 years apart, so agreement is not two readings of one measurement. Quote the SIGN, not a correlation: it agrees on which way the ground falls for 95.9% of 367 houses in Pike (11.62% of lots over 5 degrees) and 89.6% of 337 in Jo Daviess (50.13% over 5 degrees). So 90-96%, and lower in hill country — the harder the terrain, the more often it disagrees. The claim that it degrades safely on flat ground also holds: a median of 0.09 ft across 303 lots under 2 degrees.

Illinois Height Modernization Program LiDAR · needs parcel boundary · LiDAR only

Vegetation and fuels

tree_canopy_fracCanopy coverMethod sound, unmeasured

Share of the parcel under tree canopy.

Illinois Height Modernization Program LiDAR · LiDAR only

max_tree_h_mTallest tree(m)Method sound, unmeasured

Height of the tallest vegetation return on the parcel.

Illinois Height Modernization Program LiDAR · LiDAR only

roof_overhang_fracRoof overhang ratioMethod sound, unmeasured

Overhanging vegetation measured against the building FOOTPRINT rather than the roof surface, so it is a ratio that can exceed 1 — Cook reaches 12.6. It says how much canopy sits over the structure, not what share of the roof is shaded.

Footprint-based, so values above 1 are normal and it is NOT a shaded-share figure. It also does not say WHICH face the canopy sits over, so it cannot be used to exclude houses from a solar list — an earlier version of the analysis layer subtracted on it and removed 300,346 houses whose only shade was on a face that did not matter.

Illinois Height Modernization Program LiDAR · LiDAR only

veg_low_fracLow vegetationMethod sound, unmeasured

Share of the parcel in low vegetation.

Illinois Height Modernization Program LiDAR · LiDAR only

veg_med_fracMedium vegetationMethod sound, unmeasured

Share of the parcel in medium-height vegetation.

Illinois Height Modernization Program LiDAR · LiDAR only

ladder_fuel_fracLadder fuelsMethod sound, unmeasured

Share of canopy with low brush beneath it, the path fire climbs into the crown.

Illinois Height Modernization Program LiDAR · LiDAR only

Pool confirmation

pool_void_sqftLargest lot void area(sqft)Unvalidated

Area of the largest LiDAR return void anywhere in the lot. On most lots that is lawn, not a pool. Does NOT measure a pool and must not be read as pool dimensions.

TESTED 2026-08-25 AND IT DOES NOT MEASURE A POOL. It finds the largest empty region in the lot, which is usually lawn. In Cook the median void is 50 sq ft whether the pool model says pool or not; in Sangamon it is 1,138 sq ft at houses the model calls a pool against 2,075 sq ft at houses it does not. A pool-sized void (200-1,200 sq ft) is MORE common at houses with no pool - 13.5% against 5.2% in Cook, 25.1% against 16.4% in Sangamon. It therefore contradicts the pool detector rather than corroborating it. Recovering a real pool size means recomputing the void inside the pool's own footprint, which is a new measurement rather than a join.

Illinois Height Modernization Program LiDAR · needs parcel boundary · LiDAR only

pool_void_compactnessLargest lot void compactnessUnvalidated

Shape regularity of that largest void. Compact shapes are not specific to pools, so this does not confirm one either.

TESTED 2026-08-25 AND IT DOES NOT MEASURE A POOL. It finds the largest empty region in the lot, which is usually lawn. In Cook the median void is 50 sq ft whether the pool model says pool or not; in Sangamon it is 1,138 sq ft at houses the model calls a pool against 2,075 sq ft at houses it does not. A pool-sized void (200-1,200 sq ft) is MORE common at houses with no pool - 13.5% against 5.2% in Cook, 25.1% against 16.4% in Sangamon. It therefore contradicts the pool detector rather than corroborating it. Recovering a real pool size means recomputing the void inside the pool's own footprint, which is a new measurement rather than a join.

Illinois Height Modernization Program LiDAR · needs parcel boundary · LiDAR only

Roof reflectance

roof_int_p50Roof intensity (median)Method sound, unmeasured

Median LiDAR return intensity on the roof. Comparable WITHIN a roof only, not between roofs or flightlines.

Intensity is not calibrated across flightlines. Only within-roof relative comparisons are meaningful.

Illinois Height Modernization Program LiDAR · LiDAR only

roof_int_rel_p10Roof intensity (relative p10)Method sound, unmeasured

10th percentile intensity relative to the roof median.

Illinois Height Modernization Program LiDAR · LiDAR only

roof_int_rel_p90Roof intensity (relative p90)Method sound, unmeasured

90th percentile intensity relative to the roof median.

Illinois Height Modernization Program LiDAR · LiDAR only

roof_int_cvRoof intensity variationMethod sound, unmeasured

Coefficient of variation of roof return intensity.

Illinois Height Modernization Program LiDAR · LiDAR only

roof_int_patch_fracRoof patch fractionUnvalidated

Share of the roof whose reflectance differs from the dominant surface. Elevated values indicate partial replacement or mixed materials.

No permit or re-roof ground truth has been compared against it. Treat as a lead, not a finding.

Illinois Height Modernization Program LiDAR · LiDAR only

Yard features

npts_normLot point densityMethod sound, unmeasured

Parcel-level LiDAR yard feature. An input to the detached structure detector, exposed for customers building their own models.

Model input, not a standalone measurement. Blanked where the parcel is shared or holds more than 9 buildings.

Illinois Height Modernization Program LiDAR · needs parcel boundary · LiDAR only

bldg6_fracLot share, building classMethod sound, unmeasured

Parcel-level LiDAR yard feature. An input to the detached structure detector, exposed for customers building their own models.

Model input, not a standalone measurement. Blanked where the parcel is shared or holds more than 9 buildings.

Illinois Height Modernization Program LiDAR · needs parcel boundary · LiDAR only

veg5_fracLot share, high vegetationMethod sound, unmeasured

Parcel-level LiDAR yard feature. An input to the detached structure detector, exposed for customers building their own models.

Model input, not a standalone measurement. Blanked where the parcel is shared or holds more than 9 buildings.

Illinois Height Modernization Program LiDAR · needs parcel boundary · LiDAR only

grd_fracLot share, groundMethod sound, unmeasured

Parcel-level LiDAR yard feature. An input to the detached structure detector, exposed for customers building their own models.

Model input, not a standalone measurement. Blanked where the parcel is shared or holds more than 9 buildings.

Illinois Height Modernization Program LiDAR · needs parcel boundary · LiDAR only

tall_fracLot share, tall returnsMethod sound, unmeasured

Parcel-level LiDAR yard feature. An input to the detached structure detector, exposed for customers building their own models.

Model input, not a standalone measurement. Blanked where the parcel is shared or holds more than 9 buildings.

Illinois Height Modernization Program LiDAR · needs parcel boundary · LiDAR only

bldgh_fracLot share at building heightMethod sound, unmeasured

Parcel-level LiDAR yard feature. An input to the detached structure detector, exposed for customers building their own models.

Model input, not a standalone measurement. Blanked where the parcel is shared or holds more than 9 buildings.

Illinois Height Modernization Program LiDAR · needs parcel boundary · LiDAR only

maxhTallest return in the lotMethod sound, unmeasured

Parcel-level LiDAR yard feature. An input to the detached structure detector, exposed for customers building their own models.

Model input, not a standalone measurement. Blanked where the parcel is shared or holds more than 9 buildings.

Illinois Height Modernization Program LiDAR · needs parcel boundary · LiDAR only

h_p50Return height, medianMethod sound, unmeasured

Parcel-level LiDAR yard feature. An input to the detached structure detector, exposed for customers building their own models.

Model input, not a standalone measurement. Blanked where the parcel is shared or holds more than 9 buildings.

Illinois Height Modernization Program LiDAR · needs parcel boundary · LiDAR only

h_p75Return height, p75Method sound, unmeasured

Parcel-level LiDAR yard feature. An input to the detached structure detector, exposed for customers building their own models.

Model input, not a standalone measurement. Blanked where the parcel is shared or holds more than 9 buildings.

Illinois Height Modernization Program LiDAR · needs parcel boundary · LiDAR only

h_p90Return height, p90Method sound, unmeasured

Parcel-level LiDAR yard feature. An input to the detached structure detector, exposed for customers building their own models.

Model input, not a standalone measurement. Blanked where the parcel is shared or holds more than 9 buildings.

Illinois Height Modernization Program LiDAR · needs parcel boundary · LiDAR only

h_stdReturn height, spreadMethod sound, unmeasured

Parcel-level LiDAR yard feature. An input to the detached structure detector, exposed for customers building their own models.

Model input, not a standalone measurement. Blanked where the parcel is shared or holds more than 9 buildings.

Illinois Height Modernization Program LiDAR · needs parcel boundary · LiDAR only

b6_coverBuilding-class coverMethod sound, unmeasured

Parcel-level LiDAR yard feature. An input to the detached structure detector, exposed for customers building their own models.

MIXED UNITS. Roughly 10.8x a true fraction and routinely above 1. Never render as a percentage and never compare against a 0-1 scale.

Illinois Height Modernization Program LiDAR · needs parcel boundary · LiDAR only

b6_maxdistBuilding class, farthest pointMethod sound, unmeasured

Parcel-level LiDAR yard feature. An input to the detached structure detector, exposed for customers building their own models.

Model input, not a standalone measurement. Blanked where the parcel is shared or holds more than 9 buildings.

Illinois Height Modernization Program LiDAR · needs parcel boundary · LiDAR only

b6_cnt_normBuilding-class point densityMethod sound, unmeasured

Parcel-level LiDAR yard feature. An input to the detached structure detector, exposed for customers building their own models.

Model input, not a standalone measurement. Blanked where the parcel is shared or holds more than 9 buildings.

Illinois Height Modernization Program LiDAR · needs parcel boundary · LiDAR only

b6_p90hBuilding-class height, p90Method sound, unmeasured

Parcel-level LiDAR yard feature. An input to the detached structure detector, exposed for customers building their own models.

Model input, not a standalone measurement. Blanked where the parcel is shared or holds more than 9 buildings.

Illinois Height Modernization Program LiDAR · needs parcel boundary · LiDAR only

tall_coverTall-return coverMethod sound, unmeasured

Parcel-level LiDAR yard feature. An input to the detached structure detector, exposed for customers building their own models.

MIXED UNITS. Roughly 10.8x a true fraction and routinely above 1. Never render as a percentage and never compare against a 0-1 scale.

Illinois Height Modernization Program LiDAR · needs parcel boundary · LiDAR only

Data quality

gers_sourceHow the address id was establishedValidated

Whether the address id came from matching the address text and then confirming by distance, or from proximity alone.

overture_gers_address_join is the 99 LiDAR counties: the address text matched and the distance then confirmed it. overture_gers_nearest_unclaimed is Kendall, Logan and Madison, which have no address file to match against, so the id rests on proximity alone. Serving the two as one answer presents a distance guess as a key hit.

derived

gers_match_ftDistance to the matched address(ft)Validated

How far this house sits from the address feature it keys to. Not the same measurement as Address match distance, which is how far the house sits from the address point it took its street address from.

On every keyed row. The join gate is 150 ft; statewide the keyed rows run p50 18.7 ft and p90 49.8 ft. A 19 ft join and a 140 ft join must not look alike downstream, which is why it is published rather than collapsed into a boolean.

derived

gers_rankWhich building this address points atValidated

Where this building sits among the buildings sharing its address id, nearest first. 1 is the closest to the address point.

1 is the building closest to the address point. Measured 2026-09-23: 49,754 ids in the store are shared by more than one building in the same county, across 104,580 rows — several structures at one address, not duplicate rows for one structure. Ranked by gers_match_ft ascending, ties broken by house_id so the order is stable across re-exports.

derived

address_normalisedAddress, normalised for matchingValidated

The street address folded to one form so that the two conventions in this store compare equal. For joining, not for display — the address column holds what the county published.

Produced by our own address normaliser, imported into the ingest pipeline and run unmodified. Verified to fold both conventions together: '18412 CAVE Road' and '18412 Cave Rd' both become '18412 cave road', as do '201 West PROSPECT Street' and '201 W PROSPECT ST'. The raw address column is never rewritten.

derived

npts_roofReturns on the roofValidated

LiDAR point-density counter. Use to reject rows whose measurements rest on too few returns.

A counter, not a measurement. Never render as a property attribute.

Illinois Height Modernization Program LiDAR · LiDAR only

npts_parcelReturns in the lotValidated

LiDAR point-density counter. Use to reject rows whose measurements rest on too few returns.

A counter, not a measurement. Never render as a property attribute.

Illinois Height Modernization Program LiDAR · LiDAR only

npts_ground_lastLast returns from the groundValidated

LiDAR point-density counter. Use to reject rows whose measurements rest on too few returns.

A counter, not a measurement. Never render as a property attribute.

Illinois Height Modernization Program LiDAR · LiDAR only

ground_under_canopy_fracGround visible under canopyValidated

LiDAR point-density counter. Use to reject rows whose measurements rest on too few returns.

A counter, not a measurement. Never render as a property attribute.

Illinois Height Modernization Program LiDAR · LiDAR only

npts_class14Returns classed as wireValidated

LiDAR point-density counter. Use to reject rows whose measurements rest on too few returns.

A counter, not a measurement. Never render as a property attribute.

Illinois Height Modernization Program LiDAR · LiDAR only

Metadata

lidar_tileLiDAR tileValidated

Identifier of the source LiDAR tile.

Illinois Height Modernization Program LiDAR · LiDAR only

Accuracy

Every figure below is labelled with how it was measured, because the method changes what the number means. A balanced cross-validation score flatters a detector, since real properties are not evenly split between classes. A real-world corrected figure is measured on a random draw from actual predictions and reweighted to the true class frequency. We publish both and say which is which.

MeasurementPrecisionRecallMethodScope
Swimming poolpool97.2%88.7%Hand-checkedAll covered counties
Swimming poolpool97.8%80.6%Hand-checkedAll covered counties
Rooftop solarsolar85.9%43.7%Hand-checkedAll covered counties
Roof shaperoof_shape92.6%88.2%Hand-checkedAll covered counties
Detached structuredetached89.7%83.3%Hand-checkedAll covered counties
Detached structuredetached81.5%78.1%Hand-checkedAll covered counties
Detached structuredetached75.8%69.3%Hand-checkedAll covered counties

Swimming pool: Measured where a real parcel boundary exists. Measured on Real assessor parcel boundaries, 8,597 hand-reviewed labels, threshold 0.9. Completion report, weeks 1-8, 2026-08-23. 34,661 houses judged by humans in total, with 5,294 pool negatives re-checked on a second pass that corrected 226 labels. Threshold 0.9.

Swimming pool: Measured against an estimated lot rather than a filed parcel. The stricter 0.99 threshold buys precision at the cost of recall, which is the right trade when the boundary itself is inferred. Measured on Drawn lot boundaries, 5,849 hand-reviewed labels, threshold 0.99. Completion report, weeks 1-8, 2026-08-23. 34,661 houses judged by humans in total, with 5,294 pool negatives re-checked on a second pass that corrected 226 labels. Threshold 0.99.

Rooftop solar: Individual flagging only. At 43.7% recall this misses more than half of all installations, so a count over any geography will be badly low. Measured on 9,158 hand-reviewed labels. Completion report, weeks 1-8, 2026-08-23. 34,661 houses judged by humans in total, with 5,294 pool negatives re-checked on a second pass that corrected 226 labels.

Detached structure: Where LiDAR is available. Measured on 8,549 hand-reviewed labels, Clay embeddings fused with LiDAR yard features. Completion report, weeks 1-8, 2026-08-23. 34,661 houses judged by humans in total, with 5,294 pool negatives re-checked on a second pass that corrected 226 labels.

Detached structure: Photo only, without LiDAR, on a published parcel. The 8-point gap against the fused figure is the clearest measure of what the point cloud contributes. Measured on 9,801 hand-reviewed labels, Clay embeddings only, threshold 0.6. Completion report, weeks 1-8, 2026-08-23. 34,661 houses judged by humans in total, with 5,294 pool negatives re-checked on a second pass that corrected 226 labels. Threshold 0.6.

Detached structure: Drawn lot rather than a published parcel. Read with lot_open_frac: 76.1% precise where neighbours and roads bounded the lot, 47.3% where they did not. Measured on Retrained on drawn lots and measured against the same 11,365 hand-checked Cook houses, so nothing but the polygon differs. Completion report, weeks 1-8, 2026-08-23. 34,661 houses judged by humans in total, with 5,294 pool negatives re-checked on a second pass that corrected 226 labels. Threshold 0.6.

Sources

USDA NAIP aerial imageryPublic domain (US Government work)8 fields

Leaf-on aerial imagery with a near-infrared band, flown by the USDA National Agriculture Imagery Program. The input to all four Clay detectors and to the spectral overlays.

Vintage: Varies by state, 1 to 3 years old · Resolution: 30 cm in Illinois, 60 cm elsewhere · Coverage: 49 states at 60 cm. 30 cm currently Illinois only (FIPS 17).

Licence verified: not recorded — this claim predates the rule that a source must be named.

Classified aerial LiDAR point clouds. The source of all 57 height, roof geometry, terrain, vegetation and yard measurements.

Vintage: Varies by county · Resolution: Point density varies by county. Sangamon is 0.28x Lake's. · Coverage: 99 of 102 Illinois counties carry the full 57 features, finished 2026-08-25. The other three are permanently blocked by their published archives rather than by absent LiDAR: Logan's holds a survey of a county 90 miles away, and Kendall's and Madison's index no archive that exists. Where a survey classified no building points the 57 still ship, but five b6_ columns are constant and the LiDAR detached head cannot be used.

Licence verified: not recorded — this claim predates the rule that a source must be named.

Overture Maps building footprintsODbL 1.0 (share-alike, attribution required)1 fields

Building footprint polygons and heights. Used as the structure source where no open county assessor parcel layer exists, and as the validation reference for building height.

Vintage: Monthly release · Coverage: Global

Licence verified: Overture's own attribution page states the buildings theme is published under the Open Database License and carries the notice "© OpenStreetMap contributors. Available under the Open Database License", because OpenStreetMap is its highest-priority conflation source. Overture requires every other source blended into the theme to be ODbL or compatible. Read at https://docs.overturemaps.org/attribution/ and https://docs.overturemaps.org/guides/buildings/ on 2026-10-09. NOTE: this entry previously read "CDLA-Permissive 2.0" with a null licenseSource — the permissive licence belongs to Overture's PLACES theme, not buildings, and the claim had never been verified.

Regulatory flood zone polygons and Special Flood Hazard Area designation.

Vintage: Continuously revised by FEMA · Coverage: All 51 states and territories with NFHL data

Licence verified: not recorded — this claim predates the rule that a source must be named.

Tract-level demographic, housing, income, education and commute estimates.

Vintage: 5-year rolling estimates · Resolution: Census tract · Coverage: National

Licence verified: not recorded — this claim predates the rule that a source must be named.

House price appreciation and loan-level characteristics used to adjust value estimates to the present.

Vintage: Quarterly · Resolution: Tract, ZIP and county with a fallback chain · Coverage: National

Licence verified: not recorded — this claim predates the rule that a source must be named.

DOE LEAD energy cost dataPublic domain0 fields

Modeled household electricity and natural gas cost, used for energy burden.

Vintage: See DOE release · Resolution: Census tract · Coverage: National

Licence verified: not recorded — this claim predates the rule that a source must be named.

FEMA USA StructuresCC-BY-4.0 (attribution required)0 fields

Every structure over 450 square feet in the United States, as footprints with a modelled primary occupancy. Filtered to single-family dwellings, this is the house list for the 92 Illinois counties with no usable assessor parcel universe — it supplies which structures exist and where they are, and `idHouse` is built from its OBJECTID.

Vintage: Checked annually for updates by the publisher · Resolution: One footprint per structure over 450 sq ft · Coverage: United States and territories. Used for the 92 Illinois counties without an open assessor parcel universe; the other 10 come from county assessors.

Licence verified: The ArcGIS item behind the FeatureServer we actually query (item 0ec8512ad21e4bb987d7e848d14e7e24, owner Esri_US_Federal_Data) states: "This work is licensed under a Creative Commons by Attribution (CC BY 4.0) license." Its accessInformation credits Oak Ridge National Laboratory (ORNL) and the FEMA Geospatial Response Office. The layer itself returns an EMPTY copyrightText, so the item record is the only statement there is. Read 2026-09-04. NOTE: FEMA data is often assumed public domain as a US Government work; the thing we consume is an Esri-hosted view that declares CC BY, and what the publisher of the artefact we actually use says is what governs.

USDOT National Address Database, via Overture MapsPublic domain (US Government work) - not for mailing-list use0 fields

Street address points. The address source for the 97 Illinois counties whose houses come from FEMA structure ids and carry no assessor address of their own. Read from the Overture addresses theme, pinned release 2026-08-19.0, in the same public S3 bucket the building footprints already come from.

Vintage: Overture release 2026-08-19.0 · Resolution: One point per address · Coverage: 97 of the 99 Illinois counties that carry addresses. About 550,000 Illinois houses have no address point within 150 ft of them at all; Champaign 17019 alone is 53,131 houses against 1,929 points in the whole county.

Licence verified: Overture's attribution page names the United States source as the USDOT National Address Database and lists no separate Illinois, Cook or DuPage entry, so the national NAD terms govern every Illinois address we take from it. data.gov records the NAD's license as http://www.usa.gov/publicdomain/label/1.0/, and USDOT states the NAD is a work of the federal government and not subject to copyright under 17 U.S.C. Verified 2026-08-27.

DuPage County assessor parcel addressesOpen Geo-Spatial Data License - DuPage County (permissive, attribution required)0 fields

Street addresses held against parcels by the county, pulled from DuPage's own ArcGIS parcel service and joined to houses through the parcel they stand on. An exact join, so match_ft is 0 and nothing is interpolated.

Vintage: As published by the county service · Resolution: One address per parcel · Coverage: DuPage County (17043) only.

Licence verified: DuPage County GIS open data licence, drafted by the county IT/GIS Division with its State's Attorney's office, as recorded in the rights statements the BTAA Geoportal carries for DuPage layers. Verified 2026-08-27. NOTE: the primary licence document itself was not reachable from the county GIS pages that day, so the wording recorded here is second-hand and worth re-checking before it appears in a contract.

Cook County assessor parcel addressesNot declared by the publisher0 fields

Street addresses joined to houses on the 14-digit PIN, from the Assessor's published Parcel Addresses table. Exact, so match_ft is 0. Also the only clean address ground truth in Illinois - every accuracy figure quoted for the matched counties was measured against these 924,288 rows.

Vintage: 1999 to present, republished bi-weekly · Resolution: One address per parcel PIN · Coverage: Cook County (17031) only. 924,288 houses.

Licence verified: Cook County Open Data (Socrata) dataset 3723-97qp returns an attribution field of "Cook County Assessor's Office" and NO licenseId; catalog.data.gov shows the dataset with an access level of public and no License field; cookcountyil.gov/terms-use asserts copyright over County website content and tells a user to presume permission is needed before reuse. Verified 2026-08-27.