FDO .NET API Reference Feature Data Objects

mgGeometryFactoryAbstract.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 class FdoGeometryFactoryAbstract;
00022 BEGIN_NAMESPACE_OSGEO_GEOMETRY
00023 public __gc class CurvePolygonCollection;
00024 public __gc class CurveSegmentCollection;
00025 public __gc class CurveStringCollection;
00026 public __gc class DirectPositionCollection;
00027 public __gc class GeometryCollection;
00028 public __gc __interface ICircularArcSegment;
00029 public __gc __interface ICurvePolygon;
00030 public __gc __interface ICurveString;
00031 public __gc __interface IDirectPosition;
00032 public __gc __interface IEnvelope;
00033 public __gc __interface IGeometry;
00034 public __gc __interface ILineString;
00035 public __gc __interface ILineStringSegment;
00036 public __gc __interface ILinearRing;
00037 public __gc __interface IMultiCurvePolygon;
00038 public __gc __interface IMultiCurveString;
00039 public __gc __interface IMultiGeometry;
00040 public __gc __interface IMultiLineString;
00041 public __gc __interface IMultiPoint;
00042 public __gc __interface IMultiPolygon;
00043 public __gc __interface IPoint;
00044 public __gc __interface IPolygon;
00045 public __gc __interface IRing;
00046 public __gc class LineStringCollection;
00047 public __gc class LinearRingCollection;
00048 public __gc class PointCollection;
00049 public __gc class PolygonCollection;
00050 public __gc class RingCollection;
00051 END_NAMESPACE_OSGEO_GEOMETRY
00052 
00053 BEGIN_NAMESPACE_OSGEO_GEOMETRY
00054 
00055 /// \ingroup (OSGeoFDOGeometry)
00056 /// \brief
00057 /// 
00058 /// The GeometryFactoryAbstract class is a factory (abstract, non-pure) for Geometry objects and Geometry helper objects.
00059 public __gc class GeometryFactoryAbstract : public NAMESPACE_OSGEO_RUNTIME::Disposable
00060 {
00061 public:
00062     /// \brief
00063     /// Constructs an GeometryFactoryAbstract managed object based on an unmanaged instance of the object
00064     /// 
00065     /// \param unmanaged 
00066     /// Input A Pointer to the unmanaged object.
00067     /// 
00068     /// \param autoDelete 
00069     /// Input Indicates if the constructed object should be automatically deleted 
00070     /// once it no longer referenced.
00071     /// 
00072     GeometryFactoryAbstract(System::IntPtr unmanaged, System::Boolean autoDelete);
00073 
00074 /// \cond DOXYGEN-IGNORE
00075 public private:
00076     FdoGeometryFactoryAbstract *GetImpObj();
00077 
00078 protected:
00079     __sealed System::Void ReleaseUnmanagedObject();
00080 /// \endcond
00081 
00082 public:
00083     /// \brief
00084     /// Creates a position object using X and Y ordinates.
00085     /// 
00086     /// \remarks
00087     /// The resulting object's accessor methods for ordinates
00088     /// that are not given here as input parameters will return the default
00089     /// value of 0.0.
00090     /// 
00091     /// \param coordinateX 
00092     /// Input X ordinate value
00093     /// \param coordinateY 
00094     /// Input Y ordinate value
00095     /// 
00096     /// \return
00097     /// Returns a direct position
00098     /// 
00099     NAMESPACE_OSGEO_GEOMETRY::IDirectPosition* CreatePositionXY(System::Double coordinateX, System::Double coordinateY);
00100 
00101     /// \brief
00102     /// Creates a position object using X, Y and Z ordinates.
00103     /// 
00104     /// \remarks
00105     /// The resulting object's accessor methods for ordinates
00106     /// that are not given here as input parameters will return the default
00107     /// value of 0.0.
00108     /// 
00109     /// \param coordinateX 
00110     /// Input X ordinate value
00111     /// \param coordinateY 
00112     /// Input Y ordinate value
00113     /// \param coordinateZ 
00114     /// Input Z ordinate value
00115     /// 
00116     /// \return
00117     /// Returns a direct position
00118     /// 
00119     NAMESPACE_OSGEO_GEOMETRY::IDirectPosition* CreatePositionXYZ(System::Double coordinateX, System::Double coordinateY, System::Double coordinateZ);
00120 
00121     /// \brief
00122     /// Creates a position object using X, Y and M ordinates.
00123     /// 
00124     /// \remarks
00125     /// The resulting object's accessor methods for ordinates
00126     /// that are not given here as input parameters will return the default
00127     /// value of 0.0.
00128     /// 
00129     /// \param coordinateX 
00130     /// Input X ordinate value
00131     /// \param coordinateY 
00132     /// Input Y ordinate value
00133     /// \param coordinateM 
00134     /// Input M ordinate value
00135     /// 
00136     /// \return
00137     /// Returns a direct position
00138     /// 
00139     NAMESPACE_OSGEO_GEOMETRY::IDirectPosition* CreatePositionXYM(System::Double coordinateX, System::Double coordinateY, System::Double coordinateM);
00140 
00141     /// \brief
00142     /// Creates a position object using X, Y, Z and M ordinates.
00143     /// 
00144     /// \param coordinateX 
00145     /// Input X ordinate value
00146     /// \param coordinateY 
00147     /// Input Y ordinate value
00148     /// \param coordinateZ 
00149     /// Input Z ordinate value
00150     /// \param coordinateM 
00151     /// Input M ordinate value
00152     /// 
00153     /// \return
00154     /// Returns a direct position
00155     /// 
00156     NAMESPACE_OSGEO_GEOMETRY::IDirectPosition* CreatePositionXYZM(System::Double coordinateX, System::Double coordinateY, System::Double coordinateZ, System::Double coordinateM);
00157 
00158     /// \brief
00159     /// Creates a position object by copying from an existing position.
00160     /// 
00161     /// \param position 
00162     /// Input position to copy
00163     /// 
00164     /// \return
00165     /// Returns a direct position
00166     /// 
00167     NAMESPACE_OSGEO_GEOMETRY::IDirectPosition* CreatePosition(NAMESPACE_OSGEO_GEOMETRY::IDirectPosition * position);
00168 
00169     /// Envelope
00170 
00171     /// \brief
00172     /// Creates an envelope object using two positions.
00173     /// 
00174     /// \param lowerLeft 
00175     /// Input lower-left position
00176     /// \param upperRight 
00177     /// Input upper-right position
00178     /// 
00179     /// \return
00180     /// Returns an envelope
00181     /// 
00182     NAMESPACE_OSGEO_GEOMETRY::IEnvelope* CreateEnvelope(NAMESPACE_OSGEO_GEOMETRY::IDirectPosition * lowerLeft, NAMESPACE_OSGEO_GEOMETRY::IDirectPosition * upperRight);
00183 
00184     /// \brief
00185     /// Creates an envelope object by copying from an array of ordinates.
00186     /// 
00187     /// \param dimensionType 
00188     /// Input dimensionality of the ordinates (see Dimensionality)
00189     /// \param ordinates 
00190     /// Input ordinate array representing two positions
00191     /// 
00192     /// \return
00193     /// Returns an envelope
00194     /// 
00195     NAMESPACE_OSGEO_GEOMETRY::IEnvelope* CreateEnvelope(System::Int32 dimensionType, System::Double ordinates __gc []);
00196 
00197     /// \brief
00198     /// Creates an envelope object using X and Y ordinates.
00199     /// 
00200     /// \param lowerLeftX 
00201     /// Input lower-left X ordinate
00202     /// \param lowerLeftY 
00203     /// Input lower-left Y ordinate
00204     /// \param upperRightX 
00205     /// Input upper-right X ordinate
00206     /// \param upperRightY 
00207     /// Input upper-right Y ordinate
00208     /// 
00209     /// \return
00210     /// Returns an envelope
00211     /// 
00212     NAMESPACE_OSGEO_GEOMETRY::IEnvelope* CreateEnvelopeXY(
00213         System::Double lowerLeftX,
00214         System::Double lowerLeftY,
00215         System::Double upperRightX, 
00216         System::Double upperRightY);
00217 
00218     /// \brief
00219     /// Creates an envelope object using X, Y and Z ordinates.
00220     /// 
00221     /// \param lowerLeftX 
00222     /// Input lower-left, rear X ordinate
00223     /// \param lowerLeftY 
00224     /// Input lower-left, rear Y ordinate
00225     /// \param lowerLeftZ 
00226     /// Input lower-left, rear Z ordinate
00227     /// \param upperRightX 
00228     /// Input upper-right, front X ordinate
00229     /// \param upperRightY 
00230     /// Input upper-right, front Y ordinate
00231     /// \param upperRightZ 
00232     /// Input upper-right, front Z ordinate
00233     /// 
00234     /// \return
00235     /// Returns an envelope
00236     /// 
00237     NAMESPACE_OSGEO_GEOMETRY::IEnvelope* CreateEnvelopeXYZ(
00238         System::Double lowerLeftX,
00239         System::Double lowerLeftY,
00240         System::Double lowerLeftZ,
00241         System::Double upperRightX,
00242         System::Double upperRightY,
00243         System::Double upperRightZ);
00244 
00245     /// \brief
00246     /// Creates a envelope object by copying from another envelope.
00247     /// 
00248     /// \param envelope 
00249     /// Input Source envelope
00250     /// 
00251     /// \return
00252     /// Returns an envelope
00253     /// 
00254     NAMESPACE_OSGEO_GEOMETRY::IEnvelope* CreateEnvelope(NAMESPACE_OSGEO_GEOMETRY::IEnvelope * envelope);
00255 
00256     /// LineString
00257 
00258     /// \brief
00259     /// Creates a LineString object by copying from a collection of positions.
00260     /// 
00261     /// \param positions 
00262     /// Input collection of positions to copy
00263     /// 
00264     /// \return
00265     /// Returns a LineString
00266     /// 
00267     NAMESPACE_OSGEO_GEOMETRY::ILineString* CreateLineString(NAMESPACE_OSGEO_GEOMETRY::DirectPositionCollection* positions);
00268 
00269     /// \brief
00270     /// Creates a LineString object by copying from an array of ordinates.
00271     /// 
00272     /// \param dimensionType 
00273     /// Input dimensionality of the ordinates (see Dimensionality)
00274     /// \param ordinateNumber 
00275     /// Input total number of ordinates in the array
00276     /// \param ordinates 
00277     /// Input ordinate array representing positions
00278     /// 
00279     /// \return
00280     /// Returns a LineString
00281     /// 
00282     NAMESPACE_OSGEO_GEOMETRY::ILineString* CreateLineString(System::Int32 dimensionType, System::Int32 ordinateNumber, System::Double ordinates __gc []);
00283 
00284     /// Geometry
00285 
00286     /// \brief
00287     /// Creates a Geometry object by copying from another Geometry.
00288     /// 
00289     /// \remarks
00290     /// This is a pseudo-copy-constructor.
00291     /// It is required that any implementation use only public methods on the underlying 
00292     /// Geometry object, thus enabling conversion from geometries of the same (or any
00293     /// other) implementation of this Geometry package.
00294     /// 
00295     /// \param geometry 
00296     /// Input Source geometry
00297     /// 
00298     /// \return
00299     /// Returns an envelope
00300     /// 
00301     NAMESPACE_OSGEO_GEOMETRY::IGeometry * CreateGeometry(NAMESPACE_OSGEO_GEOMETRY::IGeometry * geometry);
00302 
00303     /// \brief
00304     /// Creates a Geometry object by converting from a text string.
00305     /// 
00306     /// \remarks
00307     /// While this method is not pure virtual, its default implementation will
00308     /// throw an exception if called.  A concrete, derived class should override this
00309     /// method if conversion from text is required.
00310     /// 
00311     /// \param text 
00312     /// Input Source geometry text
00313     /// 
00314     /// \return
00315     /// Returns a Geometry
00316     /// 
00317     NAMESPACE_OSGEO_GEOMETRY::IGeometry * CreateGeometry(System::String* text);
00318 
00319     /// \brief
00320     /// Creates a Geometry object by converting from an envelope.
00321     /// 
00322     /// \remarks
00323     /// This method will produce a new Geometry 
00324     /// based on the given envelope.  The actual geometry type produced is implementation-dependent.
00325     /// 
00326     /// \param envelope 
00327     /// Input Source envelope
00328     /// 
00329     /// \return
00330     /// Returns a Geometry
00331     /// 
00332     NAMESPACE_OSGEO_GEOMETRY::IGeometry * CreateGeometry(NAMESPACE_OSGEO_GEOMETRY::IEnvelope * envelope);
00333 
00334     /// Point
00335 
00336     /// \brief
00337     /// Creates a point object by copying from a position.
00338     /// 
00339     /// \param position 
00340     /// Input position to copy
00341     /// 
00342     /// \return
00343     /// Returns a point
00344     /// 
00345     NAMESPACE_OSGEO_GEOMETRY::IPoint* CreatePoint(NAMESPACE_OSGEO_GEOMETRY::IDirectPosition* position);
00346 
00347     /// \brief
00348     /// Creates a point object by copying from an array of ordinates.
00349     /// 
00350     /// \param dimensionality 
00351     /// Input dimensionality of the ordinates (see Dimensionality)
00352     /// \param ordinates 
00353     /// Input ordinate array representing one position
00354     /// 
00355     /// \return
00356     /// Returns a point
00357     /// 
00358     NAMESPACE_OSGEO_GEOMETRY::IPoint* CreatePoint(System::Int32 dimensionality, System::Double ordinates __gc[]);
00359 
00360     /// LinearRing
00361 
00362     /// \brief
00363     /// Creates a LinearRing object by copying from a collection of positions.
00364     /// 
00365     /// \remarks
00366     /// The first and last positions must be equal.
00367     /// 
00368     /// \param positions 
00369     /// Input collection of positions to copy
00370     /// 
00371     /// \return
00372     /// Returns a LinearRing
00373     /// 
00374     NAMESPACE_OSGEO_GEOMETRY::ILinearRing* CreateLinearRing(NAMESPACE_OSGEO_GEOMETRY::DirectPositionCollection* positions);
00375 
00376     /// \brief
00377     /// Creates a LinearRing object by copying from an array of ordinates.
00378     /// 
00379     /// \remarks
00380     /// The ordinates representing the first and last positions must be equal.
00381     /// 
00382     /// \param dimensionality 
00383     /// Input dimensionality of the ordinates (see Dimensionality)
00384     /// \param ordinateNumber 
00385     /// Input total number of ordinates in the array
00386     /// \param ordinates 
00387     /// Input ordinate array representing positions
00388     /// 
00389     /// \return
00390     /// Returns a LinearRing
00391     /// 
00392     NAMESPACE_OSGEO_GEOMETRY::ILinearRing* CreateLinearRing(
00393         System::Int32 dimensionality, 
00394         System::Int32 ordinateNumber,
00395         System::Double ordinates __gc []);
00396 
00397     /// LineStringSegment
00398 
00399     /// \brief
00400     /// Creates a LineStringSegment object by copying from a collection of positions.
00401     /// 
00402     /// \param positions 
00403     /// Input collection of positions to copy
00404     /// 
00405     /// \return
00406     /// Returns a LineStringSegment
00407     /// 
00408     NAMESPACE_OSGEO_GEOMETRY::ILineStringSegment* CreateLineStringSegment(NAMESPACE_OSGEO_GEOMETRY::DirectPositionCollection* positions);
00409 
00410     /// \brief
00411     /// Creates a LineStringSegment object by copying from an array of ordinates.
00412     /// 
00413     /// \param dimType 
00414     /// Input dimensionality of the ordinates (see Dimensionality)
00415     /// \param ordinateNumber 
00416     /// Input total number of ordinates in the array
00417     /// \param ordinates 
00418     /// Input ordinate array representing positions
00419     /// 
00420     /// \return
00421     /// Returns a LineStringSegment
00422     /// 
00423     NAMESPACE_OSGEO_GEOMETRY::ILineStringSegment* CreateLineStringSegment(
00424         System::Int32 dimType,
00425         System::Int32 ordinateNumber,
00426         System::Double ordinates __gc []);
00427 
00428     /// Polygon
00429 
00430     /// \brief
00431     /// Creates a polygon object by copying from given LinearRing objects.
00432     /// 
00433     /// \param exteriorRing 
00434     /// Input exterior ring to copy
00435     /// \param interiorRings 
00436     /// Input collection of interior rings to copy
00437     /// 
00438     /// \return
00439     /// Returns a polygon
00440     /// 
00441     NAMESPACE_OSGEO_GEOMETRY::IPolygon* CreatePolygon(
00442         NAMESPACE_OSGEO_GEOMETRY::ILinearRing* exteriorRing, 
00443         NAMESPACE_OSGEO_GEOMETRY::LinearRingCollection* interiorRings);
00444 
00445     /// MultiPoint
00446 
00447     /// \brief
00448     /// Creates a MultiPoint object by copying from a collection of point objects.
00449     /// 
00450     /// \param points 
00451     /// Input collection of point objects to copy
00452     /// 
00453     /// \return
00454     /// Returns a MultiPoint
00455     /// 
00456     NAMESPACE_OSGEO_GEOMETRY::IMultiPoint* CreateMultiPoint(NAMESPACE_OSGEO_GEOMETRY::PointCollection* points);
00457 
00458     /// \brief
00459     /// Creates a MultiPoint object by copying from an array of ordinates.
00460     /// 
00461     /// \param dimensionality 
00462     /// Input dimensionality of the ordinates (see Dimensionality)
00463     /// \param ordinateNumber 
00464     /// Input total number of ordinates in the array
00465     /// \param ordinates 
00466     /// Input ordinate array representing positions
00467     /// 
00468     /// \return
00469     /// Returns a MultiPoint
00470     /// 
00471     NAMESPACE_OSGEO_GEOMETRY::IMultiPoint* CreateMultiPoint(
00472         System::Int32 dimensionality,
00473         System::Int32 ordinateNumber, 
00474         System::Double ordinates __gc[]);
00475 
00476     /// MultiLineString
00477 
00478     /// \brief
00479     /// Creates a MultiLineString object by copying from a collection of LineString objects.
00480     /// 
00481     /// \param lineStrings 
00482     /// Input collection of LineString objects to copy
00483     /// 
00484     /// \return
00485     /// Returns a MultiLineString
00486     /// 
00487     NAMESPACE_OSGEO_GEOMETRY::IMultiLineString* CreateMultiLineString(NAMESPACE_OSGEO_GEOMETRY::LineStringCollection* lineStrings);
00488 
00489     //MultiPolygon
00490 
00491     /// \brief
00492     /// Creates a MultiPolygon object by copying from a collection of polygon objects.
00493     /// 
00494     /// \param polygons 
00495     /// Input collection of polygon objects to copy
00496     /// 
00497     /// \return
00498     /// Returns a MultiPolygon
00499     /// 
00500     NAMESPACE_OSGEO_GEOMETRY::IMultiPolygon* CreateMultiPolygon(NAMESPACE_OSGEO_GEOMETRY::PolygonCollection* polygons);
00501 
00502     /// CircularArcSegment
00503 
00504     /// \brief
00505     /// Creates a CircularArcSegment object by copying from three points on the arc.
00506     /// 
00507     /// \param startPosition 
00508     /// Input starting position of the arc
00509     /// \param midPosition 
00510     /// Input a position on the arc, and not equal to the starting or ending positions
00511     /// \param endPosition 
00512     /// Input ending position of the arc
00513     /// 
00514     /// \return
00515     /// Returns a CircularArcSegment
00516     /// 
00517     NAMESPACE_OSGEO_GEOMETRY::ICircularArcSegment* CreateCircularArcSegment(
00518         NAMESPACE_OSGEO_GEOMETRY::IDirectPosition* startPosition,
00519         NAMESPACE_OSGEO_GEOMETRY::IDirectPosition* midPosition,
00520         NAMESPACE_OSGEO_GEOMETRY::IDirectPosition* endPosition);
00521 
00522     /// CurveString
00523 
00524     /// \brief
00525     /// Creates a CurveString object by copying from a collection of CurveSegment objects.
00526     /// 
00527     /// \param curveSegments 
00528     /// Input collection of CurveSegment objects to copy
00529     /// 
00530     /// \return
00531     /// Returns a CurveString
00532     /// 
00533     NAMESPACE_OSGEO_GEOMETRY::ICurveString* CreateCurveString(NAMESPACE_OSGEO_GEOMETRY::CurveSegmentCollection* curveSegments);
00534 
00535     /// MultiCurveString
00536 
00537     /// \brief
00538     /// Creates an MultiCurveString object by copying from a collection of CurveString objects.
00539     /// 
00540     /// \param curveStrings 
00541     /// Input collection of CurveString objects to copy
00542     /// 
00543     /// \return
00544     /// Returns a MultiCurveString
00545     /// 
00546     NAMESPACE_OSGEO_GEOMETRY::IMultiCurveString* CreateMultiCurveString(NAMESPACE_OSGEO_GEOMETRY::CurveStringCollection* curveStrings);
00547 
00548     /// Ring
00549 
00550     /// \brief
00551     /// Creates a ring object by copying from a collection of CurveSegment objects.
00552     /// 
00553     /// \param curveSegments 
00554     /// Input collection of CurveSegment objects to copy
00555     /// 
00556     /// \return
00557     /// Returns a ring
00558     /// 
00559     NAMESPACE_OSGEO_GEOMETRY::IRing* CreateRing(
00560         NAMESPACE_OSGEO_GEOMETRY::CurveSegmentCollection* curveSegments);
00561 
00562     /// CurvePolygon
00563 
00564     /// \brief
00565     /// Creates a CurvePolygon object by copying from given ring objects.
00566     /// 
00567     /// \param exteriorRing 
00568     /// Input exterior ring to copy
00569     /// \param interiorRings 
00570     /// Input collection of interior rings to copy
00571     /// 
00572     /// \return
00573     /// Returns a CurvePolygon
00574     /// 
00575     NAMESPACE_OSGEO_GEOMETRY::ICurvePolygon* CreateCurvePolygon(
00576         NAMESPACE_OSGEO_GEOMETRY::IRing* exteriorRing,
00577         NAMESPACE_OSGEO_GEOMETRY::RingCollection* interiorRings);
00578 
00579     /// MultiCurvePolygon
00580 
00581     /// \brief
00582     /// Creates a MultiCurvePolygon object by copying from a collection of CurvePolygon objects.
00583     /// 
00584     /// \param curvePolygons 
00585     /// Input collection of CurvePolygon objects to copy
00586     /// 
00587     /// \return
00588     /// Returns a MultiCurvePolygon
00589     /// 
00590     NAMESPACE_OSGEO_GEOMETRY::IMultiCurvePolygon* CreateMultiCurvePolygon(NAMESPACE_OSGEO_GEOMETRY::CurvePolygonCollection* curvePolygons);
00591 
00592     /// MultiGeometry
00593 
00594     /// \brief
00595     /// Creates a MultiGeometry object by copying from a collection of Geometry objects.
00596     /// 
00597     /// \param geometries 
00598     /// Input collection of Geometry objects to copy
00599     /// 
00600     /// \return
00601     /// Returns a MultiGeometry
00602     /// 
00603     NAMESPACE_OSGEO_GEOMETRY::IMultiGeometry* CreateMultiGeometry(NAMESPACE_OSGEO_GEOMETRY::GeometryCollection* geometries);
00604 };
00605 
00606 END_NAMESPACE_OSGEO_GEOMETRY
00607 
00608 

Comments or suggestions? Send us feedback.