The compute pipeline now actually runs: per-pixel path loss over LIDAR
terrain, antenna pattern lookup, real GeoTIFF + colored PNG output,
Leaflet imageOverlay rendering with opacity slider and dBm legend.
Propagation:
- Towerops.Coverages.Propagation: Friis FSPL + Bullington single-knife-edge
diffraction (ITU-R P.526). Pure Elixir, closed-form, no NIF dependency.
Clean signature so a future ITM/Longley-Rice backend can drop in.
- Towerops.Coverages.Profile: AAIGrid sampler with elevation_at, sample
along great circle, haversine distance.
- Towerops.Coverages.Raster: Float32 GeoTIFF via gdal_translate (with VRT
wrapper) and colored PNG via gdaldem color-relief. Outputs to
priv/static/coverage/<org>/<id>/, served by existing Plug.Static.
Worker:
- Towerops.Workers.CoverageWorker now does the full pipeline: bbox compute
-> Towerops.Lidar.get_elevation_grid -> per-pixel Task.async_stream
(parallel = schedulers) running antenna pattern lookup + propagation +
RSSI threshold check, write rasters. Configurable terrain source via
:coverage_terrain_module application env so tests can stub. Friendly
failure messages for :no_tile, :grid_too_large, :nodata,
:unknown_antenna, :missing_location.
Bundled antenna catalog (~95 entries):
- AntennaCatalog with compact specs for every antenna in the request list:
Cambium, ALPHA, Antel, ITELITE, KP Performance, L-com, MARS, MikroTik,
Mimosa, MTI, RADWIN, RF Elements, Ruckus, Tarana, Simulate, Ubiquiti.
- Antenna.from_spec/1 synthesizes 360+360 attenuation patterns from
gain+beamwidth (cosine-squared main lobe, smooth transition,
front-to-back floor with mild ripple). Real .ant files in priv/antennas/
override the catalog by slug. Test fixtures moved to test/support.
Schema (migration add_radio_fields_to_coverages):
- tx_power_dbm replaces eirp_dbm; EIRP is now derived as
tx_power + antenna.gain - cable_loss in Coverage.eirp_dbm/2 and shown
live in the form header.
- cable_loss_db, sm_gain_dbi, latitude_override, longitude_override,
height_above_rooftop_m, tx_clearance_m, foliage_tuning (0-100 slider).
- Coverage.location/1 returns {lat, lon} from override or parent site.
UI:
- form.html.heex: cnHeat-style grouped form (Identity / Location /
Mounting / RF / Coverage extent), foliage tuning range slider,
computed EIRP badge in the header.
- show.html.heex: Leaflet map area with L.imageOverlay heatmap,
opacity slider, dBm color legend, antenna marker with directional
wedge for azimuth.
- assets/js/app.ts: CoverageMap hook registered.
Tests: 24 new (propagation reference values, profile sampling,
worker end-to-end with stubbed terrain that writes real GeoTIFF + PNG,
org-mismatch job-cancel guard). Full suite: 10815 tests.
732 lines
6.9 KiB
XML
732 lines
6.9 KiB
XML
NAME Test Omni 5 GHz
|
|
MAKE Test Manufacturer
|
|
FREQUENCY 5500
|
|
H_WIDTH 360
|
|
V_WIDTH 15
|
|
FRONT_TO_BACK 0
|
|
GAIN 8.0 dBi
|
|
TILT MECHANICAL
|
|
POLARIZATION VERTICAL
|
|
COMMENT Synthetic omni antenna for tests; flat horizontal plane, slight vertical taper.
|
|
HORIZONTAL 360
|
|
0 0.00
|
|
1 0.00
|
|
2 0.00
|
|
3 0.00
|
|
4 0.00
|
|
5 0.00
|
|
6 0.00
|
|
7 0.00
|
|
8 0.00
|
|
9 0.00
|
|
10 0.00
|
|
11 0.00
|
|
12 0.00
|
|
13 0.00
|
|
14 0.00
|
|
15 0.00
|
|
16 0.00
|
|
17 0.00
|
|
18 0.00
|
|
19 0.00
|
|
20 0.00
|
|
21 0.00
|
|
22 0.00
|
|
23 0.00
|
|
24 0.00
|
|
25 0.00
|
|
26 0.00
|
|
27 0.00
|
|
28 0.00
|
|
29 0.00
|
|
30 0.00
|
|
31 0.00
|
|
32 0.00
|
|
33 0.00
|
|
34 0.00
|
|
35 0.00
|
|
36 0.00
|
|
37 0.00
|
|
38 0.00
|
|
39 0.00
|
|
40 0.00
|
|
41 0.00
|
|
42 0.00
|
|
43 0.00
|
|
44 0.00
|
|
45 0.00
|
|
46 0.00
|
|
47 0.00
|
|
48 0.00
|
|
49 0.00
|
|
50 0.00
|
|
51 0.00
|
|
52 0.00
|
|
53 0.00
|
|
54 0.00
|
|
55 0.00
|
|
56 0.00
|
|
57 0.00
|
|
58 0.00
|
|
59 0.00
|
|
60 0.00
|
|
61 0.00
|
|
62 0.00
|
|
63 0.00
|
|
64 0.00
|
|
65 0.00
|
|
66 0.00
|
|
67 0.00
|
|
68 0.00
|
|
69 0.00
|
|
70 0.00
|
|
71 0.00
|
|
72 0.00
|
|
73 0.00
|
|
74 0.00
|
|
75 0.00
|
|
76 0.00
|
|
77 0.00
|
|
78 0.00
|
|
79 0.00
|
|
80 0.00
|
|
81 0.00
|
|
82 0.00
|
|
83 0.00
|
|
84 0.00
|
|
85 0.00
|
|
86 0.00
|
|
87 0.00
|
|
88 0.00
|
|
89 0.00
|
|
90 0.00
|
|
91 0.00
|
|
92 0.00
|
|
93 0.00
|
|
94 0.00
|
|
95 0.00
|
|
96 0.00
|
|
97 0.00
|
|
98 0.00
|
|
99 0.00
|
|
100 0.00
|
|
101 0.00
|
|
102 0.00
|
|
103 0.00
|
|
104 0.00
|
|
105 0.00
|
|
106 0.00
|
|
107 0.00
|
|
108 0.00
|
|
109 0.00
|
|
110 0.00
|
|
111 0.00
|
|
112 0.00
|
|
113 0.00
|
|
114 0.00
|
|
115 0.00
|
|
116 0.00
|
|
117 0.00
|
|
118 0.00
|
|
119 0.00
|
|
120 0.00
|
|
121 0.00
|
|
122 0.00
|
|
123 0.00
|
|
124 0.00
|
|
125 0.00
|
|
126 0.00
|
|
127 0.00
|
|
128 0.00
|
|
129 0.00
|
|
130 0.00
|
|
131 0.00
|
|
132 0.00
|
|
133 0.00
|
|
134 0.00
|
|
135 0.00
|
|
136 0.00
|
|
137 0.00
|
|
138 0.00
|
|
139 0.00
|
|
140 0.00
|
|
141 0.00
|
|
142 0.00
|
|
143 0.00
|
|
144 0.00
|
|
145 0.00
|
|
146 0.00
|
|
147 0.00
|
|
148 0.00
|
|
149 0.00
|
|
150 0.00
|
|
151 0.00
|
|
152 0.00
|
|
153 0.00
|
|
154 0.00
|
|
155 0.00
|
|
156 0.00
|
|
157 0.00
|
|
158 0.00
|
|
159 0.00
|
|
160 0.00
|
|
161 0.00
|
|
162 0.00
|
|
163 0.00
|
|
164 0.00
|
|
165 0.00
|
|
166 0.00
|
|
167 0.00
|
|
168 0.00
|
|
169 0.00
|
|
170 0.00
|
|
171 0.00
|
|
172 0.00
|
|
173 0.00
|
|
174 0.00
|
|
175 0.00
|
|
176 0.00
|
|
177 0.00
|
|
178 0.00
|
|
179 0.00
|
|
180 0.00
|
|
181 0.00
|
|
182 0.00
|
|
183 0.00
|
|
184 0.00
|
|
185 0.00
|
|
186 0.00
|
|
187 0.00
|
|
188 0.00
|
|
189 0.00
|
|
190 0.00
|
|
191 0.00
|
|
192 0.00
|
|
193 0.00
|
|
194 0.00
|
|
195 0.00
|
|
196 0.00
|
|
197 0.00
|
|
198 0.00
|
|
199 0.00
|
|
200 0.00
|
|
201 0.00
|
|
202 0.00
|
|
203 0.00
|
|
204 0.00
|
|
205 0.00
|
|
206 0.00
|
|
207 0.00
|
|
208 0.00
|
|
209 0.00
|
|
210 0.00
|
|
211 0.00
|
|
212 0.00
|
|
213 0.00
|
|
214 0.00
|
|
215 0.00
|
|
216 0.00
|
|
217 0.00
|
|
218 0.00
|
|
219 0.00
|
|
220 0.00
|
|
221 0.00
|
|
222 0.00
|
|
223 0.00
|
|
224 0.00
|
|
225 0.00
|
|
226 0.00
|
|
227 0.00
|
|
228 0.00
|
|
229 0.00
|
|
230 0.00
|
|
231 0.00
|
|
232 0.00
|
|
233 0.00
|
|
234 0.00
|
|
235 0.00
|
|
236 0.00
|
|
237 0.00
|
|
238 0.00
|
|
239 0.00
|
|
240 0.00
|
|
241 0.00
|
|
242 0.00
|
|
243 0.00
|
|
244 0.00
|
|
245 0.00
|
|
246 0.00
|
|
247 0.00
|
|
248 0.00
|
|
249 0.00
|
|
250 0.00
|
|
251 0.00
|
|
252 0.00
|
|
253 0.00
|
|
254 0.00
|
|
255 0.00
|
|
256 0.00
|
|
257 0.00
|
|
258 0.00
|
|
259 0.00
|
|
260 0.00
|
|
261 0.00
|
|
262 0.00
|
|
263 0.00
|
|
264 0.00
|
|
265 0.00
|
|
266 0.00
|
|
267 0.00
|
|
268 0.00
|
|
269 0.00
|
|
270 0.00
|
|
271 0.00
|
|
272 0.00
|
|
273 0.00
|
|
274 0.00
|
|
275 0.00
|
|
276 0.00
|
|
277 0.00
|
|
278 0.00
|
|
279 0.00
|
|
280 0.00
|
|
281 0.00
|
|
282 0.00
|
|
283 0.00
|
|
284 0.00
|
|
285 0.00
|
|
286 0.00
|
|
287 0.00
|
|
288 0.00
|
|
289 0.00
|
|
290 0.00
|
|
291 0.00
|
|
292 0.00
|
|
293 0.00
|
|
294 0.00
|
|
295 0.00
|
|
296 0.00
|
|
297 0.00
|
|
298 0.00
|
|
299 0.00
|
|
300 0.00
|
|
301 0.00
|
|
302 0.00
|
|
303 0.00
|
|
304 0.00
|
|
305 0.00
|
|
306 0.00
|
|
307 0.00
|
|
308 0.00
|
|
309 0.00
|
|
310 0.00
|
|
311 0.00
|
|
312 0.00
|
|
313 0.00
|
|
314 0.00
|
|
315 0.00
|
|
316 0.00
|
|
317 0.00
|
|
318 0.00
|
|
319 0.00
|
|
320 0.00
|
|
321 0.00
|
|
322 0.00
|
|
323 0.00
|
|
324 0.00
|
|
325 0.00
|
|
326 0.00
|
|
327 0.00
|
|
328 0.00
|
|
329 0.00
|
|
330 0.00
|
|
331 0.00
|
|
332 0.00
|
|
333 0.00
|
|
334 0.00
|
|
335 0.00
|
|
336 0.00
|
|
337 0.00
|
|
338 0.00
|
|
339 0.00
|
|
340 0.00
|
|
341 0.00
|
|
342 0.00
|
|
343 0.00
|
|
344 0.00
|
|
345 0.00
|
|
346 0.00
|
|
347 0.00
|
|
348 0.00
|
|
349 0.00
|
|
350 0.00
|
|
351 0.00
|
|
352 0.00
|
|
353 0.00
|
|
354 0.00
|
|
355 0.00
|
|
356 0.00
|
|
357 0.00
|
|
358 0.00
|
|
359 0.00
|
|
VERTICAL 360
|
|
0 0.00
|
|
1 0.05
|
|
2 0.10
|
|
3 0.15
|
|
4 0.20
|
|
5 0.30
|
|
6 0.45
|
|
7 0.60
|
|
8 0.80
|
|
9 1.00
|
|
10 1.30
|
|
11 1.65
|
|
12 2.00
|
|
13 2.40
|
|
14 2.85
|
|
15 3.30
|
|
16 3.80
|
|
17 4.35
|
|
18 4.95
|
|
19 5.60
|
|
20 6.30
|
|
21 7.05
|
|
22 7.85
|
|
23 8.70
|
|
24 9.60
|
|
25 10.55
|
|
26 11.55
|
|
27 12.60
|
|
28 13.70
|
|
29 14.85
|
|
30 16.05
|
|
31 17.30
|
|
32 18.60
|
|
33 19.95
|
|
34 21.35
|
|
35 22.80
|
|
36 24.30
|
|
37 25.85
|
|
38 27.45
|
|
39 29.10
|
|
40 30.80
|
|
41 32.55
|
|
42 34.35
|
|
43 36.20
|
|
44 38.10
|
|
45 40.05
|
|
46 42.05
|
|
47 44.10
|
|
48 46.20
|
|
49 48.35
|
|
50 50.55
|
|
51 52.80
|
|
52 55.10
|
|
53 57.45
|
|
54 59.85
|
|
55 62.30
|
|
56 64.80
|
|
57 67.35
|
|
58 69.95
|
|
59 72.60
|
|
60 75.30
|
|
61 78.05
|
|
62 80.85
|
|
63 83.70
|
|
64 86.60
|
|
65 89.55
|
|
66 92.55
|
|
67 95.60
|
|
68 98.70
|
|
69 101.85
|
|
70 105.05
|
|
71 108.30
|
|
72 111.60
|
|
73 114.95
|
|
74 118.35
|
|
75 121.80
|
|
76 125.30
|
|
77 128.85
|
|
78 132.45
|
|
79 136.10
|
|
80 139.80
|
|
81 143.55
|
|
82 147.35
|
|
83 151.20
|
|
84 155.10
|
|
85 159.05
|
|
86 163.05
|
|
87 167.10
|
|
88 171.20
|
|
89 175.35
|
|
90 179.55
|
|
91 183.80
|
|
92 188.10
|
|
93 192.45
|
|
94 196.85
|
|
95 201.30
|
|
96 205.80
|
|
97 210.35
|
|
98 214.95
|
|
99 219.60
|
|
100 224.30
|
|
101 229.05
|
|
102 233.85
|
|
103 238.70
|
|
104 243.60
|
|
105 248.55
|
|
106 253.55
|
|
107 258.60
|
|
108 263.70
|
|
109 268.85
|
|
110 274.05
|
|
111 279.30
|
|
112 284.60
|
|
113 289.95
|
|
114 295.35
|
|
115 300.80
|
|
116 306.30
|
|
117 311.85
|
|
118 317.45
|
|
119 323.10
|
|
120 328.80
|
|
121 334.55
|
|
122 340.35
|
|
123 346.20
|
|
124 352.10
|
|
125 358.05
|
|
126 364.05
|
|
127 370.10
|
|
128 376.20
|
|
129 382.35
|
|
130 388.55
|
|
131 394.80
|
|
132 401.10
|
|
133 407.45
|
|
134 413.85
|
|
135 420.30
|
|
136 426.80
|
|
137 433.35
|
|
138 439.95
|
|
139 446.60
|
|
140 453.30
|
|
141 460.05
|
|
142 466.85
|
|
143 473.70
|
|
144 480.60
|
|
145 487.55
|
|
146 494.55
|
|
147 501.60
|
|
148 508.70
|
|
149 515.85
|
|
150 523.05
|
|
151 530.30
|
|
152 537.60
|
|
153 544.95
|
|
154 552.35
|
|
155 559.80
|
|
156 567.30
|
|
157 574.85
|
|
158 582.45
|
|
159 590.10
|
|
160 597.80
|
|
161 605.55
|
|
162 613.35
|
|
163 621.20
|
|
164 629.10
|
|
165 637.05
|
|
166 645.05
|
|
167 653.10
|
|
168 661.20
|
|
169 669.35
|
|
170 677.55
|
|
171 685.80
|
|
172 694.10
|
|
173 702.45
|
|
174 710.85
|
|
175 719.30
|
|
176 727.80
|
|
177 736.35
|
|
178 744.95
|
|
179 753.60
|
|
180 762.30
|
|
181 753.60
|
|
182 744.95
|
|
183 736.35
|
|
184 727.80
|
|
185 719.30
|
|
186 710.85
|
|
187 702.45
|
|
188 694.10
|
|
189 685.80
|
|
190 677.55
|
|
191 669.35
|
|
192 661.20
|
|
193 653.10
|
|
194 645.05
|
|
195 637.05
|
|
196 629.10
|
|
197 621.20
|
|
198 613.35
|
|
199 605.55
|
|
200 597.80
|
|
201 590.10
|
|
202 582.45
|
|
203 574.85
|
|
204 567.30
|
|
205 559.80
|
|
206 552.35
|
|
207 544.95
|
|
208 537.60
|
|
209 530.30
|
|
210 523.05
|
|
211 515.85
|
|
212 508.70
|
|
213 501.60
|
|
214 494.55
|
|
215 487.55
|
|
216 480.60
|
|
217 473.70
|
|
218 466.85
|
|
219 460.05
|
|
220 453.30
|
|
221 446.60
|
|
222 439.95
|
|
223 433.35
|
|
224 426.80
|
|
225 420.30
|
|
226 413.85
|
|
227 407.45
|
|
228 401.10
|
|
229 394.80
|
|
230 388.55
|
|
231 382.35
|
|
232 376.20
|
|
233 370.10
|
|
234 364.05
|
|
235 358.05
|
|
236 352.10
|
|
237 346.20
|
|
238 340.35
|
|
239 334.55
|
|
240 328.80
|
|
241 323.10
|
|
242 317.45
|
|
243 311.85
|
|
244 306.30
|
|
245 300.80
|
|
246 295.35
|
|
247 289.95
|
|
248 284.60
|
|
249 279.30
|
|
250 274.05
|
|
251 268.85
|
|
252 263.70
|
|
253 258.60
|
|
254 253.55
|
|
255 248.55
|
|
256 243.60
|
|
257 238.70
|
|
258 233.85
|
|
259 229.05
|
|
260 224.30
|
|
261 219.60
|
|
262 214.95
|
|
263 210.35
|
|
264 205.80
|
|
265 201.30
|
|
266 196.85
|
|
267 192.45
|
|
268 188.10
|
|
269 183.80
|
|
270 179.55
|
|
271 175.35
|
|
272 171.20
|
|
273 167.10
|
|
274 163.05
|
|
275 159.05
|
|
276 155.10
|
|
277 151.20
|
|
278 147.35
|
|
279 143.55
|
|
280 139.80
|
|
281 136.10
|
|
282 132.45
|
|
283 128.85
|
|
284 125.30
|
|
285 121.80
|
|
286 118.35
|
|
287 114.95
|
|
288 111.60
|
|
289 108.30
|
|
290 105.05
|
|
291 101.85
|
|
292 98.70
|
|
293 95.60
|
|
294 92.55
|
|
295 89.55
|
|
296 86.60
|
|
297 83.70
|
|
298 80.85
|
|
299 78.05
|
|
300 75.30
|
|
301 72.60
|
|
302 69.95
|
|
303 67.35
|
|
304 64.80
|
|
305 62.30
|
|
306 59.85
|
|
307 57.45
|
|
308 55.10
|
|
309 52.80
|
|
310 50.55
|
|
311 48.35
|
|
312 46.20
|
|
313 44.10
|
|
314 42.05
|
|
315 40.05
|
|
316 38.10
|
|
317 36.20
|
|
318 34.35
|
|
319 32.55
|
|
320 30.80
|
|
321 29.10
|
|
322 27.45
|
|
323 25.85
|
|
324 24.30
|
|
325 22.80
|
|
326 21.35
|
|
327 19.95
|
|
328 18.60
|
|
329 17.30
|
|
330 16.05
|
|
331 14.85
|
|
332 13.70
|
|
333 12.60
|
|
334 11.55
|
|
335 10.55
|
|
336 9.60
|
|
337 8.70
|
|
338 7.85
|
|
339 7.05
|
|
340 6.30
|
|
341 5.60
|
|
342 4.95
|
|
343 4.35
|
|
344 3.80
|
|
345 3.30
|
|
346 2.85
|
|
347 2.40
|
|
348 2.00
|
|
349 1.65
|
|
350 1.30
|
|
351 1.00
|
|
352 0.80
|
|
353 0.60
|
|
354 0.45
|
|
355 0.30
|
|
356 0.20
|
|
357 0.15
|
|
358 0.10
|
|
359 0.05
|