WKTReader.h

00001 /**********************************************************************
00002  *
00003  * GEOS - Geometry Engine Open Source
00004  * http://geos.osgeo.org
00005  *
00006  * Copyright (C) 2005-2006 Refractions Research Inc.
00007  * Copyright (C) 2001-2002 Vivid Solutions Inc.
00008  *
00009  * This is free software; you can redistribute and/or modify it under
00010  * the terms of the GNU Lesser General Public Licence as published
00011  * by the Free Software Foundation. 
00012  * See the COPYING file for more information.
00013  *
00014  **********************************************************************
00015  *
00016  * Last port: io/WKTReader.java rev. 1.1 (JTS-1.7)
00017  *
00018  **********************************************************************/
00019 
00020 #ifndef GEOS_IO_WKTREADER_H
00021 #define GEOS_IO_WKTREADER_H
00022 
00023 #include <geos/export.h>
00024 
00025 #include <geos/geom/GeometryFactory.h>
00026 #include <geos/geom/CoordinateSequence.h>
00027 #include <string>
00028 
00029 // Forward declarations
00030 namespace geos {
00031         namespace io {
00032                 class StringTokenizer;
00033         }
00034         namespace geom {
00035 
00036                 class Coordinate;
00037                 class Geometry;
00038                 class GeometryCollection;
00039                 class Point;
00040                 class LineString;
00041                 class LinearRing;
00042                 class Polygon;
00043                 class MultiPoint;
00044                 class MultiLineString;
00045                 class MultiPolygon;
00046                 class PrecisionModel;
00047         } 
00048 } 
00049 
00050 
00051 namespace geos {
00052 namespace io {
00053 
00058 class GEOS_DLL WKTReader {
00059 public:
00060         //WKTReader();
00061 
00070         WKTReader(const geom::GeometryFactory &gf);
00071 
00073         WKTReader(const geom::GeometryFactory *gf);
00074 
00079         WKTReader();
00080 
00081         ~WKTReader();
00082 
00084         geom::Geometry* read(const std::string &wellKnownText);
00085 
00086 //      Geometry* read(Reader& reader); //Not implemented yet
00087 
00088 protected:
00089         geom::CoordinateSequence* getCoordinates(io::StringTokenizer *tokenizer);
00090         double getNextNumber(io::StringTokenizer *tokenizer);
00091         std::string getNextEmptyOrOpener(io::StringTokenizer *tokenizer);
00092         std::string getNextCloserOrComma(io::StringTokenizer *tokenizer);
00093         std::string getNextCloser(io::StringTokenizer *tokenizer);
00094         std::string getNextWord(io::StringTokenizer *tokenizer);
00095         geom::Geometry* readGeometryTaggedText(io::StringTokenizer *tokenizer);
00096         geom::Point* readPointText(io::StringTokenizer *tokenizer);
00097         geom::LineString* readLineStringText(io::StringTokenizer *tokenizer);
00098         geom::LinearRing* readLinearRingText(io::StringTokenizer *tokenizer);
00099         geom::MultiPoint* readMultiPointText(io::StringTokenizer *tokenizer);
00100         geom::Polygon* readPolygonText(io::StringTokenizer *tokenizer);
00101         geom::MultiLineString* readMultiLineStringText(io::StringTokenizer *tokenizer);
00102         geom::MultiPolygon* readMultiPolygonText(io::StringTokenizer *tokenizer);
00103         geom::GeometryCollection* readGeometryCollectionText(io::StringTokenizer *tokenizer);
00104 private:
00105         const geom::GeometryFactory *geometryFactory;
00106         const geom::PrecisionModel *precisionModel;
00107 
00108         void getPreciseCoordinate(io::StringTokenizer *tokenizer, geom::Coordinate&, std::size_t &dim );
00109 
00110         bool isNumberNext(io::StringTokenizer *tokenizer);
00111 };
00112 
00113 } // namespace io
00114 } // namespace geos
00115 
00116 #ifdef GEOS_INLINE
00117 # include <geos/io/WKTReader.inl>
00118 #endif
00119 
00120 #endif // #ifndef GEOS_IO_WKTREADER_H

Generated on 23 Sep 2013 for GEOS by  doxygen 1.4.7