You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 440120f
Browse filesBrowse the repository at this point in the historyBrowse files
oco: spectra explorer shows all three bands at once; footprint view explains the slit rotation
The 12 km view looked odd because it is: OCO-2 rotates its slit along the orbit (~85 deg from
the track at the equator, ~12 deg over Los Angeles), so the eight footprints of a frame lie
nearly along the track there. The widget now draws one frame explicitly with numbered
footprints and states the slit angle; measured quantities are renamed along-slit /
along-track (1.08 x 2.28 km, 8.7 km end to end) and the README documents the finding.
Spectra explorer: three stacked panels (fixed axes 0-300 / 0-50 / 0-22) instead of tabs.
Copy file name to clipboardExpand all lines: oco/data/README.md
+12-7Lines changed: 12 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -45,16 +45,21 @@ polarization**, so the L1b radiance is ≈ ½ of the total intensity of an unpol
45
45
| file | contents | check |
46
46
|---|---|---|
47
47
|`track_oco2_orbit.json` (6 kB) | orbit 53380, 2024-07-14, nadir; sub-satellite point every 10 s | 280 points, 20:39:55–21:26:25 UTC, lon −176.6…176.4 (crosses the dateline), lat −58.3…81.8 |
48
-
|`footprints_oco2_la.json` (71 kB) | 100 consecutive nadir frames over the LA basin (centre 34.125 N, 117.898 W), 8 footprints × 4 O₂-band vertices | 755 of 800 footprints have vertices (45 are fill values in the L1b file → `null`); **medians: cross-track 1.085 km, along-track 2.276 km, swath 8.67 km**|
48
+
|`footprints_oco2_la.json` (72 kB) | 100 consecutive nadir frames over the LA basin (centre 34.125 N, 117.898 W), 8 footprints × 4 O₂-band vertices | 755 of 800 footprints have vertices (45 are fill values in the L1b file → `null`); **medians: 1.085 km along the slit × 2.276 km along track, 8.67 km for the eight footprints end to end; slit 11.7° from the ground track**|
49
49
|`footprints_oco3_sam_la.json` (209 kB) | OCO-3 SAM `fossil0005` "fossil_Los_Angeles_USA", 2022-02-18, all Lite soundings grouped by frame and swath | 305 frames, 2199 footprints, 8 swaths, 1641 good-quality, median XCO₂ 419.4 ppm; medians 2.25 × 2.34 km |
"geometry_note": "OCO-2 rotates its slit along the orbit (about 85 deg from the track near the equator, only ~10 deg from it over Los Angeles at 34 N), so here the eight footprints of a frame are stacked nearly ALONG the ground track and the 'swath' lies along the slit, not across the track. Footprint dims are geodesic side lengths of the L1b vertex parallelograms: short side = pitch along the slit (nominal 1.29 km), long side = along-track smear per 1/3 s frame (nominal 2.25 km).",
"missing_note": "footprints with fill-value vertices in the L1b file are null (see n_footprints)", "description": f"{NF} consecutive nadir frames over ({lat0}, {lon0}), window chosen with the fewest fill-value footprints; footprint dims are geodesic side lengths (short = across track, long = along track); swath = outer footprint centroid separation + one footprint width"}
66
+
"missing_note": "footprints with fill-value vertices in the L1b file are null (see n_footprints)", "description": f"{NF} consecutive nadir frames over ({lat0}, {lon0}), window chosen with the fewest fill-value footprints; swath = separation of footprint 1 and 8 centroids + one footprint pitch"}
Copy file name to clipboardExpand all lines: oco/widgets/footprint-scale.html
+18-5Lines changed: 18 additions & 5 deletions
Original file line number
Diff line number
Diff line change
@@ -35,7 +35,7 @@
35
35
</div>
36
36
<divclass="body"><canvasid="cv" aria-label="Map of OCO footprints at the selected scale"></canvas></div>
37
37
<divclass="readouts" id="ro"></div>
38
-
<pclass="caption" id="cap">Each OCO-2 sounding is a parallelogram about 1 km across and 2 km along the orbit; eight sit side by side across a swath only ~9 km wide, three frames every second. A single 99-minute orbit traces one thin line around the Earth, so the map is built from thousands of such lines over sixteen days. OCO-3 on the Space Station instead sweeps its pointing mirror to lay adjacent swaths over a city, a "snapshot area map".</p>
38
+
<pclass="caption" id="cap">Each OCO-2 sounding is a sliver about 1 km along the spectrometer slit and 2 km along the orbit (the smear during one third of a second); eight sit end to end along the slit, only ~9 km in total, three frames every second. The satellite rotates its slit along the orbit, so over Los Angeles the eight footprints happen to line up almost along the track instead of across it. A single 99-minute orbit traces one thin line around the Earth, so global maps are built from thousands of such lines over sixteen days. OCO-3 on the Space Station instead sweeps its pointing mirror to lay adjacent swaths over a city, a "snapshot area map".</p>
constm=FP2.meta;ro.push(["footprint",`${m.crosstrack_km_median.toFixed(2)} × ${m.alongtrack_km_median.toFixed(2)} km (across × along track, medians of ${m.n_footprints} vertices sets)`]);
91
-
ro.push(["swath",`${m.swath_km_median.toFixed(1)} km, 8 footprints`]);ro.push(["shown",`${m.n_frames} frames = ${(m.n_frames/m.frame_rate_hz).toFixed(0)} s of flight, ${m.date}${FP2.frames[0].t.slice(0,8)} UTC, orbit ${m.orbit}`]);
constm=FP2.meta;ro.push(["footprint",`${m.footprint_along_slit_km_median.toFixed(2)} km along the slit × ${m.footprint_along_track_km_median.toFixed(2)} km along track (medians of ${m.n_footprints} vertex sets)`]);
104
+
ro.push(["8 footprints",`${m.swath_along_slit_km_median.toFixed(1)} km end to end along the slit, which is rotated ${Math.abs(m.slit_angle_from_track_deg_median).toFixed(0)}° from the ground track over LA (≈ 85° near the equator)`]);ro.push(["shown",`${m.n_frames} frames = ${(m.n_frames/m.frame_rate_hz).toFixed(0)} s of flight, ${m.date}${FP2.frames[0].t.slice(0,8)} UTC, orbit ${m.orbit}`]);
92
105
if(TRACK)ro.push(["orbit track",`${TRACK.meta.n_points} points, 10 s apart, ${TRACK.meta.date} (daytime half of one orbit)`]);}
0 commit comments