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 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. |