API to find Multi-GNSS RINEX3 Files
This API searches at archives for files that look like this:
NABG00NOR_S_20220130000_01D_30S_MO.crx.gz
Meaning:
- 9 character station name followed by _S_ or _R_
- four character year and three character day of year
- 0000_01D_ meaning it is a one day file that starts at hour 00 and minute 00
- 30S is for 30 second sampling
- MO which means mixed observables (I think)
- .crx.gz means it is gzipped Hatanaka format.
- Note that this filename is case sensitive
WARNING: This API no longer supports searching for files at UNAVCO.
Parameter | Description | Default |
---|---|---|
station | 9 character station name | user must supply |
year | 4 character year | user must supply |
doy | day of year | user must supply |
archive | cddis, bkg, bev, epn,ga,gfz,nrcan,sonel | checks them all |
samplerate | receiver sample rate (sec) | default is 30. |
stream | data source (R or S) | default is R. automatically checks for the other |
Example: for the station at0100usa, the year 2022, day of year 13:
https://gnss-reflections.org/api-rinex3?station=warn00deu&year=2022&doy=13&archive=bkg
produces
{ "archive_requested": "bkg", "doy": 13, "help": "use curl -OJ and make sure you have double quotes on the address.", "requestStatus": "A nominally compliant request.", "station": "warn00deu", "urlAddress": "https://igs.bkg.bund.de/root_ftp/IGS/obs/2022/013/WARN00DEU_R_20220130000_01D_30S_MO.crx.gz", "year": 2022 } ]
curl -OJ to download
Example: for the station mchl00aus, the year 2022, day of year 13:
https://gnss-reflections.org/api-rinex3?station=mchl00aus&year=2022&doy=13&archive=all
produces:
{ "archive_requested": "all", "doy": 13, "help": "use curl -u anonymous:EmailAddress -O --ftp-ssl and make sure you have double quotes on the url.", "requestStatus": "A nominally compliant request.", "station": "mchl00aus", "urlAddress": "ftp://gdc.cddis.eosdis.nasa.gov/gnss/data/daily/2022/013/22d/MCHL00AUS_R_20220130000_01D_30S_MO.crx.gz", "year": 2022 }
To download the file:
curl -u anonymous:youremail@idunno.com -O --ftp-ssl "ftp://gdc.cddis.eosdis.nasa.gov/gnss/data/daily/2022/013/22d/MCHL00AUS_R_20220130000_01D_30S_MO.crx.gz"
If you had specified GA:
https://gnss-reflections.org/api-rinex3?station=mchl00aus&year=2022&doy=13&archive=ga
{ "archive_requested": "ga", "doy": 13, "help": "use curl -OJ and make sure you have double quotes on the url.", "requestStatus": "A nominally compliant request.", "station": "mchl00aus", "urlAddress": "https://geodesy-archive-permanent-storage-prod.s3.ap-southeast-2.amazonaws.com/....", "year": 2022 }
To download the file:
curl -OJ "https://geodesy-archive-permanent-storage-prod.s3.ap-southeast-2.amazonaws.com/...."
Example: for the station nabg00nor, the year 2022, day of year 13:
https://gnss-reflections.org/api-rinex3?station=nabg00nor&year=2022&doy=13&archive=bev
{ "archive_requested": "bev", "doy": 13, "help": "use curl -OJ and make sure you have double quotes on the url.", "requestStatus": "A nominally compliant request.", "station": "nabg00nor", "urlAddress": "https://gnss.bev.gv.at/at.gv.bev.dc/data/obs/2022/013/NABG00NOR_S_20220130000_01D_30S_MO.crx.gz", "year": 2022 }Notice how the character after the station name is S instead of R?
Example for non-existent file:
https://gnss-reflections.org/api-rinex3?doy=8&station=xxxx00usa&year=2022&archive=cddis
{ "archive_requested": "cddis", "doy": 13, "requestStatus": "A nominally compliant request.", "station": "xxxx00usa", "urlAddress": "File not found.", "year": 2022 }
Questions/Comments:
- Why only these archives? These are the ones I know have a large number of archived Rinex 3 files. If You know of others, let me know their url and their directory structure.
- Why is the curl command for CDDIS different? They use different security protocols than the other archives.
- Why doesn't your API give me the RINEX 3 files? I thought about it - and decided against it. My python gnssrefl code does do that.
- Why don't you look for high-rate RINEX 3 files? That is a much bigger ask.
- Why the 15 sec value for UNAVCO? I currently have that hardwired - but will change it if UNAVCO has files that are 30 sec.
- Why don't you look for RINEX 2 files? No comment.
- Why don't you have a backend so I can submit values from a browser? This API should
be run from the command line. At least that is my thinking.
Some archives already have beautiful browser-supported tools for finding files - I
am not trying to duplicate what already exists.
- I check the EUREF and the IGS folder at BKG.
- If you have a plain text list of 3 character station country codes, I could use that to check for station name compliance. Speaking as someone who hasn't memorized them ...
- I have a simple bash script that will query the API and apply the output (i.e. it will download the file for you). Let me know if you would like to test it out.
Kristine M. Larson, February 2022