Methodology
How every number on the map is computed, what it is anchored to, and where the data is thin. Nothing here is modelled or generated; each figure is a LandPortal market-research value, a count, a ratio or a median over the data that matches your filters.
LandPortal layer · trailing 12 months
The default statistic, LP Absorption Rate, and the other “LandPortal” statistics come from LandPortal’s market-research drill (status = sold, 365-day window) for counties, ZIPs and states, loaded from an internal snapshot. They are closed-sale figures. Internal use only.
Loading the LandPortal layer…
County recorded sales · 3 counties, 5–640 ac, 12 complete months
A second sold source, independent of LandPortal: deed-level land sales pulled from the public records of Chatham NC, Union NC and Sevier TN, divided by a fresh count of what is actually listed. These give the three “County …” statistics, the County recorded sales card on the county and ZIP panels of those counties, and the Sold points at street level. Every rate is read from the data file; nothing is modelled.
Loading county recorded sales…
Our listings · definitions
- Active inventory (our listings)
- LandSearch / LandWatch listings with status
activeorcoming-soon - Under contract (our listings)
- listings with status
pending(LandSearch) orunder_contract(LandWatch) - Contract Absorption % (our listings)
- under contract ÷ (active inventory + under contract). Undefined when the denominator is 0. Our own listings-based measure: the share of the current on-market inventory that has gone under contract. It is NOT a closed-sale rate; the LandPortal Absorption Rate is.
- Median $/acre (list)
- median of asking price ÷ acres over listings where both are known
- Median DOM (observed)
- median of (date status was last checked − listing date), in days, over listings with a usable listing date
- Listing count
- listings matching the filters (the Status filter narrows this count, the medians and the pins; it never changes absorption or the score)
- Confidence
- n < 10 low · 10–29 medium · 30+ high. For a LandPortal-sourced score n = sold + implied active; for a listings-based score n = active + under contract. Low-confidence units render faded and hatched.
Absorption Score
# LandPortal-sourced (unit has LP sales > 0 under the acreage selection; state / county / ZIP) K = 15 ar_s = (sold + K · ar_parent) / (sold + active + K) ar_parent = parent's LP rate (county -> state, ZIP -> county, state -> US; else US) score = round(100 · pctRank(ar_s)) ranked among LP-sourced units of the same level n = sold + implied active confidence: < 10 low, 10-29 medium, >= 30 high # Listings-based (everything else: hexes, radius circles, units without LP sales) n = active + underContract ca_s = (underContract + K · ca_parent) / (n + K) dom_s = (m · medDom + K · medDom_parent) / (m + K) m = listings with known DOM score = round(100 · (0.6 · pctRank(ca_s) + 0.4 · pctRank(−dom_s)))
Every score names its source (panel, hover, rankings, window.__absorption()): “LandPortal absorption, 12 mo” or “Our listings: contract absorption + DOM”. Shrinkage pulls a unit with few observations toward its parent: with K = 15, a unit with 15 sales (or listings) sits halfway between its own rate and its parent’s; with 150 it is 91% its own. Percentile ranks are taken among units of the same level; ties share their midpoint. The radius tool ranks its circle against the national population of res-7 hexes (listings-based).
Time windows
LandPortal numbers are always the trailing 12 months before their scrape date and ignore the Time filter. For our listings, 90 days, 6 months (182 d), 1 year (365 d) and 2 years (730 d) apply to the listing date and are anchored at the newest listing date in the snapshot, not at today, so a thin recent feed does not empty the short windows. “All” (the default) is the only window that includes listings with an unknown listing date. Days on market is observed: the date the status was last checked minus the listing date, clamped at zero.
Status groups (our listings)
| Source status | Group | Source |
|---|---|---|
active | active inventory | LandSearch, LandWatch, MLS |
coming-soon | active inventory | LandSearch |
pending | under contract | LandSearch only |
under_contract | under contract | LandWatch only |
dead_landlocked | excluded | not a market status |
The Status filter (All / Active / Under contract) narrows the listing count, the medians, the acreage bands, the pins and the rankings on those columns. Contract Absorption % and the listings-based score always use both groups, because a ratio with one side filtered out is meaningless. Sold stays disabled for per-listing data: sold figures exist only as LandPortal county / ZIP aggregates (the LP statistics).
Dedup and exclusions (our listings)
- Rows merged into a canonical listing (duplicates across sources) are dropped; the canonical row's status wins when they disagree.
dead_landlockedrows are dropped.- Listing dates before 2015-01-01 or unparseable (e.g. 1900-01-01) are treated as unknown.
- $/acre is asking price ÷ acres when both are positive, else the source's price-per-acre, else unknown.
Geography assignment
Every listing is placed by point-in-polygon on its coordinates, never by its text county or ZIP (17% of raw ZIPs are blank and many are wrong). Counties come from the Census 2023 cartographic boundary file (500k), ZIPs from the Census 2020 ZCTA file; a point that falls in no polygon (coastal generalisation) takes the nearest polygon within 2 km, else stays unassigned. Hexes are Uber H3 cells at resolution 8, with resolutions 5–7 derived on the client; the map picks the resolution from the zoom level. A ZIP's parent county is the county with the largest area overlap; a hex's parent is the county holding most of its listings. LandPortal counties are matched to the same county polygons by name, and LandPortal ZIPs to the same ZCTAs by code (see the ZIP ∩ county rule above).
Data sources
- Sold statistics: LandPortal market research (drill-deep, status = sold, 365 days), internal snapshot. Internal use only.
- Listings: LandSearch and LandWatch on-market land listings (internal snapshot), plus a small multi-source MLS set.
- Boundaries: US Census Bureau cartographic boundary files (public domain), simplified for display.
- Hex grid: H3 (Uber, Apache-2.0).
- Basemap tiles: OpenFreeMap (OpenMapTiles schema, © OpenStreetMap contributors), with CARTO dark-matter as fallback.
- Place search: Photon by komoot (© OpenStreetMap contributors). ZIPs and “County, ST” resolve locally first.
Known gaps
Loading data health…