// 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. //