Exemplo n.º 1
0
        private unsafe void FillBand()
        {
            float[][] bandValues = new float[1][];
            bandValues[0] = new float[_width * _height];
            IArrayRasterDataProvider dataProvider = new ArrayRasterDataProvider <float>(
                _fileName, bandValues, _width, _height, _coordEnvelope, _spatialRef);
            float val;
            int   row  = _height - 1;
            float res  = _resolutionX;//or _resolutionY
            float minX = (float)_coordEnvelope.MinX;
            float maxY = (float)_coordEnvelope.MaxY;

            _fs       = new FileStream(_fileName, FileMode.Open, FileAccess.Read);
            _stReader = new StreamReader(_fs, Encoding.Default);
            fixed(float *ptr0 = bandValues[0])
            {
                float *ptr = ptr0;

                while (!_stReader.EndOfStream)
                {
                    string   sLine = _stReader.ReadLine();
                    string[] parts = sLine.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                    for (int i = 0; i < parts.Length; i++)
                    {
                        float.TryParse(parts[i], out val);
                        ptr = ptr0 + row * _width + i;
                        *ptr = val;
                    }
                    row--;
                }
            }

            _rasterBands.Add(dataProvider.GetRasterBand(1));
        }
Exemplo n.º 2
0
        private unsafe void FillBand()
        {
            float[][] bandValues = new float[1][];
            bandValues[0] = new float[_width * _height];
            IArrayRasterDataProvider dataProvider = new ArrayRasterDataProvider <float>(
                _fileName, bandValues, _width, _height, _coordEnvelope, _spatialRef);
            float lon, lat, val;
            int   col = 0, row = 0;
            float res  = _resolutionX;//or _resolutionY
            float minX = (float)_coordEnvelope.MinX;
            float maxY = (float)_coordEnvelope.MaxY;

            _fs       = new FileStream(_fileName, FileMode.Open, FileAccess.Read);
            _stReader = new StreamReader(_fs, Encoding.ASCII);
            fixed(float *ptr0 = bandValues[0])
            {
                float *ptr = ptr0;

                while (!_stReader.EndOfStream)
                {
                    string   sLine = _stReader.ReadLine();
                    string[] parts = sLine.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                    float.TryParse(parts[0], out lon);
                    float.TryParse(parts[1], out lat);
                    float.TryParse(parts[2], out val);
                    lon -= 180;
                    col  = (int)((lon - minX) / _resolutionX);
                    row  = (int)((maxY - lat) / _resolutionY);
                    ptr  = ptr0 + row * _width + col;
                    *ptr = val;
                }
            }

            _rasterBands.Add(dataProvider.GetRasterBand(1));
        }