# How your data is weighted

> How CWOP data is weighted against ASOS by trust tier and age, how dewpoint is derived, and how the consensus check catches stuck or placeholder values.

Weather stations · Concept · https://wxalerts.org/docs/weather-stations/how-data-is-weighted/

When the API composes conditions for a point, it treats every network as one
population ranked by distance, age and trust. Your station competes in that
ranking. To find your station on the site, see
[Find your station on WxAlerts](/docs/weather-stations/on-wxalerts/).

Three things decide how it does.

## Trust tier

| Tier | Network |
| --- | --- |
| 1 | METAR / ASOS |
| 2 | Mesonet |
| 3 | Hosted PWS |
| 4 | **CWOP / APRS** |

A tier is a distance penalty, not a veto. At tier 4 your station has to be more
than **twice as close** as an ASOS to win a field. That is the honest position
described in [why put a station on CWOP](/docs/weather-stations/why-cwop/). A
back-garden console is not half as good as an ASOS, but it is not as good
either, and in most of the country being twice as close is easy, because the
nearest ASOS is at an airport 40 km away.

## Age

Readings decay. The effective distance doubles by the two-hour mark, so an
hour-old reading from 2 km beats a fresh one from 20 km, but loses to a fresh
one from 3 km. Past **two hours** a reading is treated as history rather than
current conditions and drops out entirely.

Reporting on the standard five-minute cadence keeps you comfortably inside
that, with room to miss a cycle.

## Dewpoint is computed, not received

A CWOP packet carries humidity and no dewpoint, where a METAR carries dewpoint
and no humidity. We derive the missing half of that pair so the two networks
are comparable, which means **your dewpoint here comes from your humidity
sensor**. A humidity sensor that has drifted or died shows up as a bad dewpoint
as well as a bad humidity.

## The consensus check

Some stations lie, and the dangerous case is not noise. It is a stuck or
placeholder value. Firmware that sends `t000` for "no reading" puts 0 °F on the
map in a Florida August, surrounded by two dozen stations reading 82.

Nothing about that reading is out of range. Per-field bounds cannot catch it,
because 0 °F is a real temperature in Montana in January. What makes it wrong
is its neighbors, so that is what it is checked against: the **median** of
nearby stations. The median, not the mean, because the mean is dragged by
exactly the outlier being hunted.

| | |
| --- | --- |
| **Peer radius** | 50 miles: close enough to share an air mass, wide enough that a rural station still finds peers |
| **Margin** | About 30 °F from the neighbors' median. Deliberately loose |
| **Minimum peers** | 3. Two peers can be two broken ones |
| **Fields checked** | Temperature and dewpoint only |

The margin is loose on purpose. This exists to catch **broken instruments, not
disagreeing ones**. A sea breeze front, a thunderstorm outflow or a valley
inversion can genuinely put 15 °F between two stations a few miles apart, and
all three are real weather worth showing.

**Wind and rain are deliberately not checked this way.** A gust front or a
single cell really does put 30 mph and an inch of rain at one station and
nothing at the next one over, and a consensus filter would erase precisely the
severe weather we exist to report.

  A refused reading is **refused, not deleted**. It stays in the store as what
  your station actually reported, because that is the truthful record, and
  because it is the thing you need to see when you come looking for why your
  station is not on the map. If your station has vanished from the map but the
  history shows readings, the consensus check is the first place to look, and a
  stuck sensor is the usual answer.

## References

**APRS specification.** `aprs.org/doc/APRS101.PDF`; `aprs.org/aprs11/`
(`spec-wx.txt`, `SSIDs.txt`); `aprs.org/aprs12/weather-new.txt`.

**CWOP and MADIS.** `wxqa.com` for the FAQ, QC and the current servers list;
`madis.ncep.noaa.gov` for signup and the surface QC notes; registration at
`findu.com/citizenweather/cw_form.html`.

**QC and validation.** `weather.gladstonefamily.net` (Weather Quality
Reporter); MesoWest at `mesowest.utah.edu`.

**Siting.** WMO No. 8, the CIMO Guide; NWS COOP standards.

**Software.** `weewx.com/docs`; `cumuluswiki.org`; the Direwolf user guide and
its `Weather-Station.pdf`.

**Sensors.** The ams/ScioSense AS3935 datasheet; Sensirion SHT3x and SHT4x;
Bosch BME280 and BMP390.

**Communities.** The groups.io APRS lists; `groups.google.com/g/wxqc` for CWOP
QC and weewx-user; wxforum.net; the Ecowitt and Ambient forums.

  Some caveats on the material in this section. wview is effectively abandoned,
  so use WeeWX. Several widely-circulated CWOP setup PDFs predate the current
  server recommendations, so always defer to wxqa.com's own "APRS Servers to
  Use" list. The APRS specification is stable but old: APRS101 dates to 2000,
  with the 1.1 and 1.2 addenda layered on top. Station counts fluctuate and
  should be read as order-of-magnitude. And the mesonet value in RTMA is
  well-supported for temperature, dewpoint and pressure but weaker for wind, so
  cite it accordingly.
