public override IRasterBand[] GetDefaultBands() { if (_matchedBandProviderDef == null || _matchedBandProviderDef.DefaultBandDatasetDefs == null || _matchedBandProviderDef.DefaultBandDatasetDefs.Count == 0) { return(null); } IBandNameParser bandNameParser = new DefaultBandNameParser(); using (Hdf5Operator hdf = new Hdf5Operator(_provider.fileName)) { List <IRasterBand> rasterBands = new List <IRasterBand>(); foreach (DefaultBandDatasetDef dsdef in _matchedBandProviderDef.DefaultBandDatasetDefs) { string bandNos = hdf.GetAttributeValue(dsdef.Name, dsdef.BandNoAttribute); BandName[] bNames = bandNameParser.Parse(bandNos); string datasetName = dsdef.Name; string dsFullPath = GetDatasetFullPath(datasetName); IRasterBand[] rBands = GetBandsByFullName(dsFullPath); rasterBands.AddRange(rBands); if (bNames == null || bNames.Length != rBands.Length) { continue; } else { for (int i = 0; i < rBands.Length; i++) { rBands[i].Description = bNames[i].Name; rBands[i].BandNo = bNames[i].Index; } } } rasterBands.Sort(); return(rasterBands.Count > 0 ? rasterBands.ToArray() : null); } }
private void TryGetBandProviderDefinition(string fname, Dictionary <string, string> subdatasets) { List <string> datasetNames = null; if (subdatasets != null) { datasetNames = GetDatasetNames(subdatasets); } BandProviderDef[] bandProviderDefs = null; string configfile = Path.Combine(Path.GetDirectoryName(this.GetType().Assembly.Location), "GeoDo.RSS.DF.GDAL.H5BandPrd.xml"); using (H5BandProviderXmlParser xml = new H5BandProviderXmlParser(configfile)) { bandProviderDefs = xml.GetBandProviderDefs(); } if (bandProviderDefs == null) { return; } string orbitDirection = ""; string dayornight = ""; using (Hdf5Operator hdf5 = new Hdf5Operator(fname)) { foreach (BandProviderDef prddef in bandProviderDefs) { bool isMatched = true; if (datasetNames != null) { foreach (DefaultBandDatasetDef bandDef in prddef.DefaultBandDatasetDefs) { if (!datasetNames.Contains(bandDef.Name)) { isMatched = false; break; } } if (!isMatched) { continue; } } foreach (IdentifyAttDef id in prddef.IdentifyAttDefs) { string attvalue = hdf5.GetAttributeValue(id.Name); if (attvalue != id.Value) { isMatched = false; break; } } if (isMatched) { _matchedBandProviderDef = prddef; break; } } orbitDirection = hdf5.GetAttributeValue("Orbit Direction"); dayornight = hdf5.GetAttributeValue("Day Or Night Flag"); } if (_matchedBandProviderDef != null) { _dataIdentify = new DataIdentify(_matchedBandProviderDef.Satellite, _matchedBandProviderDef.Sensor); _dataIdentify.IsOrbit = true; TryGetOrbitDirection(orbitDirection); TryGetDayOrNight(dayornight); } }