Exemple #1
0
        /// <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);
        }
Exemple #2
0
 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);
 }
Exemple #3
0
 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);
             }
         }
     }
 }
Exemple #4
0
        /// <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);
        }