-// names.cxx -- process shapefiles names
-//
-// Written by Curtis Olson, started February 1999.
-//
-// Copyright (C) 1999 Curtis L. Olson - curt@flightgear.org
-//
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-//
-// $Id$
-// (Log is kept at end of this file)
-
-#include <Include/compiler.h>
-
-#include STL_STRING
-
-#include "names.hxx"
-
-
-// return the type of the shapefile record
-AreaType get_area_type(GDBFile *dbf, int rec) {
- GDBFieldDesc *fdesc[128]; // 128 is an arbitrary number here
- GDBFValue *fields; //an array of field values
- char* dbf_rec; //a record containing all the fields
-
- // grab the meta-information for all the fields
- // this applies to all the records in the DBF file.
- // for ( int i = 0; i < dbf->numFields(); i++ ) {
- // fdesc[i] = dbf->getFieldDesc(i);
- // cout << i << ") " << fdesc[i]->name << endl;
- // }
-
- // this is the whole name record
- dbf_rec = dbf->getRecord( rec );
-
- // parse it into individual fields
- if ( dbf_rec ) {
- fields = dbf->recordDeform( dbf_rec );
- }
-
- string area = fields[4].str_v;
- // strip leading spaces
- while ( area[0] == ' ' ) {
- area = area.substr(1, area.length() - 1);
- }
- // strip trailing spaces
- while ( area[area.length() - 1] == ' ' ) {
- area = area.substr(0, area.length() - 1);
- }
- // strip other junk encountered
- while ( (int)area[area.length() - 1] == 9 ) {
- area = area.substr(0, area.length() - 1);
- }
-
- if ( area == "Swamp or Marsh" ) {
- return MarshArea;
- } else if ( area == "Bay Estuary or Ocean" ) {
- return OceanArea;
- } else if ( area == "Lake" ) {
- return LakeArea;
- } else if ( area == "Lake Dry" ) {
- return DryLakeArea;
- } else if ( area == "Lake Intermittent" ) {
- return IntLakeArea;
- } else if ( area == "Reservoir" ) {
- return ReservoirArea;
- } else if ( area == "Reservoir Intermittent" ) {
- return IntReservoirArea;
- } else if ( area == "Stream" ) {
- return StreamArea;
- } else if ( area == "Canal" ) {
- return CanalArea;
- } else if ( area == "Glacier" ) {
- return GlacierArea;
- } else if ( area == "Void Area" ) {
- return VoidArea;
- } else if ( area == "Null" ) {
- return NullArea;
- } else {
- cout << "unknown area = '" << area << "'" << endl;
- // cout << "area = " << area << endl;
- for ( int i = 0; i < area.length(); i++ ) {
- cout << i << ") " << (int)area[i] << endl;
- }
- return UnknownArea;
- }
-}
-
-
-// $Log$
-// Revision 1.1 1999/02/23 01:29:05 curt
-// Additional progress.
-//