- Main Page
- Related Pages
- Modules
- Classes
- Files

# SpatialContextReader.h

Go to the documentation of this file.

    00001 #ifndef FDO_XML_SPATIALCONTEXTREADER_H_
    00002 #define FDO_XML_SPATIALCONTEXTREADER_H_
    00003
    00004 //
    00005 // Copyright (C) 2004-2006  Autodesk, Inc.
    00006 //
    00007 // This library is free software; you can redistribute it and/or
    00008 // modify it under the terms of version 2.1 of the GNU Lesser
    00009 // General Public License as published by the Free Software Foundation.
    00010 //
    00011 // This library is distributed in the hope that it will be useful,
    00012 // but WITHOUT ANY WARRANTY; without even the implied warranty of
    00013 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    00014 // Lesser General Public License for more details.
    00015 //
    00016 // You should have received a copy of the GNU Lesser General Public
    00017 // License along with this library; if not, write to the Free Software
    00018 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
    00019 //
    00020
    00021 #ifdef _WIN32
    00022 #pragma once
    00023 #endif
    00024
    00025 #include <FdoStd.h>
    00026 #include <Fdo/Commands/SpatialContext/SpatialContextExtentType.h>
    00027 #include <Fdo/Commands/SpatialContext/ISpatialContextReader.h>
    00028 #include <Fdo/Xml/SpatialContextFlags.h>
    00029
    00030 class FdoXmlSCReadHandler;
    00031
    00032 /// \brief
    00033 /// FdoXmlSpatialContextReader reads Spatial Contexts from an XML
    00034 /// document. Unlike other XML Readers, the reading is done procedurally,
    00035 /// rather than through events. FdoXmlSpatialContextReader implements
    00036 /// FdoISpatialContextReader to provide the functions for retrieving the
    00037 /// spatial contexts that were read.
    00038 class FdoXmlSpatialContextReader :
    00039     public FdoISpatialContextReader,
    00040     public FdoXmlSaxHandler
    00041 {
    00042 public:
    00043
    00044     /// \brief
    00045     /// creates a Spatial Context Reader.
    00046     ///
    00047     /// \param reader
    00048     /// Input XML document reader. Specifies the XML
    00049     /// document that the Spatial Contexts will be read from.
    00050     /// \param flags
    00051     /// Input options for controlling the
    00052     /// deserializing of the Spatial Contexts. If NULL then the
    00053     /// default flags are used.
    00054     ///
    00055     /// \return
    00056     /// Returns FdoXmlSpatialContextReader
    00057     ///
    00058     FDO_API static FdoXmlSpatialContextReader * Create(
    00059         FdoXmlReader*               reader,
    00060         FdoXmlSpatialContextFlags*  flags = NULL
    00061     );
    00062
    00063     /// \brief
    00064     /// Gets the Xml document reader that was passed to this object.
    00065     ///
    00066     /// \return
    00067     /// Returns the XML document reader.
    00068     ///
    00069     FDO_API FdoXmlReader* GetXmlReader();
    00070
    00071 // FdoISpatialContextReader implementation
    00072
    00073     /// \brief
    00074     /// Gets the name of the spatial context currently being read.
    00075     ///
    00076     /// \return
    00077     /// Returns the name of the spatial context.
    00078     ///
    00079     FDO_API virtual FdoString* GetName();
    00080
    00081     /// \brief
    00082     /// Gets the description of the spatial context currently being read.
    00083     ///
    00084     /// \return
    00085     /// Returns the description of the spatial context.
    00086     ///
    00087     FDO_API virtual FdoString* GetDescription();
    00088
    00089     /// \brief
    00090     /// Gets the name of the coordinate system of the spatial context currently
    00091     /// being read. If the result is a null or empty string, the coordinate system is
    00092     /// unknown to the spatial context.
    00093     ///
    00094     /// \return
    00095     /// Returns the coordinate system name of the spatial context.
    00096     ///
    00097     FDO_API virtual FdoString* GetCoordinateSystem();
    00098
    00099     /// \brief
    00100     /// Gets the coordinate system in OpenGIS SRS WKT format of the spatial context currently
    00101     /// being read. If the result is an empty string, the coordinate system WKT description is
    00102     /// not available.
    00103     ///
    00104     /// \return
    00105     /// Returns the coordinate system description in WKT of of the spatial context.
    00106     ///
    00107     FDO_API virtual FdoString* GetCoordinateSystemWkt();
    00108
    00109     /// \brief
    00110     /// Gets the extent type of the spatial context currently being read.
    00111     ///
    00112     /// \return
    00113     /// Returns the extent type.
    00114     ///
    00115     FDO_API virtual FdoSpatialContextExtentType GetExtentType();
    00116
    00117     /// \brief
    00118     /// Gets the extent of the spatial context currently being read as a byte
    00119     /// array in FGF format.
    00120     ///
    00121     /// \return
    00122     /// Returns the extent as a byte array in FGF format.
    00123     ///
    00124     FDO_API virtual FdoByteArray* GetExtent();
    00125
    00126     /// \brief
    00127     /// Gets the tolerance value for XY ordinates of the spatial context
    00128     /// currently being read. Tolerances are used in some geometric tests,
    00129     /// mostly for equality between coordinates.  This occurs frequently in spatial
    00130     /// queries, especially with "on boundary" or "just touching" conditions.
    00131     /// It is also an objective amount that can be used when formulating step
    00132     /// distances for parametric curve interpolation.
    00133     ///
    00134     /// \return
    00135     /// Returns the tolerance
    00136     ///
    00137     FDO_API virtual const double GetXYTolerance();
    00138
    00139     /// \brief
    00140     /// Gets the tolerance value for Z ordinates of the spatial context
    00141     /// currently being read. Tolerances are used in some geometric tests,
    00142     /// mostly for equality between coordinates.  This occurs a frequently in spatial
    00143     /// queries, especially with "on boundary" or "just touching" conditions.
    00144     /// It is also an objective amount that can be used when formulating step
    00145     /// distances for parametric curve interpolation.
    00146     ///
    00147     /// \return
    00148     /// Returns the tolerance
    00149     ///
    00150     FDO_API virtual const double GetZTolerance();
    00151
    00152     /// \brief
    00153     /// Returns true if the spatial context currently being read is the active
    00154     /// spatial context.
    00155     ///
    00156     /// \return
    00157     /// Returns true if the current spatial context is the active one.
    00158     ///
    00159     FDO_API virtual const bool IsActive();
    00160
    00161     /// \brief
    00162     /// Advances the reader to the next item. The default position of the reader
    00163     /// is prior to the first item. Thus, you must call ReadNext to begin
    00164     /// accessing any data.
    00165     ///
    00166     /// \return
    00167     /// Returns true if there is a next item.
    00168     ///
    00169     FDO_API virtual bool ReadNext();
    00170
    00171     FDO_API virtual FdoXmlSaxHandler* XmlStartDocument(FdoXmlSaxContext* saxContext);
    00172
    00173     /// The following callbacks catch the start element and end element
    00174     /// SAX events.
    00175     FDO_API virtual FdoXmlSaxHandler* XmlStartElement(
    00176         FdoXmlSaxContext* saxContext,
    00177         FdoString* uri,
    00178         FdoString* name,
    00179         FdoString* qname,
    00180         FdoXmlAttributeCollection* atts
    00181     );
    00182
    00183     FDO_API virtual FdoBoolean XmlEndElement(
    00184         FdoXmlSaxContext* saxContext,
    00185         FdoString* uri,
    00186         FdoString* name,
    00187         FdoString* qname
    00188     );
    00189
    00190
    00191 protected:
    00192     /// default constructor to keep linux from complaining.
    00193     FdoXmlSpatialContextReader() {}
    00194
    00195     FDO_API FdoXmlSpatialContextReader(
    00196         FdoXmlReader* reader,
    00197         FdoXmlSpatialContextFlags* flags
    00198     );
    00199     FDO_API virtual ~FdoXmlSpatialContextReader();
    00200
    00201     /// Closes the FdoXmlSpatialContextReader object, freeing any resources it may
    00202     /// be holding.
    00203     FDO_API virtual void Dispose();
    00204
    00205     /// Throws an exception if a getter is called but there is no currently read Spatial Context.
    00206     void ThrowOnNotRead( FdoString* function );
    00207
    00208 private:
    00209
    00210     FdoXmlReaderP               mXmlReader;
    00211     FdoXmlSpatialContextFlagsP  mXmlFlags;
    00212
    00213     FdoBoolean              mIsActiveSC;
    00214     FdoPtr<FdoByteArray>    mExtent;
    00215
    00216     FdoXmlSCReadHandler*     mSCHandler;
    00217 };
    00218
    00219 /// \ingroup (typedefs)
    00220 /// \brief
    00221 /// FdoXmlSpatialContextReaderP is a FdoPtr on FdoXmlSpatialContextReader, provided for convenience.
    00222 typedef FdoPtr<FdoXmlSpatialContextReader> FdoXmlSpatialContextReaderP;
    00223
    00224
    00225 #endif
    00226
    00227

Please send us your comment about this page