Abstract
An open source software package has been developed for Global Navigation Satellite Systems (GNSS) interferometric reflectometry. The gnssrefl package is written in python; it can be installed from the source code, the python packaging index website, or via a docker. It includes modules that download GNSS data and orbit data from global archives. A periodogram is used to retrieve the height of the GNSS antenna over the reflecting surface using signal to noise ratio data. Signals from the Global Positioning System, Glonass, Galileo, and Beidou constellations are supported. Modules are provided to estimate volumetric water content of soil, snow depth/accumulation, and water level. Utilities for mapping and assessing reflection zones and determining the maximum resolvable height are available.
Similar content being viewed by others
Explore related subjects
Find the latest articles, discoveries, and news in related topics.Avoid common mistakes on your manuscript.
Introduction
GNSS Interferometric Reflectometry (GNSS-IR) is a ground-based remote sensing technique that uses commercial off-the-shelf GNSS hardware. GNSS-IR shares heritage with early GNSS reflection experiments that used a single GNSS antenna and receiver. To enhance the reflected signal, these experimental teams tilted the antenna towards the reflection surface (Anderson 2000; Hannah 2001). A group based in Boulder, Colorado subsequently demonstrated that zenith-pointing GNSS antennas (the orientation used by all geodesists and surveyors) could also be used to measure environmental signals such as soil moisture, snow depth, and vegetation water content (Larson et al. 2008; Larson et al. 2009; Small et al. 2010). These GNSS-IR results meant that at least some of the data from thousands of geodetic-quality receivers could be used as environmental sensors.
As with Anderson (2000) and Hannah (2001), the Boulder group used SNR data as the primary reflection observable. GNSS data from the Plate Boundary Observatory were subsequently analyzed routinely to estimate environmental parameters in an initiative called PBO H2O (Larson 2016). The Boulder group and Chalmers University collaborated to demonstrate that zenith-pointing GNSS-IR antennas could be used to measure tides (Larson et al. 2013a).
The goal of this paper is to introduce the goals and general features of gnssrefl, an open source software package in python for GNSS-IR (Larson 2024). It builds upon the lessons learned from the PBO H2O project and an earlier software release (Roesler and Larson 2018). Examples for measuring tides, snow accumulation, and soil moisture with gnssrefl are presented.
Software
gnssrefl was developed with the following design goals:
-
1.
Single language (python).
-
2.
Open source.
-
3.
Utilities to download and translate GNSS observation and orbit files.
-
4.
Measures water levels (tides), snow accumulation and ice surface changes, and surface soil moisture.
-
5.
Includes GPS, Glonass, Galileo, and Beidou observations.
-
6.
Public access for example use cases.
-
7.
Download via GitHub, python package index, and dockers.
-
8.
Tools for assessment of GNSS-IR site quality.
The primary retrieved parameter in GNSS-IR is the vertical distance between the GNSS antenna phase center and the surface or reflector height. The reflector height is derived from the dominant frequency of low elevation angle SNR data for a given rising or setting satellite arc. gnssrefl uses a periodogram to estimate this frequency, which is then scaled by \(2/\lambda\) (where \(\lambda\) is the signal wavelength) to give reflector height (Axelrad et al. 2005).
gnssrefl is split into three broad categories: main modules, utilities, and environmental application modules (Fig. 1). The goals of the main modules are to (1) extract SNR data from GNSS data files and calculate azimuth/elevation angles and (2) estimate reflector heights. Utilities have been developed to help analysts set up appropriate analysis strategies and to calculate daily averages of reflector heights.
Data translation and access
rinex2snr is the primary data translation module in gnssrefl. rinex2snr can be used with locally stored observation files or it can query 17 different global GNSS archives. The standard RINEX 2.11 data format (Gurtner and Estey 2007) and the newer RINEX 3 and 4 formats (Romero 2020) are allowed. A separate utility (nmea2snr) supports data stored in the NMEA format (Gakstatter 2015).
In addition to stripping out the SNR data, rinex2snr and nmea2snr calculate and store elevation and azimuth angles for each satellite observation. The output of the translation modules is a SNR file with time, azimuth and elevation angles, satellite number and SNR observations on multiple frequencies. None of the carrier phase or pseudorange data used for positioning are retained as they are irrelevant for GNSS-IR.
Site assessment utilities
In positioning software, measurements from all azimuths are used and a single elevation angle limit is imposed. In contrast, GNSS-IR requires the user to choose the desired azimuth and elevation angles to be used (the reflection mask). Here we outline the utilities in gnssrefl that help users optimize the reflection mask.
The first utility helps define the appropriate reflection mask; it should be defined in a way that ensures that the reflected signals come from the surface of interest, e.g. ice, snow, soil, water. The reflection zone for a single rising or setting satellite arc depends on the reflector height, the GNSS transmission frequency, and the satellite elevation and azimuth angles. Roesler and Larson (2018) previously provided Matlab tools to calculate and display GPS reflection zones for different azimuth and elevation masks. gnssrefl expanded this module – refl_zones - to include the Galileo, Glonass, and Beidou constellations (see supplement for sample output).
The GNSS-IR analyst also needs to confirm that the GNSS receiver is using a sampling rate that will allow an unaliased estimation of reflector height. Utility max_resolve_RH computes the maximum reflector height that can be estimated at a site for a given receiver sampling rate and azimuth/elevation angle mask (Roesler and Larson 2018). This is particularly important when analysts try to estimate reflector heights for sites that are operating at 30-second sampling intervals.
A third utility - quickLook – examines and displays reflection characteristics for a given SNR file using different reflection masks and quality control settings. The focus for quickLook is providing a visual summary of reflector height results on a given day rather than quantitative results for long periods of time.
Estimation of reflector height
gnssir is used for routine estimation of reflector heights. These values are used as input to the functions that make environmental products. Here only final results are shown for three examples that were operating zenith-pointing geodetic instruments; fuller descriptions of the inputs and outputs are provided in the supplement and at the GitHub repository. A discussion of the accuracy values for GNSS-IR retrievals for soil moisture, snow accumulation, and water levels are found in Small et al. (2016), McCreight et al. (2014) and Larson et al. (2017), respectively.
Sea level measurement
The GNSS instrument at Mornington Island, Australia was installed by the State of Queensland ~ 40 m offshore. This is too close to the shore to allow unobstructed water reflections in all directions (see supplement). In total ~ 130 reflector heights can be retrieved per day using elevation angle arcs that extend from 5 to 15 degrees (Fig. 2). The reflector heights are corrected in the subdaily module for the \(\dot{H}\) effect (Larson et al. 2013b) and inter-frequency biases.
The estimated reflector heights agree with an 8-knot spline fit with an RMS of 0.033 m. The correlation between GNSS-IR and a collocated traditional tide gauge is better than 0.99 (Larson and Williams 2023). Better temporal resolution can be achieved in gnssrefl by using shorter/overlapping elevation angle ranges. Alternatively one can use the invsnr module, where SNR data arcs are simultaneously inverted to estimate a water level time series (Strandberg et al. 2016; Purnell et al. 2021). gnssrefl also allows users to convert their GNSS-IR-based relative water levels to values defined in the International Terrestrial Reference Frame (Altamimi et al. 2023).
Snow accumulation
The Niwot Ridge GNSS site was installed by the Boulder group at an elevation of 3500 m (Nievinski and Larson 2014). Snow depth values (Fig. 3) are based on a daily average of reflector heights. To convert reflector height to snow depth, a bare soil reflector height value is empirically defined for a user-defined snow-free time-period (snowdepth module). In North America this time-period is in the late summer or early fall, as shown in Fig. 3.
Soil moisture
GNSS station SCIA was installed in Victorville, California as part of the Plate Boundary Observatory network. It is sparsely vegetated with very little rain in the summers. The soil moisture code (module vwc) follows the models developed by Chew et al. (2016) for PBO H2O. Soil moisture values in gnssrefl are reported once per day. Figure 4 shows soil moisture for Victorville over a two-year time period.
Installation and documentation
The source code, documentation, and docker images for gnssrefl are hosted at GitHub. Examples are provided for soil moisture, surface changes on ice sheets, snow depth, tides, and lake/river monitoring. Although here we shared results from geodetic-quality GNSS sensors, one can also use gnssrefl to analyze SNR data recorded by low-cost GNSS sensors (Fagundes et al. 2021; Karegar et al. 2022).
gnssrefl was written for retrospective data analysis, i.e. after a full day of observations have been downloaded. However, the software can download real-time multi-GNSS orbits. This means that it would be straightforward to use the existing software to update a water level time series at ~ 15–30 min intervals, thus supporting users interested in monitoring storm surges in near real-time (e.g. Peng et al. 2019). Soil moisture and snow accumulation products could similarly be updated for near-real-time applications by modifying how frequently the products are created. For a truly real-time GNSS-IR monitoring system such as might be desired for tsunami monitoring (Larson et al. 2021), a user would need to install an appropriate Kalman filter (Strandberg et al. 2019; Liu et al. 2023).
Conclusions
An open-source software package in python has been developed to support GNSS-IR users. Mapping tools allow users to visualize reflection zones and choose appropriate receiver sampling intervals. gnssrefl supports the four major GNSS constellations and the most commonly-used GNSS data formats. Users are encouraged to make changes to the code at its public repository so that improvements can be shared with the community.
Data availability
No datasets were generated or analysed during the current study.
References
Altamimi Z, Rebischung P, Collilieux X, Metivier L, Chanard K (2023) ITRF2020: an augmented reference frame refining modeling of nonlinear station motions. J Geodesy. https://doi.org/10.1007/s00190-023-01738-w
Anderson KD (2000) Determination of water level and tides using interferometric observations of GPS signals. J Atmos Ocean Tech. https://doi.org/10.1175/1520-0426(2000)017%3C1118:DOWLAT%3E2.0.CO;2
Axelrad P, Larson KM, Jones B (2005) Use of the Correct Satellite Repeat Period to Characterize Site-Specific Multipath Errors, Proc. ION Meeting, Long Beach CA, 2638–2648
Chew CC, Small EE, Larson KM (2016) An Algorithm for Soil Moisture Estimation using GPS interferometric reflectometry for Bare and Vegetated Soil. GPS Solut. https://doi.org/10.1007/s10291-015-0462-4
Fagundes MAR, Mendonca-Tinti I, Lescheck AL, Akos DM, Nievinski FG (2021) An open-source low-cost sensor for SNR-based GNSS reflectometry: design and long-term validation towards sea-level altimetry. GPS Solut. https://doi.org/10.1007/s10291-021-01087-1
Gakstatter E (2015) What Exactly is NMEA Data? GPS World. https://www.gpsworld.com/what-exactly-is-gps-nmea-data, Accessed 5 February 2024
Gurtner W, Estey L (2007) RINEX: the receiver independent exchange format version 2.11. https://files.igs.org/pub/data/format/rinex211.txt. Accessed 28 January 2024
Hannah B (2001) Modelling and Simulation of GPS Multipath Propagation, Doctoral Dissertation, Queensland Institution of Technology
Karegar M, Kusche J, Geremia-Nievinski F, Larson KM (2022) Raspberry Pi Reflector (RPR): a low-cost water-level monitoring system based on GNSS Interferometric Reflectometry. Water Resour Res. https://doi.org/10.1029/2021WR031713
Larson KM (2016) GPS Interferometric Reflectometry: applications to Surface Soil moisture, snow depth, and Vegetation Water Content in the Western United States. WIREs Water. https://doi.org/10.1002/wat2.1167
Larson KM (2024) gnssrefl, https://github.com/kristinemlarson/gnssrefl, Accessed 18 February 2024
Larson KM, Williams SDP (2023) Water Level measurements using reflected GNSS signals. Int Hydro Rev. https://doi.org/10.58440/ihr-29-2-a30
Larson KM, Small EE, Gutmann ED, Bilich AL, Braun JJ, Zavorotny VU (2008) Use of GPS receivers as a soil moisture network for water cycle studies. Geophys Res Lett. https://doi.org/10.1029/2008GL036013
Larson KM, Gutmann ED, Zavorotny VU, Braun JJ, Williams MW, Nievinski FG (2009) Can we measure Snow depth with GPS receivers? Geophys Res Lett. https://doi.org/10.1029/2009GL039430
Larson KM, Löfgren JS, Haas R (2013a) Coastal sea level measurements using a single geodetic receiver. Adv Space Res. https://doi.org/10.1016/j.asr.2012.04.017
Larson KM, Ray RD, Nievinski FG, Freymueller JT (2013b) The Accidental Tide Gauge: A GPS Reflections Case Study from Kachemak Bay, Alaska, Geosci Rem Sens Lett. https://doi.org/10.1109/LGRS.2012.2236075
Larson KM, Ray RD, Williams SDP (2017) A ten-year comparison of water levels measured with a geodetic GPS receiver versus a conventional tide gauge. J Atmos Ocean Tech. https://doi.org/10.1175/JTECH-D-16-0101.1
Larson KM, Lay T, Yamazaki Y, Cheung KF, Ye L, Williams SDP, Davis JL (2021) Dynamic sea level variation from GNSS: 2020 Shumagin earthquake tsunami resonance and Hurricane Laura. Geophys Res Lett. https://doi.org/10.1029/2020GL091378
Liu Z, Du L, Zhou P, Wang X, Zhang Z, Liu Z (2023) Cloud-based near real-time sea level monitoring using GNSS reflectometry. GPS Solut. https://doi.org10.1007/s10291-022-01382-5
McCreight JL, Small EE, Larson KM (2014) Snow depth, density, and SWE estimates derived from GPS reflection data: validation in the western U.S. Water Resourc Res. https://doi.org/10.1002/2014WR015561
Nievinski FG, Larson KM (2014) Inverse modeling of GPS Multipath for Snow depth estimation, part II: application and validation. IEEE Trans Geosci Rem Sens. https://doi.org/10.1109/TGRS.2013.2297688
Peng D, Hill EM, Li L, Switzer AD, Larson KM (2019) Applications of GNSS Interferometric Reflectometry for detecting storm surges. https://doi.org/10.1107/s10291-019-0838.y. GPS Solut
Purnell DJ, Gomez N, Minarik W, Porter D, Langston D (2021) Precise water level measurements using low-cost GNSS antenna arrays. Earth Surf Dyn. https://doi.org/10.5194/esurf-9-673-2021
Roesler CJ, Larson KM (2018) Software Tools for GNSS Interferometric Reflectometry. GPS Solut. https://doi.org/10.1007/s10291-018-0744-8
Romero I (2020) The Receiver Independent Exchange Format version 3.05, https://files.igs.org/pub/data/format/rinex305.pdf, accessed 28 Jan 2024
Small EE, Larson KM, Braun JJ (2010) Sensing vegetation growth with GPS reflections. Geophys Res Lett. https://doi.org/10.1029/2010GL042951
Small EE, Larson KM, Chew CC, Dong J, Oschner TE (2016) Validation of GPS-IR soil moisture retrievals: comparison of algorithms with different algorithms to remove vegetation effects. IEEE JSTARS. https://doi.org/10.1109/JSTARS.2015.2504527
Strandberg J, Hobiger T, Haas R (2016) Improving GNSS-R sea level determination through inverse modeling of SNR data. Radio Sci. https://doi.org/10.1002/2016RS006057
Strandberg J, Hobiger T, Haas R (2019) Real-time sea level monitoring using Kalman filtering of GNSS-R data. https://doi.org/10.1007/s10291-019-0851-1. GPS Solut
Acknowledgements
Gnssrefl is available at GitHub (https://github.com/kristinemlarson/gnssrefl). Contributors are also noted there. We acknowledge the Geoscience Australia and Earthscope data archives and the GFZ GNSS orbit group.
Funding
Open Access funding enabled and organized by Projekt DEAL. NASA grant 80NSSC20K1731 to the University of Colorado. DFG?SFB 1502/1?2022?project number: 450058266 to the University of Bonn
Open Access funding enabled and organized by Projekt DEAL.
Author information
Authors and Affiliations
Contributions
K.L. led the development of the gnssrefl software and wrote the paper.
Corresponding author
Ethics declarations
Ethics approval and consent to participate
Not applicable.
Consent for publication
The author consents.
Competing interests
The authors declare no competing interests.
Additional information
Publisher’s Note
Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.
The GPS Toolbox is a topical collection dedicated to highlighting algorithms and source code utilized by GNSS engineers and scientists. If you have a program or software package you would like to share with our readers, please submit a paper to the GPS Toolbox collection or email ngs.gps.toolbox@noaa.gov for more information. To download source code from this or any GPS Toolbox paper visit our website at http://geodesy.noaa.gov/gpstoolbox.
Electronic supplementary material
Below is the link to the electronic supplementary material.
Rights and permissions
Open Access This article is licensed under a Creative Commons Attribution 4.0 International License, which permits use, sharing, adaptation, distribution and reproduction in any medium or format, as long as you give appropriate credit to the original author(s) and the source, provide a link to the Creative Commons licence, and indicate if changes were made. The images or other third party material in this article are included in the article’s Creative Commons licence, unless indicated otherwise in a credit line to the material. If material is not included in the article’s Creative Commons licence and your intended use is not permitted by statutory regulation or exceeds the permitted use, you will need to obtain permission directly from the copyright holder. To view a copy of this licence, visit http://creativecommons.org/licenses/by/4.0/.
About this article
Cite this article
Larson, K.M. Gnssrefl: an open source software package in python for GNSS interferometric reflectometry applications. GPS Solut 28, 165 (2024). https://doi.org/10.1007/s10291-024-01694-8
Received:
Accepted:
Published:
DOI: https://doi.org/10.1007/s10291-024-01694-8