OGR
ogrmutexeddatasource.h
1 /******************************************************************************
2  * $Id: ogrmutexeddatasource.h 36501 2016-11-25 14:09:24Z rouault $
3  *
4  * Project: OpenGIS Simple Features Reference Implementation
5  * Purpose: Defines OGRLMutexedDataSource class
6  * Author: Even Rouault, even dot rouault at mines dash paris dot org
7  *
8  ******************************************************************************
9  * Copyright (c) 2013, Even Rouault <even dot rouault at mines-paris dot org>
10  *
11  * Permission is hereby granted, free of charge, to any person obtaining a
12  * copy of this software and associated documentation files (the "Software"),
13  * to deal in the Software without restriction, including without limitation
14  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
15  * and/or sell copies of the Software, and to permit persons to whom the
16  * Software is furnished to do so, subject to the following conditions:
17  *
18  * The above copyright notice and this permission notice shall be included
19  * in all copies or substantial portions of the Software.
20  *
21  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
22  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
24  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
26  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
27  * DEALINGS IN THE SOFTWARE.
28  ****************************************************************************/
29 
30 #ifndef OGRMUTEXEDDATASOURCELAYER_H_INCLUDED
31 #define OGRMUTEXEDDATASOURCELAYER_H_INCLUDED
32 
33 #ifndef DOXYGEN_SKIP
34 
35 #include "ogrsf_frmts.h"
36 #include "cpl_multiproc.h"
37 #include "ogrmutexedlayer.h"
38 #include <map>
39 
47 class CPL_DLL OGRMutexedDataSource : public OGRDataSource
48 {
49  protected:
50  OGRDataSource *m_poBaseDataSource;
51  int m_bHasOwnership;
52  CPLMutex *m_hGlobalMutex;
53  int m_bWrapLayersInMutexedLayer;
54  std::map<OGRLayer*, OGRMutexedLayer* > m_oMapLayers;
55  std::map<OGRMutexedLayer*, OGRLayer* > m_oReverseMapLayers;
56 
57  OGRLayer* WrapLayerIfNecessary(OGRLayer* poLayer);
58 
59  public:
60 
61  /* The construction of the object isn't protected by the mutex */
62  OGRMutexedDataSource(OGRDataSource* poBaseDataSource,
63  int bTakeOwnership,
64  CPLMutex* hMutexIn,
65  int bWrapLayersInMutexedLayer);
66 
67  /* The destruction of the object isn't protected by the mutex */
68  virtual ~OGRMutexedDataSource();
69 
70  OGRDataSource* GetBaseDataSource() { return m_poBaseDataSource; }
71 
72  virtual const char *GetName() override;
73 
74  virtual int GetLayerCount() override ;
75  virtual OGRLayer *GetLayer(int) override;
76  virtual OGRLayer *GetLayerByName(const char *) override;
77  virtual OGRErr DeleteLayer(int) override;
78 
79  virtual int TestCapability( const char * ) override;
80 
81  virtual OGRLayer *ICreateLayer( const char *pszName,
82  OGRSpatialReference *poSpatialRef = NULL,
84  char ** papszOptions = NULL ) override;
85  virtual OGRLayer *CopyLayer( OGRLayer *poSrcLayer,
86  const char *pszNewName,
87  char **papszOptions = NULL ) override;
88 
89  virtual OGRStyleTable *GetStyleTable() override;
90  virtual void SetStyleTableDirectly( OGRStyleTable *poStyleTable ) override;
91 
92  virtual void SetStyleTable(OGRStyleTable *poStyleTable) override;
93 
94  virtual OGRLayer * ExecuteSQL( const char *pszStatement,
95  OGRGeometry *poSpatialFilter,
96  const char *pszDialect ) override;
97  virtual void ReleaseResultSet( OGRLayer * poResultsSet ) override;
98 
99  virtual void FlushCache() override;
100 
101  virtual OGRErr StartTransaction(int bForce=FALSE) override;
102  virtual OGRErr CommitTransaction() override;
103  virtual OGRErr RollbackTransaction() override;
104 
105  virtual char **GetMetadata( const char * pszDomain = "" ) override;
106  virtual CPLErr SetMetadata( char ** papszMetadata,
107  const char * pszDomain = "" ) override;
108  virtual const char *GetMetadataItem( const char * pszName,
109  const char * pszDomain = "" ) override;
110  virtual CPLErr SetMetadataItem( const char * pszName,
111  const char * pszValue,
112  const char * pszDomain = "" ) override;
113 };
114 
115 #endif /* #ifndef DOXYGEN_SKIP */
116 
117 #endif // OGRMUTEXEDDATASOURCELAYER_H_INCLUDED
OGRSimpleCurve::setPoint
void setPoint(int, OGRPoint *)
Set the location of a vertex in line string.
Definition: ogrlinestring.cpp:506
OGRSimpleCurve::WkbSize
virtual int WkbSize() const CPL_OVERRIDE
Returns size of related binary representation.
Definition: ogrlinestring.cpp:195
OGRGeometry::Is3D
OGRBoolean Is3D() const
Definition: ogr_geometry.h:185
CPL_LSBWORD32
#define CPL_LSBWORD32(x)
Definition: cpl_port.h:879
OGRGeometry::IsEmpty
virtual OGRBoolean IsEmpty() const =0
Returns TRUE (non-zero) if the object has no points.
OGRLineString::getGeometryType
virtual OGRwkbGeometryType getGeometryType() const CPL_OVERRIDE
Fetch geometry type.
Definition: ogrlinestring.cpp:2667
OGRMultiCurve
Definition: ogr_geometry.h:1650
OGRGeometryCollection::addGeometryDirectly
virtual OGRErr addGeometryDirectly(OGRGeometry *)
Add a geometry directly to the container.
Definition: ogrgeometrycollection.cpp:373
OGRCurve::CastToLineString
static OGRLineString * CastToLineString(OGRCurve *poCurve)
Cast to linestring.
Definition: ogrcurve.cpp:355
OGRSimpleCurve::getX
double getX(int i) const
Get X at vertex.
Definition: ogr_geometry.h:554
OGRCurve::get_AreaOfCurveSegments
virtual double get_AreaOfCurveSegments() const =0
Get the area of the purely curve portions of a (closed) curve.
CPL_SWAP32
#define CPL_SWAP32(x)
Definition: cpl_port.h:772
OGRLinearRing::WkbSize
virtual int WkbSize() const CPL_OVERRIDE
Returns size of related binary representation.
Definition: ogrlinearring.cpp:142
OGRLineString
Definition: ogr_geometry.h:623
OGRSimpleCurve::setNumPoints
void setNumPoints(int nNewPointCount, int bZeroizeNewContent=TRUE)
Set number of points in geometry.
Definition: ogrlinestring.cpp:422
OGRSimpleCurve::Project
virtual double Project(const OGRPoint *) const
Project point on linestring.
Definition: ogrlinestring.cpp:2010
OGRSimpleCurve::getSubLine
virtual OGRLineString * getSubLine(double, double, int) const
Get the portion of linestring.
Definition: ogrlinestring.cpp:2064
OGRMultiPolygon
Definition: ogr_geometry.h:1435
OGRSimpleCurve::getPoint
void getPoint(int, OGRPoint *) const
Fetch a point in line string.
Definition: ogrlinestring.cpp:300
OGRERR_UNSUPPORTED_GEOMETRY_TYPE
#define OGRERR_UNSUPPORTED_GEOMETRY_TYPE
Definition: ogr_core.h:290
OGRGeometry::getCoordinateDimension
virtual int getCoordinateDimension() const
Get the dimension of the coordinates in this object.
Definition: ogrgeometry.cpp:879
OGRSimpleCurve::transform
virtual OGRErr transform(OGRCoordinateTransformation *poCT) CPL_OVERRIDE
Apply arbitrary coordinate transformation to geometry.
Definition: ogrlinestring.cpp:2341
wkbMultiCurveZM
@ wkbMultiCurveZM
Definition: ogr_core.h:386
OGRSimpleCurve::get_LinearArea
virtual double get_LinearArea() const
Compute area of ring / closed linestring.
Definition: ogrlinestring.cpp:2723
OGRPointIterator
Definition: ogr_geometry.h:415
OGRMultiCurve::CastToMultiLineString
static OGRMultiLineString * CastToMultiLineString(OGRMultiCurve *poMC)
Cast to multi line string.
Definition: ogrmulticurve.cpp:219
OGRMultiPolygon::exportToWkt
virtual OGRErr exportToWkt(char **, OGRwkbVariant=wkbVariantOldOgc) const CPL_OVERRIDE
Convert a geometry into well known text format.
Definition: ogrmultipolygon.cpp:135
cpl_error.h
wkbMultiLineStringZM
@ wkbMultiLineStringZM
Definition: ogr_core.h:380
OGRGeometry::getGeometryType
virtual OGRwkbGeometryType getGeometryType() const =0
Fetch geometry type.
OGRSimpleCurve::setPointM
void setPointM(int, double, double, double)
Set the location of a vertex in line string.
Definition: ogrlinestring.cpp:579
wkbPoint
@ wkbPoint
Definition: ogr_core.h:316
CPLString::Printf
CPLString & Printf(const char *pszFormat,...)
Definition: cplstring.cpp:59
OGRPoint::setM
void setM(double mIn)
Definition: ogr_geometry.h:388
OGRLineString::getGeometryName
virtual const char * getGeometryName() const CPL_OVERRIDE
Fetch WKT name for geometry type.
Definition: ogrlinestring.cpp:2684
CPL_SWAPDOUBLE
#define CPL_SWAPDOUBLE(p)
Definition: cpl_port.h:860
wkbMultiSurfaceZM
@ wkbMultiSurfaceZM
Definition: ogr_core.h:387
OGRMultiSurface::exportToWkt
virtual OGRErr exportToWkt(char **, OGRwkbVariant=wkbVariantOldOgc) const CPL_OVERRIDE
Convert a geometry into well known text format.
Definition: ogrmultisurface.cpp:267
VSI_REALLOC_VERBOSE
#define VSI_REALLOC_VERBOSE(pOldPtr, nNewSize)
Definition: cpl_vsi.h:274
OGRStyleTable
Definition: ogr_featurestyle.h:83
OGRLinearRing::getGeometryName
virtual const char * getGeometryName() const CPL_OVERRIDE
Fetch WKT name for geometry type.
Definition: ogrlinearring.cpp:130
OGRGeometry::set3D
virtual void set3D(OGRBoolean bIs3D)
Add or remove the Z coordinate dimension.
Definition: ogrgeometry.cpp:1045
wkbMultiSurfaceM
@ wkbMultiSurfaceM
Definition: ogr_core.h:369
OGRMultiPolygon::CastToMultiSurface
static OGRMultiSurface * CastToMultiSurface(OGRMultiPolygon *poMP)
Cast to multisurface.
Definition: ogrmultipolygon.cpp:174
OGRMultiCurve::getGeometryType
virtual OGRwkbGeometryType getGeometryType() const CPL_OVERRIDE
Fetch geometry type.
Definition: ogrmulticurve.cpp:100
OGRGeometryCollection::getNumGeometries
int getNumGeometries() const
Fetch number of geometries in container.
Definition: ogrgeometrycollection.cpp:250
wkbMultiPolygon
@ wkbMultiPolygon
Definition: ogr_core.h:324
OGRSimpleCurve::setMeasured
virtual void setMeasured(OGRBoolean bIsMeasured) CPL_OVERRIDE
Add or remove the M coordinate dimension.
Definition: ogrlinestring.cpp:179
wkbMultiPoint25D
@ wkbMultiPoint25D
Definition: ogr_core.h:397
wkbNDR
@ wkbNDR
Definition: ogr_core.h:482
OGRGeometryCollection
Definition: ogr_geometry.h:1295
OGRPoint::IsEmpty
virtual OGRBoolean IsEmpty() const CPL_OVERRIDE
Returns TRUE (non-zero) if the object has no points.
Definition: ogr_geometry.h:357
cpl_vsi.h
OGRCoordinateTransformation::GetTargetCS
virtual OGRSpatialReference * GetTargetCS()=0
OGRSpatialReference
Definition: ogr_spatialref.h:132
OGRGeometryCollection::getGeometryRef
OGRGeometry * getGeometryRef(int)
Fetch geometry from container.
Definition: ogrgeometrycollection.cpp:275
OGRMultiSurface::getDimension
virtual int getDimension() const CPL_OVERRIDE
Get the dimension of this object.
Definition: ogrmultisurface.cpp:118
OGRMultiPoint::getDimension
virtual int getDimension() const CPL_OVERRIDE
Get the dimension of this object.
Definition: ogrmultipoint.cpp:121
OGRLinearRing::clone
virtual OGRGeometry * clone() const CPL_OVERRIDE
Make a copy of this object.
Definition: ogrlinearring.cpp:408
wkbVariantPostGIS1
@ wkbVariantPostGIS1
Definition: ogr_core.h:422
OGRMultiLineString::OGRMultiLineString
OGRMultiLineString()
Create an empty multi line string collection.
Definition: ogrmultilinestring.cpp:49
OGRCoordinateTransformation::TransformEx
virtual int TransformEx(int nCount, double *x, double *y, double *z=NULL, int *pabSuccess=NULL)=0
OGRGeometry
Definition: ogr_geometry.h:118
OGRSimpleCurve::getM
double getM(int i) const
Get measure at vertex.
Definition: ogrlinestring.cpp:394
OGRLinearRing::reverseWindingOrder
virtual void reverseWindingOrder()
Definition: ogrlinearring.cpp:542
OGRMultiPoint
Definition: ogr_geometry.h:1609
OGRSimpleCurve::empty
virtual void empty() CPL_OVERRIDE
Clear geometry information. This restores the geometry to it's initial state after construction,...
Definition: ogrlinestring.cpp:150
OGRMultiPoint::importFromWkt
virtual OGRErr importFromWkt(char **) CPL_OVERRIDE
Assign geometry from well known text data.
Definition: ogrmultipoint.cpp:256
OGRSimpleCurve::IsEmpty
virtual OGRBoolean IsEmpty() const CPL_OVERRIDE
Returns TRUE (non-zero) if the object has no points.
Definition: ogrlinestring.cpp:2453
OGRGeometry::getGeometryName
virtual const char * getGeometryName() const =0
Fetch WKT name for geometry type.
OGRLayer
Definition: ogrsf_frmts.h:68
CPLString
Convenient string class based on std::string.
Definition: cpl_string.h:338
OGRLinearRing::importFromWkb
virtual OGRErr importFromWkb(unsigned char *, int=-1, OGRwkbVariant=wkbVariantOldOgc) CPL_OVERRIDE
Assign geometry from well known binary data.
Definition: ogrlinearring.cpp:154
wkbMultiPolygonZM
@ wkbMultiPolygonZM
Definition: ogr_core.h:381
OGRMultiSurface
Definition: ogr_geometry.h:1394
OGRPoint
Definition: ogr_geometry.h:322
ogr_geometry.h
OGRMultiPolygon::hasCurveGeometry
virtual OGRBoolean hasCurveGeometry(int bLookForNonLinear=FALSE) const CPL_OVERRIDE
Returns if this geometry is or has curve geometry.
Definition: ogrmultipolygon.cpp:147
OGRSimpleCurve::getY
double getY(int i) const
Get Y at vertex.
Definition: ogr_geometry.h:555
OGRMultiSurface::getGeometryName
virtual const char * getGeometryName() const CPL_OVERRIDE
Fetch WKT name for geometry type.
Definition: ogrmultisurface.cpp:128
OGRSimpleCurve::importFromWkt
virtual OGRErr importFromWkt(char **) CPL_OVERRIDE
Assign geometry from well known text data.
Definition: ogrlinestring.cpp:1678
OGRGeometry::operator=
OGRGeometry & operator=(const OGRGeometry &other)
Assignment operator.
Definition: ogrgeometry.cpp:141
CPLRealloc
void * CPLRealloc(void *, size_t)
Definition: cpl_conv.cpp:215
OGRGeometryCollection::setMeasured
virtual void setMeasured(OGRBoolean bIsMeasured) CPL_OVERRIDE
Add or remove the M coordinate dimension.
Definition: ogrgeometrycollection.cpp:1127
EQUAL
#define EQUAL(a, b)
Definition: cpl_port.h:622
OGRSimpleCurve::exportToWkb
virtual OGRErr exportToWkb(OGRwkbByteOrder, unsigned char *, OGRwkbVariant=wkbVariantOldOgc) const CPL_OVERRIDE
Convert a geometry into well known binary format.
Definition: ogrlinestring.cpp:1584
OGRMultiLineString::getGeometryType
virtual OGRwkbGeometryType getGeometryType() const CPL_OVERRIDE
Fetch geometry type.
Definition: ogrmultilinestring.cpp:101
OGRBoolean
int OGRBoolean
Definition: ogr_core.h:301
OGRGeometryCollection::IsEmpty
virtual OGRBoolean IsEmpty() const CPL_OVERRIDE
Returns TRUE (non-zero) if the object has no points.
Definition: ogrgeometrycollection.cpp:1249
wkbMultiPointZM
@ wkbMultiPointZM
Definition: ogr_core.h:379
OGRRawPoint::x
double x
Definition: ogr_geometry.h:57
OGRPoint::setX
void setX(double xIn)
Assign point X coordinate.
Definition: ogr_geometry.h:375
OGR_GT_IsSurface
int OGR_GT_IsSurface(OGRwkbGeometryType)
Return if a geometry type is an instance of Surface.
Definition: ogrgeometry.cpp:6682
OGRLineString::CurveToLine
virtual OGRLineString * CurveToLine(double dfMaxAngleStepSizeDegrees=0, const char *const *papszOptions=NULL) const CPL_OVERRIDE
Return a linestring from a curve geometry.
Definition: ogrlinestring.cpp:2694
OGRSimpleCurve::flattenTo2D
virtual void flattenTo2D() CPL_OVERRIDE
Convert geometry to strictly 2D. In a sense this converts all Z coordinates to 0.0.
Definition: ogrlinestring.cpp:115
wkbFlatten
#define wkbFlatten(x)
Definition: ogr_core.h:431
OGRSimpleCurvePointIterator
Definition: ogrlinestring.cpp:2573
CPL_SWAP64PTR
#define CPL_SWAP64PTR(x)
Definition: cpl_port.h:814
wkbLineStringZM
@ wkbLineStringZM
Definition: ogr_core.h:377
OGRLinearRing::isPointOnRingBoundary
OGRBoolean isPointOnRingBoundary(const OGRPoint *pt, int bTestEnvelope=TRUE) const
Definition: ogrlinearring.cpp:665
CPLAssert
#define CPLAssert(expr)
Definition: cpl_error.h:182
OGRRawPoint
Definition: ogr_geometry.h:47
OGRMultiLineString
Definition: ogr_geometry.h:1692
OGRMultiLineString::operator=
OGRMultiLineString & operator=(const OGRMultiLineString &other)
Assignment operator.
Definition: ogrmultilinestring.cpp:88
OGRSimpleCurve::EndPoint
virtual void EndPoint(OGRPoint *) const CPL_OVERRIDE
Return the curve end point.
Definition: ogrlinestring.cpp:1925
OGRGeometry::clone
virtual OGRGeometry * clone() const CPL_WARN_UNUSED_RESULT=0
Make a copy of this object.
OGRMultiPoint::operator=
OGRMultiPoint & operator=(const OGRMultiPoint &other)
Assignment operator.
Definition: ogrmultipoint.cpp:91
OGRMultiPoint::hasCurveGeometry
virtual OGRBoolean hasCurveGeometry(int bLookForNonLinear=FALSE) const CPL_OVERRIDE
Returns if this geometry is or has curve geometry.
Definition: ogrmultipoint.cpp:493
OGRMultiSurface::OGRMultiSurface
OGRMultiSurface()
Create an empty multi surface collection.
Definition: ogrmultisurface.cpp:50
OGRGeometry::exportToGEOS
virtual GEOSGeom exportToGEOS(GEOSContextHandle_t hGEOSCtxt) const CPL_WARN_UNUSED_RESULT
Definition: ogrgeometry.cpp:2907
OGRMultiPolygon::operator=
OGRMultiPolygon & operator=(const OGRMultiPolygon &other)
Assignment operator.
Definition: ogrmultipolygon.cpp:85
OGRGeometryFactory::curveFromLineString
static OGRCurve * curveFromLineString(const OGRLineString *poLS, const char *const *papszOptions=NULL)
Try to convert a linestring approximating curves into a curve.
Definition: ogrgeometryfactory.cpp:5519
OGRSurface
Definition: ogr_geometry.h:1017
CPLTestBool
bool CPLTestBool(const char *pszValue)
Definition: cpl_string.cpp:1522
OGRSimpleCurve::operator=
OGRSimpleCurve & operator=(const OGRSimpleCurve &other)
Assignment operator.
Definition: ogrlinestring.cpp:99
OGRMultiLineString::hasCurveGeometry
virtual OGRBoolean hasCurveGeometry(int bLookForNonLinear=FALSE) const CPL_OVERRIDE
Returns if this geometry is or has curve geometry.
Definition: ogrmultilinestring.cpp:149
OGRwkbByteOrder
OGRwkbByteOrder
Definition: ogr_core.h:479
OGRGeometryCollection::set3D
virtual void set3D(OGRBoolean bIs3D) CPL_OVERRIDE
Add or remove the Z coordinate dimension.
Definition: ogrgeometrycollection.cpp:1117
OGRERR_UNSUPPORTED_OPERATION
#define OGRERR_UNSUPPORTED_OPERATION
Definition: ogr_core.h:291
OGRGeometryFactory::createGeometry
static OGRGeometry * createGeometry(OGRwkbGeometryType)
Create an empty geometry of desired type.
Definition: ogrgeometryfactory.cpp:442
OGRLineString::OGRLineString
OGRLineString()
Create an empty line string.
Definition: ogrlinestring.cpp:2616
OGRLinearRing::transform
virtual OGRErr transform(OGRCoordinateTransformation *poCT) CPL_OVERRIDE
Apply arbitrary coordinate transformation to geometry.
Definition: ogrlinearring.cpp:734
wkbLineStringM
@ wkbLineStringM
Definition: ogr_core.h:359
OGRGeometryCollection::operator=
OGRGeometryCollection & operator=(const OGRGeometryCollection &other)
Assignment operator.
Definition: ogrgeometrycollection.cpp:110
OGRSimpleCurve::setPointsM
void setPointsM(int, OGRRawPoint *, double *)
Assign all points in a line string.
Definition: ogrlinestring.cpp:874
OGRERR_FAILURE
#define OGRERR_FAILURE
Definition: ogr_core.h:293
CPL_MSBWORD32
#define CPL_MSBWORD32(x)
Definition: cpl_port.h:881
OGRSimpleCurve::setZ
void setZ(int, double)
Set the Z of a vertex in line string.
Definition: ogrlinestring.cpp:699
OGRMultiCurve::OGRMultiCurve
OGRMultiCurve()
Create an empty multi curve collection.
Definition: ogrmulticurve.cpp:49
wkbMultiPolygon25D
@ wkbMultiPolygon25D
Definition: ogr_core.h:399
wkbMultiSurface
@ wkbMultiSurface
Definition: ogr_core.h:335
OGRERR_NOT_ENOUGH_MEMORY
#define OGRERR_NOT_ENOUGH_MEMORY
Definition: ogr_core.h:289
ogrsf_frmts.h
OGRMultiCurve::getGeometryName
virtual const char * getGeometryName() const CPL_OVERRIDE
Fetch WKT name for geometry type.
Definition: ogrmulticurve.cpp:127
OGRSimpleCurve::Equals
virtual OGRBoolean Equals(OGRGeometry *) const CPL_OVERRIDE
Returns TRUE if two geometries are equivalent.
Definition: ogrlinestring.cpp:2308
wkbMultiPointM
@ wkbMultiPointM
Definition: ogr_core.h:361
CPLDebug
void CPLDebug(const char *, const char *,...)
Definition: cpl_error.cpp:492
OGRGeometry::CoordinateDimension
int CoordinateDimension() const
Get the dimension of the coordinates in this object.
Definition: ogrgeometry.cpp:898
OGRMultiSurface::CastToMultiPolygon
static OGRMultiPolygon * CastToMultiPolygon(OGRMultiSurface *poMS)
Cast to multipolygon.
Definition: ogrmultisurface.cpp:323
OGRPoint::empty
virtual void empty() CPL_OVERRIDE
Clear geometry information. This restores the geometry to it's initial state after construction,...
Definition: ogrpoint.cpp:198
OGRMultiCurve::exportToWkt
virtual OGRErr exportToWkt(char **, OGRwkbVariant=wkbVariantOldOgc) const CPL_OVERRIDE
Convert a geometry into well known text format.
Definition: ogrmulticurve.cpp:182
wkbVariantIso
@ wkbVariantIso
Definition: ogr_core.h:421
OGRSimpleCurve::set3D
virtual void set3D(OGRBoolean bIs3D) CPL_OVERRIDE
Add or remove the Z coordinate dimension.
Definition: ogrlinestring.cpp:170
OGRSimpleCurve::getNumPoints
virtual int getNumPoints() const CPL_OVERRIDE
Fetch vertex count.
Definition: ogr_geometry.h:552
OGR_GT_IsCurve
int OGR_GT_IsCurve(OGRwkbGeometryType)
Return if a geometry type is an instance of Curve.
Definition: ogrgeometry.cpp:6661
OGRSimpleCurve::getPoints
void getPoints(OGRRawPoint *, double *=NULL) const
Returns all points of line string.
Definition: ogrlinestring.cpp:1193
OGRSimpleCurve::addSubLineString
void addSubLineString(const OGRLineString *, int nStartVertex=0, int nEndVertex=-1)
Add a segment of another linestring to this one.
Definition: ogrlinestring.cpp:1385
OGRSimpleCurve::addPoint
void addPoint(const OGRPoint *)
Add a point to a line string.
Definition: ogrlinestring.cpp:763
OGRGeometry::assignSpatialReference
void assignSpatialReference(OGRSpatialReference *poSR)
Assign spatial reference to this object.
Definition: ogrgeometry.cpp:450
OGRSimpleCurve::clone
virtual OGRGeometry * clone() const CPL_OVERRIDE
Make a copy of this object.
Definition: ogrlinestring.cpp:126
cpl_conv.h
wkbPolygon
@ wkbPolygon
Definition: ogr_core.h:319
wkbMultiCurveM
@ wkbMultiCurveM
Definition: ogr_core.h:368
wkbMultiLineString25D
@ wkbMultiLineString25D
Definition: ogr_core.h:398
OGRGeometry::getSpatialReference
OGRSpatialReference * getSpatialReference(void) const
Returns spatial reference system for object.
Definition: ogr_geometry.h:238
OGRSimpleCurve::get_Length
virtual double get_Length() const CPL_OVERRIDE
Returns the length of the curve.
Definition: ogrlinestring.cpp:1895
OGRLineString::CastToLinearRing
static OGRLinearRing * CastToLinearRing(OGRLineString *poLS)
Cast to linear ring.
Definition: ogrlinestring.cpp:2789
OGRMultiLineString::isCompatibleSubType
virtual OGRBoolean isCompatibleSubType(OGRwkbGeometryType) const CPL_OVERRIDE
Definition: ogrmultilinestring.cpp:129
VSI_CALLOC_VERBOSE
#define VSI_CALLOC_VERBOSE(nCount, nSize)
Definition: cpl_vsi.h:269
OGRDataSource
Definition: ogrsf_frmts.h:247
OGRSimpleCurve
Definition: ogr_geometry.h:491
OGRLinearRing::isPointInRing
OGRBoolean isPointInRing(const OGRPoint *pt, int bTestEnvelope=TRUE) const
Definition: ogrlinearring.cpp:588
OGRMultiPoint::getGeometryName
virtual const char * getGeometryName() const CPL_OVERRIDE
Fetch WKT name for geometry type.
Definition: ogrmultipoint.cpp:131
OGRLinearRing::isClockwise
virtual int isClockwise() const
Returns TRUE if the ring has clockwise winding (or less than 2 points)
Definition: ogrlinearring.cpp:441
CPLError
void CPLError(CPLErr eErrClass, CPLErrorNum err_no, const char *fmt,...)
Definition: cpl_error.cpp:215
OGRGeometryFactory::createFromWkt
static OGRErr createFromWkt(char **, OGRSpatialReference *, OGRGeometry **)
Create a geometry object of the appropriate type from it's well known text representation.
Definition: ogrgeometryfactory.cpp:270
OGRSimpleCurvePointIterator::getNextPoint
virtual OGRBoolean getNextPoint(OGRPoint *p) override
Returns the next point followed by the iterator.
Definition: ogrlinestring.cpp:2590
OGRMultiPolygon::getGeometryName
virtual const char * getGeometryName() const CPL_OVERRIDE
Fetch WKT name for geometry type.
Definition: ogrmultipolygon.cpp:115
OGRSimpleCurve::swapXY
virtual void swapXY() CPL_OVERRIDE
Swap x and y coordinates.
Definition: ogrlinestring.cpp:2561
CPLE_AssertionFailed
#define CPLE_AssertionFailed
Definition: cpl_error.h:112
VSIFree
void VSIFree(void *)
Definition: cpl_vsisimple.cpp:817
OGRSimpleCurve::setPoints
void setPoints(int, OGRRawPoint *, double *=NULL)
Assign all points in a line string.
Definition: ogrlinestring.cpp:985
CPLE_NotSupported
#define CPLE_NotSupported
Definition: cpl_error.h:110
OGRERR_NOT_ENOUGH_DATA
#define OGRERR_NOT_ENOUGH_DATA
Definition: ogr_core.h:288
GEOSGeom
struct GEOSGeom_t * GEOSGeom
Definition: ogr_geometry.h:63
OGRERR_CORRUPT_DATA
#define OGRERR_CORRUPT_DATA
Definition: ogr_core.h:292
OGRMultiPoint::exportToWkt
virtual OGRErr exportToWkt(char **, OGRwkbVariant=wkbVariantOldOgc) const CPL_OVERRIDE
Convert a geometry into well known text format.
Definition: ogrmultipoint.cpp:154
OGRCoordinateTransformation
Definition: ogr_spatialref.h:591
OGRSimpleCurve::Value
virtual void Value(double, OGRPoint *) const CPL_OVERRIDE
Fetch point at given distance along curve.
Definition: ogrlinestring.cpp:1937
OGRSimpleCurve::addPointM
void addPointM(double, double, double)
Add a point to a line string.
Definition: ogrlinestring.cpp:850
OGRSimpleCurve::getZ
double getZ(int i) const
Get Z at vertex.
Definition: ogrlinestring.cpp:368
OGRCurve::get_IsClosed
virtual int get_IsClosed() const
Return TRUE if curve is closed.
Definition: ogrcurve.cpp:97
OGRMultiSurface::hasCurveGeometry
virtual OGRBoolean hasCurveGeometry(int bLookForNonLinear=FALSE) const CPL_OVERRIDE
Returns if this geometry is or has curve geometry.
Definition: ogrmultisurface.cpp:278
OGRSimpleCurve::importFromWkb
virtual OGRErr importFromWkb(unsigned char *, int=-1, OGRwkbVariant=wkbVariantOldOgc) CPL_OVERRIDE
Assign geometry from well known binary data.
Definition: ogrlinestring.cpp:1474
OGRErr
int OGRErr
Definition: ogr_core.h:285
OGRGeometry::freeGEOSContext
static void freeGEOSContext(GEOSContextHandle_t hGEOSCtxt)
Definition: ogrgeometry.cpp:2887
OGRMultiSurface::operator=
OGRMultiSurface & operator=(const OGRMultiSurface &other)
Assignment operator.
Definition: ogrmultisurface.cpp:88
VSI_MALLOC_VERBOSE
#define VSI_MALLOC_VERBOSE(size)
Definition: cpl_vsi.h:254
OGRMultiSurface::getGeometryType
virtual OGRwkbGeometryType getGeometryType() const CPL_OVERRIDE
Fetch geometry type.
Definition: ogrmultisurface.cpp:101
OGRwkbGeometryType
OGRwkbGeometryType
Definition: ogr_core.h:312
OGRMultiPolygon::isCompatibleSubType
virtual OGRBoolean isCompatibleSubType(OGRwkbGeometryType) const CPL_OVERRIDE
Definition: ogrmultipolygon.cpp:126
CPL_UNUSED
#define CPL_UNUSED
Definition: cpl_port.h:1008
OGRMultiCurve::operator=
OGRMultiCurve & operator=(const OGRMultiCurve &other)
Assignment operator.
Definition: ogrmulticurve.cpp:87
OGRLinearRing::closeRings
virtual void closeRings() CPL_OVERRIDE
Force rings to be closed.
Definition: ogrlinearring.cpp:562
cpl_port.h
OGRPoint::setY
void setY(double yIn)
Assign point Y coordinate.
Definition: ogr_geometry.h:379
OGRMultiSurface::importFromWkt
virtual OGRErr importFromWkt(char **) CPL_OVERRIDE
Assign geometry from well known text data.
Definition: ogrmultisurface.cpp:150
OGRLinearRing::operator=
OGRLinearRing & operator=(const OGRLinearRing &other)
Assignment operator.
Definition: ogrlinearring.cpp:117
OGRMultiLineString::getGeometryName
virtual const char * getGeometryName() const CPL_OVERRIDE
Fetch WKT name for geometry type.
Definition: ogrmultilinestring.cpp:118
OGRLineString::get_Area
virtual double get_Area() const CPL_OVERRIDE
Get the area of the (closed) curve.
ogr_api.h
OGRSimpleCurve::getEnvelope
virtual void getEnvelope(OGREnvelope *psEnvelope) const CPL_OVERRIDE
Computes and returns the bounding envelope for this geometry in the passed psEnvelope structure.
Definition: ogrlinestring.cpp:2238
OGRPoint::getZ
double getZ() const
Fetch Z coordinate.
Definition: ogr_geometry.h:366
OGRPoint::setZ
void setZ(double zIn)
Assign point Z coordinate. Calling this method will force the geometry coordinate dimension to 3D (wk...
Definition: ogr_geometry.h:383
OGRGeometry::IsMeasured
OGRBoolean IsMeasured() const
Definition: ogr_geometry.h:187
OGRSimpleCurve::setM
void setM(int, double)
Set the M of a vertex in line string.
Definition: ogrlinestring.cpp:732
OGRCurve
Definition: ogr_geometry.h:433
OGRMultiPoint::isCompatibleSubType
virtual OGRBoolean isCompatibleSubType(OGRwkbGeometryType) const CPL_OVERRIDE
Definition: ogrmultipoint.cpp:142
OGRPoint::getY
double getY() const
Fetch Y coordinate.
Definition: ogr_geometry.h:364
OGRMultiCurve::getDimension
virtual int getDimension() const CPL_OVERRIDE
Get the dimension of this object.
Definition: ogrmulticurve.cpp:117
OGRMultiCurve::hasCurveGeometry
virtual OGRBoolean hasCurveGeometry(int bLookForNonLinear=FALSE) const CPL_OVERRIDE
Returns if this geometry is or has curve geometry.
Definition: ogrmulticurve.cpp:193
OGRMultiSurface::PointOnSurface
virtual OGRErr PointOnSurface(OGRPoint *poPoint) const
This method relates to the SFCOM IMultiSurface::get_PointOnSurface() method.
Definition: ogrmultisurface.cpp:299
GEOSContextHandle_t
struct GEOSContextHandle_HS * GEOSContextHandle_t
Definition: ogr_geometry.h:65
CPLErr
CPLErr
Definition: cpl_error.h:52
wkbMultiCurveZ
@ wkbMultiCurveZ
Definition: ogr_core.h:350
wkbMultiCurve
@ wkbMultiCurve
Definition: ogr_core.h:334
OGRMultiPoint::OGRMultiPoint
OGRMultiPoint()
Create an empty multi point collection.
Definition: ogrmultipoint.cpp:53
wkbMultiPolygonM
@ wkbMultiPolygonM
Definition: ogr_core.h:363
wkbLineString25D
@ wkbLineString25D
Definition: ogr_core.h:395
OGRMultiPolygon::OGRMultiPolygon
OGRMultiPolygon()
Create an empty multi polygon collection.
Definition: ogrmultipolygon.cpp:47
OGRLinearRing
Definition: ogr_geometry.h:684
OGRLineString::getCurveGeometry
virtual OGRGeometry * getCurveGeometry(const char *const *papszOptions=NULL) const CPL_OVERRIDE
Return curve version of this geometry.
Definition: ogrlinestring.cpp:2749
OGRSimpleCurve::setCoordinateDimension
virtual void setCoordinateDimension(int nDimension) CPL_OVERRIDE
Set the coordinate dimension.
Definition: ogrlinestring.cpp:160
OGRERR_NONE
#define OGRERR_NONE
Definition: ogr_core.h:287
CPLStrdup
char * CPLStrdup(const char *)
Definition: cpl_conv.cpp:284
wkbMultiSurfaceZ
@ wkbMultiSurfaceZ
Definition: ogr_core.h:351
CPLE_IllegalArg
#define CPLE_IllegalArg
Definition: cpl_error.h:108
OGRMultiPolygon::getGeometryType
virtual OGRwkbGeometryType getGeometryType() const CPL_OVERRIDE
Fetch geometry type.
Definition: ogrmultipolygon.cpp:98
OGRRawPoint::y
double y
Definition: ogr_geometry.h:59
wkbLineString
@ wkbLineString
Definition: ogr_core.h:317
OGRMultiLineString::exportToWkt
virtual OGRErr exportToWkt(char **, OGRwkbVariant=wkbVariantOldOgc) const CPL_OVERRIDE
Convert a geometry into well known text format.
Definition: ogrmultilinestring.cpp:138
OGRSimpleCurve::StartPoint
virtual void StartPoint(OGRPoint *) const CPL_OVERRIDE
Return the curve start point.
Definition: ogrlinestring.cpp:1915
OGRPolygon
Definition: ogr_geometry.h:1162
wkbMultiLineString
@ wkbMultiLineString
Definition: ogr_core.h:323
OGRMultiCurve::isCompatibleSubType
virtual OGRBoolean isCompatibleSubType(OGRwkbGeometryType) const CPL_OVERRIDE
Definition: ogrmulticurve.cpp:137
OGRPoint::getM
double getM() const
Definition: ogr_geometry.h:368
OGRMultiLineString::CastToMultiCurve
static OGRMultiCurve * CastToMultiCurve(OGRMultiLineString *poMLS)
Cast to multicurve.
Definition: ogrmultilinestring.cpp:168
ogr_core.h
OGRMultiPolygon::PointOnSurface
virtual OGRErr PointOnSurface(OGRPoint *poPoint) const CPL_OVERRIDE
This method relates to the SFCOM IMultiSurface::get_PointOnSurface() method.
Definition: ogrmultipolygon.cpp:156
OGRMultiCurve::importFromWkt
virtual OGRErr importFromWkt(char **) CPL_OVERRIDE
Assign geometry from well known text data.
Definition: ogrmulticurve.cpp:166
wkbMultiLineStringM
@ wkbMultiLineStringM
Definition: ogr_core.h:362
OGRLineString::operator=
OGRLineString & operator=(const OGRLineString &other)
Assignment operator.
Definition: ogrlinestring.cpp:2654
OGRLinearRing::OGRLinearRing
OGRLinearRing()
Definition: ogrlinearring.cpp:49
CPLFree
#define CPLFree
Definition: cpl_conv.h:81
wkbUnknown
@ wkbUnknown
Definition: ogr_core.h:314
OGRSimpleCurve::reversePoints
void reversePoints(void)
Reverse point order.
Definition: ogrlinestring.cpp:1347
OGRGeometry::setMeasured
virtual void setMeasured(OGRBoolean bIsMeasured)
Add or remove the M coordinate dimension.
Definition: ogrgeometry.cpp:1068
OGRSimpleCurve::getPointIterator
virtual OGRPointIterator * getPointIterator() const CPL_OVERRIDE
Returns a point iterator over the curve.
Definition: ogrlinestring.cpp:2603
OGRLinearRing::CastToLineString
static OGRLineString * CastToLineString(OGRLinearRing *poLR)
Cast to line string.
Definition: ogrlinearring.cpp:770
OGRwkbVariant
OGRwkbVariant
Definition: ogr_core.h:418
OGRMultiPoint::getGeometryType
virtual OGRwkbGeometryType getGeometryType() const CPL_OVERRIDE
Fetch geometry type.
Definition: ogrmultipoint.cpp:104
wkbMultiPoint
@ wkbMultiPoint
Definition: ogr_core.h:322
OGRMultiSurface::isCompatibleSubType
virtual OGRBoolean isCompatibleSubType(OGRwkbGeometryType) const CPL_OVERRIDE
Definition: ogrmultisurface.cpp:139
OGRPoint::getX
double getX() const
Fetch X coordinate.
Definition: ogr_geometry.h:362
CPLGetConfigOption
const char * CPLGetConfigOption(const char *, const char *)
Definition: cpl_conv.cpp:1625
OGRSimpleCurve::segmentize
virtual void segmentize(double dfMaxLength) CPL_OVERRIDE
Modify the geometry such it has no segment longer then the given distance.
Definition: ogrlinestring.cpp:2462
OGRGeometry::getIsoGeometryType
OGRwkbGeometryType getIsoGeometryType() const
Get the geometry type that conforms with ISO SQL/MM Part3.
Definition: ogrgeometry.cpp:776
OGRSimpleCurve::exportToWkt
virtual OGRErr exportToWkt(char **ppszDstText, OGRwkbVariant=wkbVariantOldOgc) const CPL_OVERRIDE
Convert a geometry into well known text format.
Definition: ogrlinestring.cpp:1797
OGRSimpleCurve::OGRSimpleCurve
OGRSimpleCurve()
Definition: ogrlinestring.cpp:44
OGRLinearRing::exportToWkb
virtual OGRErr exportToWkb(OGRwkbByteOrder, unsigned char *, OGRwkbVariant=wkbVariantOldOgc) const CPL_OVERRIDE
Convert a geometry into well known binary format.
Definition: ogrlinearring.cpp:168
OGRGeometryCollection::hasCurveGeometry
virtual OGRBoolean hasCurveGeometry(int bLookForNonLinear=FALSE) const CPL_OVERRIDE
Returns if this geometry is or has curve geometry.
Definition: ogrgeometrycollection.cpp:1299
OGRGeometry::createGEOSContext
static GEOSContextHandle_t createGEOSContext()
Definition: ogrgeometry.cpp:2869
CPLE_AppDefined
#define CPLE_AppDefined
Definition: cpl_error.h:100
GUInt32
unsigned int GUInt32
Definition: cpl_port.h:199

Generated for GDAL by doxygen 1.8.17.