/// <summary> /// 获取单条数据的某一角度信息 /// </summary> /// <param name="angleInfo"></param> /// <param name="mark">角度标志位,0:太阳天顶角;1:卫星天顶角;2:相对方位角</param> /// <returns></returns> private Int16[] ExtractAngleInfo(byte[] angleInfo, int mark) { byte[] angle = new byte[2]; Int16[] angles = new Int16[51]; int pt = 0; int maxi = 2 * (mark + 1); for (int j = 0; j < 51; j++) { for (int i = (mark * 2); i < maxi; i++) { angle[pt++] = angleInfo[i + 6 * j]; } pt = 0; if (_isBigEndian) { angles[j] = ToLocalEndian_Core.ToInt16FromBig(angle); } else { angles[j] = ToLocalEndian_Core.ToInt16FromLittle(angle); } } return(angles); }
public bool IsSupport(string fname, byte[] header1024, Dictionary <string, string> datasetNames) { if (ToLocalEndian_Core.ToInt16FromBig(new byte[] { header1024[10], header1024[11] }) != 22016 && ToLocalEndian_Core.ToInt16FromLittle(new byte[] { header1024[10], header1024[11] }) != 22016) { return(false); } return(true); }
private bool IsBigEndian(IRasterDataProvider rasterDataProvider) { using (FileStream fs = new FileStream(rasterDataProvider.fileName, FileMode.Open, FileAccess.Read)) { using (BinaryReader br = new BinaryReader(fs)) { byte[] buffer = new byte[2]; fs.Seek(10, SeekOrigin.Begin); buffer = br.ReadBytes(2); br.Close(); fs.Close(); if (ToLocalEndian_Core.ToInt16FromBig(buffer) == 22016) { return(true); } else { return(false); } } } }
/// <summary> /// 获取单条数据记录的纬度信息 /// </summary> private double[] ExtractLatInfo(byte[] geoInfo) { byte[] lat = new byte[4]; double[] lats = new double[51]; int pt = 0; for (int j = 0; j < 51; j++) { for (int i = 0; i < 4; i++) { lat[pt++] = geoInfo[i + 8 * j]; } pt = 0; if (_isBigEndian) { lats[j] = (float)(ToLocalEndian_Core.ToInt32FromBig(lat) / divisor); } else { lats[j] = (float)(ToLocalEndian_Core.ToInt32FromLittle(lat) / divisor); } } return(lats); }