示例#1
0
        ////////////////////////////////////////////////////////////////////////////
        //--------------------------------- REVISIONS ------------------------------
        // Date       Name                 Tracking #         Description
        // ---------  -------------------  -------------      ----------------------
        // 21JUN2009  James Shen                              Initial Creation
        ////////////////////////////////////////////////////////////////////////////

        /**
         * constructor.
         */
        public TabularData(BinaryReader reader, long offset, long size,
                           DataField[] fields, StringData stringData, StringIndex stringIndex)
            : base(reader, offset, size)
        {
            this._fields      = fields;
            this._stringData  = stringData;
            this._stringIndex = stringIndex;
            int numberOfField = fields.Length;

            _recordSize = 0;
            for (int i = 0; i < numberOfField; i++)
            {
                switch (fields[i].GetFieldType())
                {
                case DataField.TYPE_CHAR:    //char
                    _recordSize += 4;
                    break;

                case DataField.TYPE_INTEGER:    //int
                    _recordSize += 4;
                    break;

                case DataField.TYPE_SMALLINT:    //shot
                    _recordSize += 2;
                    break;

                case DataField.TYPE_FLOAT:    //float
                    _recordSize += 8;
                    break;

                case DataField.TYPE_DECIMAL:    //float
                    _recordSize += 8;
                    break;

                case DataField.TYPE_DATE:    //date
                    _recordSize += 4;
                    break;

                case DataField.TYPE_LOGICAL:    //bool
                    _recordSize += 1;
                    break;
                }
            }
        }
示例#2
0
        ////////////////////////////////////////////////////////////////////////////
        //--------------------------------- REVISIONS ------------------------------
        // Date       Name                 Tracking #         Description
        // ---------  -------------------  -------------      ----------------------
        // 21JUN2009  James Shen                              Initial Creation
        ////////////////////////////////////////////////////////////////////////////

        /**
         * Open the map file.
         */
        public void Open()
        {
            if (Header != null)
            {
                return;
            }

            Header       = new Header(_reader, 0, 0);
            _recordIndex = new RecordIndex(_reader, Header.IndexOffset,
                                           Header.IndexLength);
            _stringIndex = new StringIndex(_reader, Header.StringIndexOffset,
                                           Header.StringIndexLength);
            _stringData = new StringData(_reader, Header.StringDataOffset,
                                         Header.StringDataLength);
            _geoData = new GeoData(_reader, Header.GeoDataOffset,
                                   Header.GeoDataLength);
            TabularData = new TabularData(_reader, Header.TabularDataOffset,
                                          Header.TabularDataLength, Header.Fields,
                                          _stringData, _stringIndex);
            _rtreeIndex = new RTreeIndex(_reader, Header.RtreeIndexOffset,
                                         Header.RtreeIndexLength);
            _tree = new RTree.RTree(_rtreeIndex.File);
        }