FDO .NET API Reference Feature Data Objects

mgIRaster.h

Go to the documentation of this file.
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.