GEOS  3.4.2
MultiPoint.h
00001 /**********************************************************************
00002  *
00003  * GEOS - Geometry Engine Open Source
00004  * http://geos.osgeo.org
00005  *
00006  * Copyright (C) 2011 Sandro Santilli <strk@keybit.net>
00007  * Copyright (C) 2001-2002 Vivid Solutions Inc.
00008  * Copyright (C) 2005 2006 Refractions Research Inc.
00009  *
00010  * This is free software; you can redistribute and/or modify it under
00011  * the terms of the GNU Lesser General Public Licence as published
00012  * by the Free Software Foundation. 
00013  * See the COPYING file for more information.
00014  *
00015  **********************************************************************
00016  *
00017  * Last port: geom/MultiPoint.java r320 (JTS-1.12)
00018  *
00019  **********************************************************************/
00020 
00021 #ifndef GEOS_GEOS_MULTIPOINT_H
00022 #define GEOS_GEOS_MULTIPOINT_H
00023 
00024 #include <geos/export.h>
00025 #include <geos/platform.h>
00026 #include <geos/geom/GeometryCollection.h> // for inheritance
00027 #include <geos/geom/Puntal.h> // for inheritance
00028 #include <geos/geom/Dimension.h> // for Dimension::DimensionType
00029 
00030 #include <geos/inline.h>
00031 
00032 #include <string>
00033 #include <vector>
00034 
00035 namespace geos {
00036         namespace geom { // geos::geom
00037                 class Coordinate;
00038                 class CoordinateArraySequence;
00039         }
00040 }
00041 
00042 namespace geos {
00043 namespace geom { // geos::geom
00044 
00045 #ifdef _MSC_VER
00046 #pragma warning(push)
00047 #pragma warning(disable:4250) // T1 inherits T2 via dominance
00048 #endif
00049 
00055 class GEOS_DLL MultiPoint: public GeometryCollection, public Puntal
00056 {
00057 
00058 public:
00059 
00060         friend class GeometryFactory;
00061 
00062         virtual ~MultiPoint();
00063 
00065         Dimension::DimensionType getDimension() const;
00066 
00068         int getBoundaryDimension() const;
00069 
00079         Geometry* getBoundary() const;
00080 
00081         std::string getGeometryType() const;
00082 
00083         virtual GeometryTypeId getGeometryTypeId() const;
00084 
00085         bool equalsExact(const Geometry *other, double tolerance=0) const;
00086 
00087         Geometry *clone() const { return new MultiPoint(*this); }
00088 
00089 protected:
00090 
00109         MultiPoint(std::vector<Geometry *> *newPoints, const GeometryFactory *newFactory);
00110 
00111         MultiPoint(const MultiPoint &mp): Geometry(mp), GeometryCollection(mp) {}
00112 
00113         const Coordinate* getCoordinateN(int n) const;
00114 };
00115 
00116 #ifdef _MSC_VER
00117 #pragma warning(pop)
00118 #endif
00119 
00120 } // namespace geos::geom
00121 } // namespace geos
00122 
00123 #endif // ndef GEOS_GEOS_MULTIPOINT_H