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