00001 //
00002 // Copyright (C) 2004-2006 Autodesk, Inc.
00003 //
00004 // This library is free software; you can redistribute it and/or
00005 // modify it under the terms of version 2.1 of the GNU Lesser
00006 // General Public License as published by the Free Software Foundation.
00007 //
00008 // This library is distributed in the hope that it will be useful,
00009 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00010 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
00011 // Lesser General Public License for more details.
00012 //
00013 // You should have received a copy of the GNU Lesser General Public
00014 // License along with this library; if not, write to the Free Software
00015 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
00016 #ifndef ICREATESDFFILE_H
00017 #define ICREATESDFFILE_H
00018
00019 #include "FdoStd.h"
00020 #include "Fdo/Commands/ICommand.h"
00021
00022
00023 /// \brief
00024 /// This command creates a new SDF+ file with a specified location
00025 /// and file name and a given spatial coordinate system.
00026 class FdoICreateSDFFile : public FdoICommand
00027 {
00028 public:
00029
00030 /// \brief
00031 /// Sets the name of the SDF+ file being created.
00032 /// The name must be a fully qualified absolute path.
00033 ///
00034 /// \param name
00035 /// The fully qualified SDF+ file name.
00036 FDO_API virtual void SetFileName(FdoString* name) = 0;
00037
00038 /// \brief
00039 /// Gets the name of the SDF+ file being created.
00040 /// The name is a fully qualified absolute path.
00041 ///
00042 /// \return
00043 /// Returns the name of the SDF+ file.
00044 ///
00045 FDO_API virtual FdoString* GetFileName() = 0;
00046
00047 /// \brief
00048 /// Sets the name of the spatial context as a string.
00049 ///
00050 /// \param name
00051 /// Input the name of the spatial context.
00052 FDO_API virtual void SetSpatialContextName(FdoString* name) = 0;
00053
00054 /// \brief
00055 /// Gets the name of the coordinate system of the spatial context.
00056 /// If the result is a null or empty string, the coordinate system is
00057 /// unknown to the spatial context.
00058 ///
00059 /// \return
00060 /// Returns the coordinate system name of the spatial context.
00061 ///
00062 FDO_API virtual FdoString* GetSpatialContextName() = 0;
00063
00064 /// \brief
00065 /// Sets the description of the spatial context as a string.
00066 ///
00067 /// \param description
00068 /// Input the description of the spatial context.
00069 FDO_API virtual void SetSpatialContextDescription(FdoString* description) = 0;
00070
00071 /// \brief
00072 /// Gets the description of the spatial context.
00073 ///
00074 /// \return
00075 /// Returns the description of the spatial context.
00076 ///
00077 FDO_API virtual FdoString* GetSpatialContextDescription() = 0;
00078
00079 /// \brief
00080 /// Sets the coordinate system of the context to create as a string in
00081 /// OpenGIS SRS WKT format.
00082 ///
00083 /// \param wkt
00084 /// Input the coordinate system.
00085 FDO_API virtual void SetCoordinateSystemWKT(FdoString* wkt) = 0;
00086
00087 /// \brief
00088 /// Gets the name of the coordinate system in OpenGIS SRS WKT format of the spatial context.
00089 /// If the result is an empty string, the coordinate system WKT description is
00090 /// not available.
00091 ///
00092 /// \return
00093 /// Returns the coordinate system description in WKT format of the spatial context.
00094 ///
00095 FDO_API virtual FdoString* GetCoordinateSystemWKT() = 0;
00096
00097 /// \brief
00098 /// Sets the tolerance value to use for X/Y ordinates. Tolerances are used
00099 /// in some geometric tests, mostly for equality between coordinates. This
00100 /// occurs frequently in spatial queries, especially with "on boundary" or "just
00101 /// touching" conditions. It is also an objective amount that can be used
00102 /// when formulating step distances for parametric curve interpolation.
00103 ///
00104 /// \param tolerance
00105 /// Input the tolerance.
00106 FDO_API virtual void SetXYTolerance(double tolerance) = 0;
00107
00108 /// \brief
00109 /// Gets the tolerance value for X/Y ordinates of the spatial context.
00110 ///
00111 /// \remarks
00112 /// Tolerances are used in some geometric tests,
00113 /// mostly for equality between coordinates. This occurs frequently in spatial
00114 /// queries, especially with "on boundary" or "just touching" conditions.
00115 /// It is also an objective amount that can be used when formulating step
00116 /// distances for parametric curve interpolation.
00117 ///
00118 /// \return
00119 /// Returns the tolerance.
00120 ///
00121 FDO_API virtual double GetXYTolerance() = 0;
00122
00123 /// \brief
00124 /// Sets the tolerance value to use for Z ordinates.
00125 ///
00126 /// \remarks
00127 /// Tolerances are used in
00128 /// some geometric tests, mostly for equality between coordinates. This
00129 /// occurs frequently in spatial queries, especially with "on boundary" or "just
00130 /// touching" conditions. It is also an objective amount that can be used
00131 /// when formulating step distances for parametric curve interpolation.
00132 ///
00133 /// \param tolerance
00134 /// Input the tolerance.
00135 FDO_API virtual void SetZTolerance(double tolerance) = 0;
00136
00137 /// \brief
00138 /// Gets the tolerance value for Z ordinates of the spatial context.
00139 ///
00140 /// \remarks
00141 /// 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 double GetZTolerance() = 0;
00151
00152 /// \brief
00153 /// Executes the command. An exception is thrown if the file fails to be
00154 /// created.
00155 FDO_API virtual void Execute() = 0;
00156
00157 };
00158
00159
00160 #endif
00161
00162