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