Skip to Content

GeoJSON

What it is

The coverage grid, exported as a standard FeatureCollection that loads directly into mapping tools without transformation.

One Point feature per grid point, with the coverage statistics as properties.

A complete feature

{ "type": "Feature", "geometry": { "type": "Point", "coordinates": [-180.0, -90.0] }, "properties": { "coverage_percent": 0.0, "max_fold": 0, "max_gap_seconds": 0.0, "mean_fold": 0.0, "mean_gap_seconds": 0.0, "outage_count": 0 } }

Real output. The example is the South Pole, uncovered by a 53-degree constellation.

Coordinates are longitude first

GeoJSON coordinates are [longitude, latitude]. Every other surface in this software lists latitude first.

[-180.0, -90.0] is longitude -180, latitude -90: the South Pole. Read the other way it is latitude -180, which is not a valid latitude at all, and a tool that accepts it will place your data somewhere meaningless.

The ordering is mandated by the GeoJSON specification, not chosen here. It is the standard cause of a map with everything transposed.

Properties

ParameterTypeUnitDefaultRequiredDescription
coverage_percentnumberpercent—NoFraction of the window this point was covered.
max_foldintegercount—NoMost satellites visible at once from this point.
mean_foldnumbercount—NoAverage number visible.
max_gap_secondsnumbers—NoLongest interval with no satellite visible.
mean_gap_secondsnumbers—NoAverage gap length.
outage_countintegercount—NoNumber of distinct gaps.

The export carries more per point than the coverage response prints. max_fold, mean_fold, mean_gap_seconds, and outage_count appear here and not in the console summary.

If you want per-point redundancy or outage counts rather than aggregate statistics, this is where they are.

Producing it

The exporter takes the analysis object that a coverage run returns, not a constellation identifier. It is a second step:

# 1. Run the analysis. curl -s -X POST http://127.0.0.1:8080/coverage \ -H 'content-type: application/json' \ -d '{"constellation_id":"gj","duration_hours":1.0, "step_seconds":600.0,"grid_deg":45.0}' > cov.json # 2. Wrap its `analysis` object and export. python3 -c "import json;print(json.dumps({'analysis':json.load(open('cov.json'))['analysis']}))" \ | curl -s -X POST http://127.0.0.1:8080/export/coverage/geojson \ -H 'content-type: application/json' --data-binary @- > coverage.geojson

Passing a constellation_id instead fails:

Failed to deserialize the JSON body into the target type: missing field `analysis`

Points, not polygons

Each feature is a Point at a grid node, not a polygon covering the cell it represents.

That matters for rendering. A point layer at 45-degree spacing draws 40 dots, not a filled map, and most mapping tools will need either a symbol size that implies the cell or an interpolation step to produce a surface.

It also matters for interpretation: the statistic belongs to the node, and nothing is claimed about the area between nodes. A hole smaller than the grid spacing falls between points and is invisible.

Grid size and file size

The grid is two-dimensional, so the feature count grows with the square of resolution. At 45 degrees the example produced 40 features; at 5 degrees the same world grid produces 2664, and at 2 degrees roughly 16,000.

A fine grid is what you want for a quoted result and is often more than a browser-based map will render smoothly. Export coarse for a picture and fine for a number.

See also

Question? Give us feedbackDocuments Varaha Constellation Designer main (pre-release)
Last updated on