TL;DR
- Most bad predictions trace back to input data, not to the propagation model. The model is usually the last thing to blame.
- The three defects that matter are antenna height defined inconsistently, clutter heights taken from a template, and unclosed vector polygons.
- One prediction over a cluster you know routes the debugging: uniform error means the model, class-dependent error means clutter, site-dependent error means the site database.
What does a site database need before import?
Every site needs coordinates in a single consistent datum, antenna height above ground rather than above sea level, and a per-sector record of azimuth, mechanical tilt, electrical tilt, antenna model and feeder or jumper loss. The antenna model is not optional: without the correct pattern file, the prediction uses a generic pattern and the azimuth and tilt values become decorative.
The most common defect is height. Site databases frequently mix antenna centre height, tower height and ground elevation, sometimes within the same spreadsheet. A 15 m error on one site shifts the whole coverage footprint and creates a systematic error that no calibration will fix, because it is not a model error.
| Dataset | Required fields | Typical defect | Effect on prediction |
|---|---|---|---|
| Site and sector | Coordinates, datum, antenna height, azimuth, tilts, antenna model | Height defined inconsistently; missing antenna pattern | Systematic footprint shift; wrong sector overlap |
| Clutter | Class per pixel, class height, class loss | Single urban class for a whole city; heights from a template | Uniform bias in dense areas; wrong indoor assumptions |
| Vector (buildings, water) | Closed polygons, correct topology, height attribute | Unclosed polygons; overlapping features; missing heights | Ray tracing fails or produces spurious reflections |
| Terrain | DEM at 30 m or better, void-filled | Voids filled with zero; vertical datum mismatch | Impossible paths over water; wrong diffraction loss |
| Antenna patterns | Full 3D pattern or horizontal plus vertical cuts | Pattern for a different gain variant of the same model | Wrong gain and wrong sidelobe structure |
How accurate does clutter data have to be?
More accurate than most datasets are, and the accuracy that matters is height rather than class. Clutter class selects the loss model; clutter height determines whether a path is obstructed. In a city where the average building is four storeys and the clutter height attribute says twelve metres, every path over that clutter is computed as obstructed when it is not, and the prediction becomes pessimistic in a way that looks like a bad propagation model.
The practical target is a clutter height within a few metres for the dominant class in each area, and a class assignment that distinguishes at least dense urban, urban, suburban, rural and water. Finer classes add value only if the heights are right; twenty classes with template heights are worse than six classes with measured ones.
What breaks vector data?
Topology, almost always. Ray-tracing and diffraction calculations need closed, non-self-intersecting polygons with consistent winding. Data exported from open sources frequently contains unclosed building outlines, duplicate overlapping features, and slivers where two polygons share an edge. The tool may import them without complaint and then produce reflections from surfaces that do not exist.
Height attributes are the second problem. Open building datasets often have height for a minority of features and nothing for the rest. Filling the gaps with a single default value destroys the vertical structure of the model in exactly the dense areas where it matters most, so the fill should be class-based at minimum and preferably derived from floor counts where they exist.
How do you audit a dataset quickly?
Four checks, in this order. First, count sites with a missing or implausible antenna height and list them; implausible means below 5 m or above 150 m. Second, plot the site distribution against the clutter map and look for sites standing in water or in the middle of a building polygon. Third, compute the histogram of clutter heights per class and look for a single dominant value, which indicates template filling.
Fourth, run one prediction over a cluster you know well and compare it against a handful of drive test points. If the error is uniform across clutter classes, the problem is the model. If it varies by class, the problem is the clutter heights. If it varies by site, the problem is the site database. That single test routes the debugging effort correctly, and it takes an afternoon rather than a week.