FDO .NET API Reference Feature Data Objects

mgFgfGeometryFactory.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 #include "mgGeometryFactoryAbstract.h"
00022 
00023 class FdoFgfGeometryFactory;
00024 BEGIN_NAMESPACE_OSGEO_GEOMETRY
00025 public __gc class CurvePolygonCollection;
00026 public __gc class CurveSegmentCollection;
00027 public __gc class CurveStringCollection;
00028 public __gc class DirectPositionCollection;
00029 public __gc class GeometryCollection;
00030 
00031 public __gc __interface ICircularArcSegment;
00032 public __gc __interface ICurvePolygon;
00033 public __gc __interface ICurveString;
00034 public __gc __interface IDirectPosition;
00035 public __gc __interface IEnvelope;
00036 public __gc __interface IGeometry;
00037 public __gc __interface ILineString;
00038 public __gc __interface ILineStringSegment;
00039 public __gc __interface ILinearRing;
00040 public __gc __interface IMultiCurvePolygon;
00041 public __gc __interface IMultiCurveString;
00042 public __gc __interface IMultiGeometry;
00043 public __gc __interface IMultiLineString;
00044 public __gc __interface IMultiPoint;
00045 public __gc __interface IMultiPolygon;
00046 public __gc __interface IPoint;
00047 public __gc __interface IPolygon;
00048 public __gc __interface IRing;
00049 
00050 public __gc class LineStringCollection;
00051 public __gc class LinearRingCollection;
00052 public __gc class PointCollection;
00053 public __gc class PolygonCollection;
00054 public __gc class RingCollection;
00055 END_NAMESPACE_OSGEO_GEOMETRY
00056 
00057 BEGIN_NAMESPACE_OSGEO_GEOMETRY
00058 
00059 /// \ingroup (OSGeoFDOGeometry)
00060 /// \brief
00061 /// The FgfGeometryFactory class is an FGF-based Geometry factory, a concrete class that
00062 /// implements all the members from GeometryFactoryAbstract
00063 public __gc class FgfGeometryFactory : public GeometryFactoryAbstract
00064 {
00065 public:
00066     /// \brief
00067     /// Constructs an FgfGeometryFactory based on an unmanaged instance of the object
00068     /// 
00069     /// \param unmanaged 
00070     /// Input A Pointer to the unmanaged object.
00071     /// 
00072     /// \param autoDelete 
00073     /// Input Indicates if the constructed object should be automatically deleted 
00074     /// once it no longer referenced.
00075     /// 
00076     FgfGeometryFactory(System::IntPtr unmanaged, System::Boolean autoDelete);
00077 
00078 /// \cond DOXYGEN-IGNORE
00079 public private:
00080     FdoFgfGeometryFactory *GetImpObj();
00081 /// \endcond
00082 
00083 public:
00084     /// \brief
00085     /// Instantiates an FgfGeometryFactory object.
00086     /// 
00087     FgfGeometryFactory();
00088 
00089     /// \brief
00090     /// Creates a Geometry from FGF data.
00091     /// 
00092     /// \param bytes 
00093     /// Input FGF data that defines the Geometry.
00094     /// 
00095     /// \return
00096     /// Returns an instance of IGeometry
00097     /// 
00098     NAMESPACE_OSGEO_GEOMETRY::IGeometry * CreateGeometryFromFgf(System::Byte bytes[]);
00099 
00100     /// \brief
00101     /// Creates a Geometry from FGF data.
00102     /// 
00103     /// \param bytes 
00104     /// Input FGF data that defines the Geometry.
00105     /// The caller must guarantee the validity of the array for the lifetime
00106     /// of the associated geometry object.
00107     /// \param count 
00108     /// Input Number of bytes of FGF data.
00109     /// 
00110     /// \return
00111     /// Returns an instance of IGeometry
00112     /// 
00113     NAMESPACE_OSGEO_GEOMETRY::IGeometry * CreateGeometryFromFgf(System::Byte bytes[], Int32 count);
00114 
00115     /// \brief
00116     /// Gets FGF data from a Geometry.
00117     /// 
00118     /// \param geometry 
00119     /// Input a Geometry, which must be FGF-based
00120     /// 
00121     /// \return
00122     /// Returns FGF data representing the Geometry
00123     /// 
00124     System::Byte GetFgf(NAMESPACE_OSGEO_GEOMETRY::IGeometry * geometry)[];
00125 
00126     /// \brief
00127     /// Creates an FGF-based Geometry from OpenGIS WKB data.
00128     /// 
00129     /// \param bytes 
00130     /// Input WKB data that defines the Geometry.
00131     /// 
00132     /// \return
00133     /// Returns a Geometry
00134     /// 
00135     NAMESPACE_OSGEO_GEOMETRY::IGeometry * CreateGeometryFromWkb(System::Byte bytes[]);
00136 
00137     /// \brief
00138     /// Gets OpenGIS WKB data from a Geometry.
00139     /// 
00140     /// \param geometry 
00141     /// Input a Geometry, which must be FGF-based
00142     /// 
00143     /// \return
00144     /// Returns WKB data representing the Geometry
00145     /// 
00146     System::Byte GetWkb(NAMESPACE_OSGEO_GEOMETRY::IGeometry * geometry)[];
00147 
00148     /// Methods from GeometryFactoryAbstract
00149 
00150     /// \brief
00151     /// Creates a LineString object by copying from a collection of positions.
00152     /// 
00153     /// \param positions 
00154     /// Input collection of positions to copy
00155     /// 
00156     /// \return
00157     /// Returns a LineString
00158     /// 
00159     NAMESPACE_OSGEO_GEOMETRY::ILineString* CreateLineString(
00160         NAMESPACE_OSGEO_GEOMETRY::DirectPositionCollection * positions);
00161 
00162     /// \brief
00163     /// Creates a LineString object by copying from an array of ordinates.
00164     /// 
00165     /// \param dimensionType 
00166     /// Input dimensionality of the ordinates (see Dimensionality)
00167     /// \param ordinateNumber 
00168     /// Input total number of ordinates in the array
00169     /// \param ordinates 
00170     /// Input ordinate array representing positions
00171     /// 
00172     /// \return
00173     /// Returns a LineString
00174     /// 
00175     NAMESPACE_OSGEO_GEOMETRY::ILineString* CreateLineString(
00176         System::Int32 dimensionType,
00177         System::Int32 ordinateNumber,
00178         System::Double ordinates[]);
00179 
00180     /// \brief
00181     /// Creates a Geometry object by copying from another Geometry.
00182     /// 
00183     /// \remarks
00184     /// This is a pseudo-copy-constructor.
00185     /// It is required that any implementation use only public methods on the underlying 
00186     /// Geometry object, thus enabling conversion from Geometries of the same, or any
00187     /// other, implementation of this Geometry package.  Thus, this implementation creates
00188     /// FGF-based Geometry objects based on any implementation of the Geometry API.
00189     /// 
00190     /// \param geometry 
00191     /// Input Source geometry
00192     /// 
00193     /// \return
00194     /// Returns an instance of IGeometry
00195     /// 
00196     NAMESPACE_OSGEO_GEOMETRY::IGeometry * CreateGeometry(
00197         NAMESPACE_OSGEO_GEOMETRY::IGeometry * geometry);
00198 
00199     /// \brief
00200     /// Creates a Geometry object by converting from a text string.
00201     /// 
00202     /// \param text 
00203     /// Input Source geometry
00204     /// 
00205     /// \return
00206     /// Returns an instance of IGeometry
00207     /// 
00208     NAMESPACE_OSGEO_GEOMETRY::IGeometry * CreateGeometry(System::String* text);
00209 
00210     /// \brief
00211     /// Creates a Geometry object by converting from an envelope.
00212     /// 
00213     /// \remarks
00214     /// This method will produce a new FGF-based Geometry 
00215     /// based on the given envelope.
00216     /// 
00217     /// \param envelope 
00218     /// Input Source envelope
00219     /// 
00220     /// \return
00221     /// Returns a geometry
00222     /// 
00223     NAMESPACE_OSGEO_GEOMETRY::IGeometry * CreateGeometry(
00224         NAMESPACE_OSGEO_GEOMETRY::IEnvelope * envelope);
00225 
00226     /// Point
00227 
00228     /// \brief
00229     /// Creates a point object by copying from a position.
00230     /// 
00231     /// \param position 
00232     /// Input position to copy
00233     /// 
00234     /// \return
00235     /// Returns a point
00236     /// 
00237     NAMESPACE_OSGEO_GEOMETRY::IPoint* CreatePoint(
00238         NAMESPACE_OSGEO_GEOMETRY::IDirectPosition* position);
00239 
00240     /// \brief
00241     /// Creates an point object by copying from an array of ordinates.
00242     /// 
00243     /// \param dimensionality 
00244     /// Input dimensionality of the ordinates (see Dimensionality)
00245     /// \param ordinates 
00246     /// Input ordinate array representing one position
00247     /// 
00248     /// \return
00249     /// Returns a point
00250     /// 
00251     NAMESPACE_OSGEO_GEOMETRY::IPoint* CreatePoint(
00252         System::Int32 dimensionality,
00253         System::Double ordinates[]);
00254 
00255     /// LinearRing
00256 
00257     /// \brief
00258     /// Creates a LinearRing object by copying from a collection of positions.
00259     /// 
00260     /// \remarks
00261     /// The first and last positions must be equal.
00262     /// 
00263     /// \param positions 
00264     /// Input collection of positions to copy
00265     /// 
00266     /// \return
00267     /// Returns a LinearRing
00268     /// 
00269     NAMESPACE_OSGEO_GEOMETRY::ILinearRing* CreateLinearRing(
00270         NAMESPACE_OSGEO_GEOMETRY::DirectPositionCollection* positions);
00271 
00272     /// \brief
00273     /// Creates a LinearRing object by copying from an array of ordinates.
00274     /// 
00275     /// \remarks
00276     /// The ordinates representing the first and last positions must be equal.
00277     /// 
00278     /// \param dimensionality 
00279     /// Input dimensionality of the ordinates (see Dimensionality)
00280     /// \param ordinateNumber 
00281     /// Input total number of ordinates in the array
00282     /// \param ordinates 
00283     /// Input ordinate array representing positions
00284     /// 
00285     /// \return
00286     /// Returns a LinearRing
00287     /// 
00288     NAMESPACE_OSGEO_GEOMETRY::ILinearRing* CreateLinearRing(
00289         System::Int32 dimensionality,
00290         System::Int32 ordinateNumber,
00291         System::Double ordinates[]);
00292 
00293     /// LineStringSegment
00294 
00295     /// \brief
00296     /// Creates a LineStringSegment object by copying from a collection of positions.
00297     /// 
00298     /// \param positions 
00299     /// Input collection of positions to copy
00300     /// 
00301     /// \return
00302     /// Returns a LineStringSegment
00303     /// 
00304     NAMESPACE_OSGEO_GEOMETRY::ILineStringSegment* CreateLineStringSegment(
00305         NAMESPACE_OSGEO_GEOMETRY::DirectPositionCollection* positions);
00306 
00307     /// \brief
00308     /// Creates a LineStringSegment object by copying from an array of ordinates.
00309     /// 
00310     /// \param dimType 
00311     /// Input dimensionality of the ordinates (see Dimensionality)
00312     /// \param ordinateNumber 
00313     /// Input total number of ordinates in the array
00314     /// \param ordinates 
00315     /// Input ordinate array representing positions
00316     /// 
00317     /// \return
00318     /// Returns a LineStringSegment
00319     /// 
00320     NAMESPACE_OSGEO_GEOMETRY::ILineStringSegment* CreateLineStringSegment(
00321         System::Int32 dimType,
00322         System::Int32 ordinateNumber, 
00323         System::Double ordinates[]);
00324 
00325     /// Polygon
00326 
00327     /// \brief
00328     /// Creates a polygon object by copying from given LinearRing objects.
00329     /// 
00330     /// \param exteriorRing 
00331     /// Input exterior ring to copy
00332     /// \param interiorRings 
00333     /// Input collection of interior rings to copy
00334     /// 
00335     /// \return
00336     /// Returns a polygon
00337     /// 
00338     NAMESPACE_OSGEO_GEOMETRY::IPolygon* CreatePolygon(
00339         NAMESPACE_OSGEO_GEOMETRY::ILinearRing* exteriorRing, 
00340         NAMESPACE_OSGEO_GEOMETRY::LinearRingCollection* interiorRings);
00341 
00342     /// MultiPoint
00343 
00344     /// \brief
00345     /// Creates a MultiPoint object by copying from a collection of point objects.
00346     /// 
00347     /// \param points 
00348     /// Input collection of point objects to copy
00349     /// 
00350     /// \return
00351     /// Returns a MultiPoint
00352     /// 
00353     NAMESPACE_OSGEO_GEOMETRY::IMultiPoint* CreateMultiPoint(
00354         NAMESPACE_OSGEO_GEOMETRY::PointCollection* points);
00355 
00356     /// \brief
00357     /// Creates a MultiPoint object by copying from an array of ordinates.
00358     /// 
00359     /// \param dimensionality 
00360     /// Input dimensionality of the ordinates (see Dimensionality)
00361     /// \param ordinateNumber 
00362     /// Input total number of ordinates in the array
00363     /// \param ordinates 
00364     /// Input ordinate array representing positions
00365     /// 
00366     /// \return
00367     /// Returns a MultiPoint
00368     /// 
00369     NAMESPACE_OSGEO_GEOMETRY::IMultiPoint* CreateMultiPoint(
00370         System::Int32 dimensionality,
00371         System::Int32 ordinateNumber, 
00372         System::Double ordinates[]);
00373 
00374     /// MultiLineString
00375 
00376     /// \brief
00377     /// Creates a MultiLineString object by copying from a collection of LineString objects.
00378     /// 
00379     /// \param lineStrings 
00380     /// Input collection of LineString objects to copy
00381     /// 
00382     /// \return
00383     /// Returns a MultiLineString
00384     /// 
00385     NAMESPACE_OSGEO_GEOMETRY::IMultiLineString* CreateMultiLineString(
00386         NAMESPACE_OSGEO_GEOMETRY::LineStringCollection* lineStrings);
00387 
00388     //MultiPolygon
00389 
00390     /// \brief
00391     /// Creates a MultiPolygon object by copying from a collection of polygon objects.
00392     /// 
00393     /// \param polygons 
00394     /// Input collection of polygon objects to copy
00395     /// 
00396     /// \return
00397     /// Returns a MultiPolygon
00398     /// 
00399     NAMESPACE_OSGEO_GEOMETRY::IMultiPolygon* CreateMultiPolygon(
00400         NAMESPACE_OSGEO_GEOMETRY::PolygonCollection* polygons);
00401 
00402     /// CircularArcSegment
00403 
00404     /// \brief
00405     /// Creates a CircularArcSegment object by copying from three points on the arc.
00406     /// 
00407     /// \param startPosition 
00408     /// Input starting position of the arc
00409     /// \param midPosition 
00410     /// Input a position on the arc, and not equal to the starting or ending positions
00411     /// \param endPosition 
00412     /// Input ending position of the arc
00413     /// 
00414     /// \return
00415     /// Returns a CircularArcSegment
00416     /// 
00417     NAMESPACE_OSGEO_GEOMETRY::ICircularArcSegment* CreateCircularArcSegment(
00418         NAMESPACE_OSGEO_GEOMETRY::IDirectPosition* startPosition,
00419         NAMESPACE_OSGEO_GEOMETRY::IDirectPosition* midPosition,
00420         NAMESPACE_OSGEO_GEOMETRY::IDirectPosition* endPosition);
00421 
00422     /// CurveString
00423 
00424     /// \brief
00425     /// Creates a CurveString object by copying from a collection of CurveSegment objects.
00426     /// 
00427     /// \param curveSegments 
00428     /// Input collection of CurveSegment objects to copy
00429     /// 
00430     /// \return
00431     /// Returns a CurveString
00432     /// 
00433     NAMESPACE_OSGEO_GEOMETRY::ICurveString* CreateCurveString(
00434         NAMESPACE_OSGEO_GEOMETRY::CurveSegmentCollection* curveSegments);
00435 
00436     /// MultiCurveString
00437 
00438     /// \brief
00439     /// Creates a MultiCurveString object by copying from a collection of CurveString objects.
00440     /// 
00441     /// \param curveStrings 
00442     /// Input collection of CurveString objects to copy
00443     /// 
00444     /// \return
00445     /// Returns a MultiCurveString
00446     /// 
00447     NAMESPACE_OSGEO_GEOMETRY::IMultiCurveString* CreateMultiCurveString(
00448         NAMESPACE_OSGEO_GEOMETRY::CurveStringCollection* curveStrings);
00449 
00450     /// Ring
00451 
00452     /// \brief
00453     /// Creates a ring object by copying from a collection of CurveSegment objects.
00454     /// 
00455     /// \param curveSegments 
00456     /// Input collection of CurveSegment objects to copy
00457     /// 
00458     /// \return
00459     /// Returns a Ring
00460     /// 
00461     NAMESPACE_OSGEO_GEOMETRY::IRing* CreateRing(
00462         NAMESPACE_OSGEO_GEOMETRY::CurveSegmentCollection* curveSegments);
00463 
00464     /// CurvePolygon
00465 
00466     /// \brief
00467     /// Creates a CurvePolygon object by copying from given ring objects.
00468     /// 
00469     /// \param exteriorRing 
00470     /// Input exterior ring to copy
00471     /// \param interiorRings 
00472     /// Input collection of interior rings to copy
00473     /// 
00474     /// \return
00475     /// Returns a CurvePolygon
00476     /// 
00477     NAMESPACE_OSGEO_GEOMETRY::ICurvePolygon* CreateCurvePolygon(
00478         NAMESPACE_OSGEO_GEOMETRY::IRing* exteriorRing,
00479         NAMESPACE_OSGEO_GEOMETRY::RingCollection* interiorRings);
00480 
00481     /// MultiCurvePolygon
00482 
00483     /// \brief
00484     /// Creates a MultiCurvePolygon object by copying from a collection of CurvePolygon objects.
00485     /// 
00486     /// \param curvePolygons 
00487     /// Input collection of CurvePolygon objects to copy
00488     /// 
00489     /// \return
00490     /// Returns a MultiCurvePolygon
00491     /// 
00492     NAMESPACE_OSGEO_GEOMETRY::IMultiCurvePolygon* CreateMultiCurvePolygon(
00493         NAMESPACE_OSGEO_GEOMETRY::CurvePolygonCollection* curvePolygons);
00494 
00495     /// MultiGeometry
00496 
00497     /// \brief
00498     /// Creates a MultiGeometry object by copying from a collection of Geometry objects.
00499     /// 
00500     /// \param geometries 
00501     /// Input collection of Geometry objects to copy
00502     /// 
00503     /// \return
00504     /// Returns a MultiGeometry
00505     /// 
00506     NAMESPACE_OSGEO_GEOMETRY::IMultiGeometry* CreateMultiGeometry(
00507         NAMESPACE_OSGEO_GEOMETRY::GeometryCollection* geometries);
00508 };
00509 
00510 END_NAMESPACE_OSGEO_GEOMETRY
00511 
00512 

Comments or suggestions? Send us feedback.