goGPS-Project/goGPS_Java

Partial Rinex files

Opened this issue · 5 comments

Some daily Rinex files, especially the ones from NASA (see below), are gradually updated and it's a problem when we cache the file, as goGPS won't retry to download a partial file if it's already been cached.
I'm looking for ways to catch this situation and force a reload

public final static String NASA_NAVIGATION_DAILY = "ftp://cddis.gsfc.nasa.gov/pub/gps/data/daily/${yyyy}/${ddd}/${yy}n/brdc${ddd}0.${yy}n.Z";

We could request just the file size from FTP, then start a new download only if the file size of the remote file is larger than that of the local file (?)

That's an idea, although it would still require the slow process of opening an FTP connection, changing directory etc. I wonder whether Rinex files are always the same size, or above a certain size

Another little issue with that, is that we request Rinex files for each satellite from an observation set, while it would be more efficient to do it once per set, based on refTime. Therefore it'd be easier to work out what Rinex observation file is problematic, if we keep track of it while at the moment is buried down a long call chain:
SatellitePostion.getGpsSatPosition()->
RinexNavigation.findEph()->
RinexNavigation.getNRPByTimeStamp()

It's hard to notice that because files are cached. When an Ephmeris is not found though, we keep bombarding the server with requests

I completely agree with you... are you going to work on that, or should I implement it (as soon as I have time)?

I'm happy to do it, in fact I've already made progress on our branch https://github.com/Sirtrack/goGPS/commits/snapshotGPS

I've got so many changes I'd like to merge but I need to break them down and send individual pull requests for you to review.
Eventually, I'd really love to simplify the file ReceiverPosition, that's where the core of the processing is and there's quite a lot of redundancy, hard to maintain.
Also, I've done some work that could improve the standalone GUI if anybody is still interested. For example I've found a way to build a win32 installer.