slv.measurements.mobile.gps.merge_with_gps#

slv.measurements.mobile.gps.merge_with_gps(site, org, obs, time_range=None, num_processes=1, routes=None, route_buffer=None, storage_polygon=None, altitude_range=(1000.0, 3500.0), horel_fallback=True)[source]#

Attach GPS positions to a mobile site’s concentration records.

Reads the site’s final-level GPS through uataq (UATAQ sites only), drops the fixes with an altitude outside altitude_range (m MSL; fixes without one are kept, None keeps all), the fixes farther than route_buffer m from routes and those inside storage_polygon, then joins on the GPS clock (the Pi clock of the lin loggers is not trusted). For trx* sites the defaults are the TRAX lines, 50 m and the JRRSC yard; pass False to skip a filter.

Parameters:
  • site (str) – Site name and its organization (only "UATAQ" is supported).

  • org (str) – Site name and its organization (only "UATAQ" is supported).

  • obs (pd.DataFrame) – Records with a Time_UTC column.

  • time_range (optional) – Passed to uataq.read_data.

  • num_processes (int) – Passed to uataq.read_data.

  • routes (GeoDataFrame, str or False, optional) – See get_geodf().

  • storage_polygon (GeoDataFrame, str or False, optional) – See get_geodf().

  • route_buffer (float, optional) – Metres, in the routes’ CRS.

  • altitude_range ((float, float), optional) – Plausible altitudes, default ALTITUDE_RANGE_MSL.

  • horel_fallback (bool) – Georeference the rows the lin GPS never covered from the horel logger, where the Pi clock checks out (fill_gps_gaps_with_horel()). Every row is tagged gps_source.

Returns:

obs with the GPS columns (Latitude_deg, Longitude_deg, Altitude_msl, …), each observation once: when two fixes fall in one second of the Pi clock, the observation keeps the first.

Return type:

pd.DataFrame