FDO .NET API Reference | Feature Data Objects |
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 * 00017 */ 00018 00019 #pragma once 00020 00021 BEGIN_NAMESPACE_OSGEO_COMMON 00022 public __gc __interface IStreamReader; 00023 END_NAMESPACE_OSGEO_COMMON 00024 00025 BEGIN_NAMESPACE_OSGEO_FDO_EXPRESSION 00026 public __gc class DataValue; 00027 END_NAMESPACE_OSGEO_FDO_EXPRESSION 00028 00029 BEGIN_NAMESPACE_OSGEO_FDO_RASTER 00030 public __gc class RasterDataModel; 00031 public __gc __interface IRasterPropertyDictionary; 00032 00033 /// \ingroup (OSGeoFDORaster) 00034 /// \interface OSGeo::FDO::Raster::IRaster 00035 /// \brief 00036 /// The IRaster interface specifies the data type and organization 00037 /// of raster data retrieved and stored. Using this class and the image 00038 /// extents in width and length, the binary format of the image data returned 00039 /// by and accepted by the IoStreamReader class can be interpreted. 00040 public __gc __interface IRaster : public System::IDisposable 00041 { 00042 public: 00043 00044 /// \brief 00045 /// Returns true if the IRaster represents a null value. 00046 /// 00047 /// \return 00048 /// Returns true if the IRaster represents a null value. 00049 /// 00050 System::Boolean IsNull (); 00051 00052 /// \brief 00053 /// Sets the IRaster to a null value. 00054 /// 00055 /// \return 00056 /// Returns nothing 00057 /// 00058 System::Void SetNull (); 00059 00060 /// \brief 00061 /// Gets the number of bands/channels contained in the raster image. 00062 /// 00063 /// \return 00064 /// Returns the numbers of bands/channels contained in the raster image. 00065 /// 00066 __property System::Int32 get_NumberOfBands(); 00067 00068 /// \brief 00069 /// Sets the number of bands/channels contained in the raster image. 00070 /// 00071 /// \return 00072 /// Returns nothing. 00073 /// 00074 __property System::Void set_NumberOfBands (System::Int32 value); 00075 00076 /// \brief 00077 /// Gets the currently active band/channel. 00078 /// 00079 /// \remarks 00080 /// IRaster Bounds, DataModel, ImageSize, AuxilliaryProperties and Stream 00081 /// accessors all conform to the current band. 00082 /// 00083 /// \return 00084 /// Returns the current active band/channel. 00085 /// 00086 __property System::Int32 get_CurrentBand (); 00087 00088 /// \brief 00089 /// Sets the currently active band/channel. 00090 /// 00091 /// \remarks 00092 /// Setting the current band will mean that the Bounds, DataModel, ImageSize, 00093 /// AuxilliaryProperties and Stream accessors of IRaster 00094 /// will all switch to the specified band. 00095 /// 00096 /// \return 00097 /// Returns nothing. 00098 /// 00099 __property System::Void set_CurrentBand (System::Int32 value); 00100 00101 /// \brief 00102 /// Get the minimum bounding box around the curent band of the image. 00103 /// 00104 /// \return 00105 /// Returns the bounds of the raster image 00106 /// 00107 __property System::Byte get_Bounds () []; 00108 00109 /// \brief 00110 /// Set the minimum bounding box around the image. 00111 /// For georeferenced images, the coordinate system is specified by the 00112 /// spatial context in force when the object is created. The act of 00113 /// setting this property georeferences the image. In order to provide 00114 /// for non-georeferenced images, this property is Nullable (doesn't 00115 /// need to be set). 00116 /// 00117 /// \param bounds 00118 /// The new bounds of the raster image. 00119 /// 00120 __property System::Void set_Bounds (System::Byte bounds[]); 00121 00122 /// \brief 00123 /// Gets the data model in use by this raster property. 00124 /// 00125 /// \return 00126 /// Returns the current data model. 00127 /// 00128 __property NAMESPACE_OSGEO_FDO_RASTER::RasterDataModel* get_DataModel (); 00129 00130 /// \brief 00131 /// Sets the data model used by this raster property. 00132 /// Allowed values are only those data models that are acceptable to the 00133 /// SupportsDataModel capability. 00134 /// 00135 /// \remarks 00136 /// This attribute specifies the colour/palette model, bits per pixel, 00137 /// tiling and interleaving. For example, if the bits per pixel of the 00138 /// data model is 8 and it is set to 24, a conversion would be performed 00139 /// when image data is requested, to return 24 bit data. If an update 00140 /// command is executed to save this value, the raster data would be 00141 /// transformed and saved. The next time this image is retrieved 00142 /// by the client the bits per pixel value would indicate 24. 00143 /// 00144 /// \param dataModel 00145 /// The datamodel to be used. 00146 /// 00147 __property System::Void set_DataModel (NAMESPACE_OSGEO_FDO_RASTER::RasterDataModel* dataModel); 00148 00149 /// \brief 00150 /// Gets the size of image file in the horizontal 00151 /// direction in pixels (number of columns). 00152 /// 00153 /// \return 00154 /// Returns the horizontal image size in pixels 00155 /// (number of columns). 00156 /// 00157 __property System::Int32 get_ImageXSize (); 00158 00159 /// \brief 00160 /// Sets the size of image file in the horizontal 00161 /// direction in pixels (number of columns). 00162 /// By setting the X and Y image size properties prior to getting 00163 /// a reader for the data, the client application can control the 00164 /// density of pixels fetched by the provider, which may reduce 00165 /// the amount of data shipped by the reader and reduce processing 00166 /// time significantly. For example, a certain query in the 00167 /// coordinate system of the raster object class returns a 00168 /// IRaster object with image size 12091 by 8043. But the 00169 /// image only needs to be displayed in an area 1167 by 776 on 00170 /// the users monitor. 00171 /// <p>(<b>Note:</b> The aspect ratios are the same 00172 /// because the query is constructed based on the display area). 00173 /// <p>By setting the image size to these lower values the FDO raster 00174 /// subsystem may be able to use a previously subsampled image 00175 /// where the resolution has been reduced by a factor of 4. 00176 /// So instead of transferring 97MB, it can transfer 6MB (a reduction 00177 /// by 4 in both dimensions reduces the amount of data by a factor of 16) 00178 /// and subsample the image again to the desired resolution in a 00179 /// more timely manner (less data to process means less total time), 00180 /// with no appreciable difference in display quality to the user. 00181 /// 00182 /// \param size 00183 /// The desired horizontal image size in pixels 00184 /// (number of columns). 00185 /// 00186 __property System::Void set_ImageXSize (System::Int32 size); 00187 00188 /// \brief 00189 /// Gets the size of image file in the vertical 00190 /// direction in pixels (number of rows). 00191 /// 00192 /// \return 00193 /// Returns the vertical image size in pixels 00194 /// (number of rows). 00195 /// 00196 __property System::Int32 get_ImageYSize (); 00197 00198 /// \brief 00199 /// Sets the size of image file in the vertical 00200 /// direction in pixels (number of rows). See SetImageXSize. 00201 /// 00202 /// \param size 00203 /// The desired vertical image size in pixels 00204 /// (number of rows). 00205 /// 00206 __property System ::Void set_ImageYSize (System ::Int32 size); 00207 00208 /// \brief 00209 /// Get a dictionary style interface to the raster properties. 00210 /// Through this interface the non-standard properties of a raster 00211 /// image can be determined and their values can be retrieved and set. 00212 /// Data values are exchanged through the DataValue object to 00213 /// accommodate various data types, boolean, integer, double, string, 00214 /// etc. 00215 /// 00216 /// \return 00217 /// The dictionary of auxilliary raster properties. 00218 /// 00219 NAMESPACE_OSGEO_FDO_RASTER::IRasterPropertyDictionary* GetAuxiliaryProperties(); 00220 00221 /// \brief 00222 /// Gets the pixel value that represents a NULL value in the available raster stream. 00223 /// 00224 /// \remarks 00225 /// The Null Pixel Value is Data Model dependent. The value of the Null pixel 00226 /// will change depending on which data model is set. If the client application changes 00227 /// the Data Model using SetDataModel(RasterDataModel* datamodel) a subsequent 00228 /// call to GetNullPixelValue will need to be made in order to determine the valid Null 00229 /// value for the current data model. 00230 /// 00231 /// \return 00232 /// Returns the DataType value that can be used to identify the Null value. 00233 /// 00234 __property NAMESPACE_OSGEO_FDO_EXPRESSION::DataValue* get_NullPixelValue (); 00235 00236 /// \brief 00237 /// Set the source of image data. 00238 /// Image data is shipped using a paradigm similar to BLOB I/O. 00239 /// When inserting or updating an object with a raster property, 00240 /// the SetStreamReader method provides a means to set a 00241 /// IStreamReader callback. 00242 /// On execution of an insert or update command, requests are made on 00243 /// the reader for the image data (which is supplied by the FDO client 00244 /// application). 00245 /// The format of the image data expected is determined by the 00246 /// DataModel property. The data type, bit depth, tiling and 00247 /// organization specify the meaning of the image data. 00248 /// By setting the DataModel property prior to setting a 00249 /// reader for the data, the FDO client application can control the 00250 /// way data is understood by, the FDO raster subsystem. 00251 /// 00252 __property System ::Void set_StreamReader (NAMESPACE_OSGEO_COMMON::IStreamReaderImp* reader); 00253 00254 /// \brief 00255 /// Get the source of image data. 00256 /// Image data is shipped using a paradigm similar to BLOB I/O. 00257 /// When fetching a raster image the GetStreamReader() method provides 00258 /// a IStreamReader from which the client may request the image data. 00259 /// The format of the image data expected is determined by the 00260 /// DataModel property. The data type, bit depth, tiling and 00261 /// organization specify the meaning of the image data. 00262 /// By setting the DataModel property prior to getting a 00263 /// reader for the data, the FDO client application can control the 00264 /// way data is retrieved from the FDO raster subsystem. 00265 /// When a tiled image is fetched, the image data will be tiled by default, 00266 /// unless a spatial query is used that covers a portion of a tile, 00267 /// in which case the image is converted to monolithic form prior to 00268 /// returning to the client. The client may force a monolithic 00269 /// image in the former case by setting the DataModel to monolithic 00270 /// prior to getting the stream reader. Or conversely it can request 00271 /// a re-tiling of the remaining sub-image by setting the DataModel 00272 /// property to tiled (in this case the tile origin is at the new upper 00273 /// left corner of the sub-image). 00274 /// <p><b>Note:</b> Altering the DataModel may have significant performance issues. 00275 /// 00276 __property NAMESPACE_OSGEO_COMMON::IStreamReaderImp* get_StreamReader (); 00277 00278 /// \brief 00279 /// Gets the Vertical Unit of Measure corresponding to the Raster Band. 00280 /// The string value returned will be a considered lookup value that 00281 /// will be used to identify the properties of the Unit of Measure using 00282 /// the IGetMeasureUnits command. 00283 /// 00284 /// \return 00285 /// Returns the Unit of Measure type of data associated to the Raster Band. 00286 /// 00287 __property System::String* get_VerticalUnits (); 00288 00289 /// \brief 00290 /// Sets the Vertical Unit of Measure corresponding to the Raster Band. 00291 /// 00292 /// \param units 00293 /// The Unit of Measure type for the current band. 00294 /// The units string value corresponds to a Unit of Measure supported 00295 /// through the IGetMeasureUnits command. 00296 __property System::Void set_VerticalUnits (System::String* units); 00297 00298 }; 00299 00300 END_NAMESPACE_OSGEO_FDO_RASTER 00301 00302
Comments or suggestions? Send us feedback. |