/// <summary> /// Retrieve the required Elevation Files for the set of co-ordinates and add any new files to the cache /// </summary> /// <param name="elevationFiles"></param> private ElevationFile[] GetOrCreateRequiredFilesInCache(DecimalGeoCoordinate[] coordinates) { var filenames = ParseFilenamesFromCoordinates(coordinates); var requiredFiles = new List <ElevationFile>(); foreach (var filename in filenames) { ElevationFile newFile = null; if (!_cache.TryGetValue(filename, out newFile)) { var filePath = Path.Combine(_elevationDataPath, filename); if (!System.IO.File.Exists(filePath)) { throw new FileNotFoundException($"Dataset '{filename}' is not available."); } newFile = _elevationFileReader.LoadFile(filePath); _cache.Set(filename, newFile); } requiredFiles.Add(newFile); } return(requiredFiles.ToArray()); }
/// <summary> /// Retrieve the required Elevation Files for the set of co-ordinates and add any new files to the cache /// </summary> /// <param name="coordinates"></param> private ElevationFile[] GetOrCreateRequiredFilesInCache(DecimalGeoCoordinate[] coordinates) { var filenames = ParseFilenamesFromCoordinates(coordinates); var requiredFiles = new List <ElevationFile>(); foreach (var filename in filenames) { ElevationFile newFile = null; if (!_cache.TryGetValue(filename, out newFile)) { var filePath = Path.Combine(_elevationDataPath, filename); if (!System.IO.File.Exists(filePath)) { throw new FileNotFoundException($"Dataset '{filename}' is not available."); } newFile = _elevationFileReader.LoadFile(filePath); // TODO : Add to config / update to a sensible option. var cacheOptions = new MemoryCacheEntryOptions().SetSlidingExpiration(TimeSpan.FromMinutes(1)); _cache.Set(filename, newFile, cacheOptions); } requiredFiles.Add(newFile); } return(requiredFiles.ToArray()); }
/// <summary> /// Retrieve the elevation for the specified coordinate /// </summary> /// <param name="dataSetLocation"></param> /// <returns></returns> public int GetElevationAtCoordinate(DecimalGeoCoordinate coordinate) { if (coordinate == null) { throw new NullReferenceException("location is null"); } var index = ElevationFile.GetIndexAtCoordinate(coordinate); return(_data[index]); }
public ElevationTile(ElevationFile fileReference, short[] data) { ElevationFile = fileReference ?? throw new ArgumentNullException("fileReference"); _data = data ?? throw new ArgumentNullException("rawData"); }