Coordinates#
OWRT uses one numerical contract everywhere: WGS84 geographic input, a topocentric East-North-Up (ENU) frame on the WGS84 ellipsoid for the scene, heights above ground for radio devices, and explicit grid orientation for every array.
The local frame#
LocalFrame.at(longitude, latitude) builds a pyproj pipeline from geodetic coordinates to
ENU metres at the given origin. The scene origin is the requested centre for scenes compiled
by the loader, the CLI and the explorer. An HTTP simulation without an explicit scene_center
and every dataset case use the first transmitter as the centre.
from openworld_radio_twin import LocalFrame
frame = LocalFrame.at(longitude=4.8993, latitude=52.3762)
east, north, up = frame.to_local(4.9003, 52.3770)
longitude, latitude, altitude = frame.to_geographic(east, north)
corners = frame.corners(-250, -250, 250, 250) # WGS84 corners of the scene square
A compiled scene restores the same frame with owrt.scene_frame(scene). The provenance
file records the origin, axis order, units and the ellipsoidal vertical reference of the
frame separately from the terrain source datum.
Heights#
Transmitter and receiver heights are metres above the local ground (AGL). owrt.position
adds the compiled terrain elevation at the horizontal position, so a transmitter requested at
25 m stands 25 m above the modelled terrain even on a hillside. With terrain disabled, the
ground is the local z = 0 plane.
The local frame’s up component is ellipsoidal and relative to the geodetic origin; it is
not an AGL height. scene_z_reference in the provenance names which of the two the scene
uses.
Array orientation#
Array |
Rows |
Columns |
Note |
|---|---|---|---|
|
south to north |
west to east |
Grid nodes |
|
south to north |
west to east |
Cells between nodes |
Solver arrays ( |
south to north |
west to east |
Plot with |
Exported PNGs, height map, voxel products |
north-up |
west to east |
One pixel per cell |
Radio arrays carry cell_centers with shape (rows, columns, 3) in ENU metres. Use the saved
coordinates when aligning arrays from different products rather than stacking them by index.
Scene bounds#
The scene is the square from -radius_m to +radius_m on both horizontal axes. Terrain,
surfaces, receiver cells and buildings share this boundary; the WGS84 corners are written to
the provenance for GIS tools.