Ejemplo n.º 1
0
        public void ReadRecords(IProgressTracker tracker)
        {
            lock (_fsMainFile)
            {
                if (_isLoaded)
                {
                    return;
                }
                try
                {
                    _dbfReader    = new DbaseReader(_dbffile);
                    _featureCount = 0;
                    _features     = new List <Feature>();
                    while (_fsMainFile.Position < _fileLength)
                    {
                        //Record header
                        int oid         = ToLocalEndian.ToInt32FromBig(_brMainFile.ReadBytes(4));
                        int contentSize = ToLocalEndian.ToInt32FromBig(_brMainFile.ReadBytes(4));//16bit 字为单位
                        //if (contentSize < 0)
                        //    Console.WriteLine("");
                        byte[] contentBytes = _brMainFile.ReadBytes(contentSize * 2);
                        object obj          = BytesToFeature(contentBytes, oid);
                        _features.Add(obj as Feature);
                        //
                        _featureCount++;
                    }

                    if (_argOfLeveling != null && _argOfLeveling.Enabled && _shapeType == enumShapeType.Point)
                    {
                        //int bTime = Environment.TickCount;
                        using (LevelAdjuster set = new LevelAdjuster())
                        {
                            set.BeginLevel = _argOfLeveling.BeginLevel;
                            set.GridSize   = _argOfLeveling.GridSize;
                            set.Features   = _features.ToArray();
                            set.Do();
                        }
                        //int eTime = Environment.TickCount - bTime;
                    }
                }
                catch
                {
                    throw;
                }
                finally
                {
                    _isLoaded = true;
                }
            }
        }
Ejemplo n.º 2
0
 public void FetchFeatures(Action <Feature> action)
 {
     using (_dbfReader = new DbaseReader(_dbffile))
     {
         _fsMainFile.Seek(_fileHeaderSize, SeekOrigin.Begin);
         while (_fsMainFile.Position < _fileLength)
         {
             int    oid          = ToLocalEndian.ToInt32FromBig(_brMainFile.ReadBytes(4));
             int    contentSize  = ToLocalEndian.ToInt32FromBig(_brMainFile.ReadBytes(4));//16bit 字为单位
             byte[] contentBytes = _brMainFile.ReadBytes(contentSize * 2);
             object obj          = BytesToFeature(contentBytes, oid);
             action(obj as Feature);
         }
     }
 }
Ejemplo n.º 3
0
 private Feature ReadFirstFromFile()
 {
     using (_dbfReader = new DbaseReader(_dbffile))
     {
         _fsMainFile.Seek(_fileHeaderSize, SeekOrigin.Begin);
         while (_fsMainFile.Position < _fileLength)
         {
             int    oid          = ToLocalEndian.ToInt32FromBig(_brMainFile.ReadBytes(4));
             int    contentSize  = ToLocalEndian.ToInt32FromBig(_brMainFile.ReadBytes(4));//16bit 字为单位
             byte[] contentBytes = _brMainFile.ReadBytes(contentSize * 2);
             object obj          = BytesToFeature(contentBytes, oid);
             return(obj as Feature);
         }
         return(null);
     }
 }
Ejemplo n.º 4
0
 public Feature[] FetchFeatures()
 {
     using (_dbfReader = new DbaseReader(_dbffile))
     {
         _fsMainFile.Seek(_fileHeaderSize, SeekOrigin.Begin);
         List <Feature> retFeatures = new List <Feature>();
         while (_fsMainFile.Position < _fileLength)
         {
             int    oid          = ToLocalEndian.ToInt32FromBig(_brMainFile.ReadBytes(4));
             int    contentSize  = ToLocalEndian.ToInt32FromBig(_brMainFile.ReadBytes(4));//16bit 字为单位
             byte[] contentBytes = _brMainFile.ReadBytes(contentSize * 2);
             object obj          = BytesToFeature(contentBytes, oid);
             retFeatures.Add(obj as Feature);
         }
         return(retFeatures.Count > 0 ? retFeatures.ToArray() : null);
     }
 }