QGIS API Documentation  2.4.0-Chugiak
QgsGeometryAnalyzer Class Reference

The QGis class provides vector geometry analysis functions. More...

`#include <qgsgeometryanalyzer.h>`

Public Member Functions

bool simplify (QgsVectorLayer *layer, const QString &shapefileName, double tolerance, bool onlySelectedFeatures=false, QProgressDialog *p=0)
Simplify vector layer using (a modified) Douglas-Peucker algorithm and write it to a new shape file. More...

bool centroids (QgsVectorLayer *layer, const QString &shapefileName, bool onlySelectedFeatures=false, QProgressDialog *p=0)
Calculate the true centroids, or 'center of mass' for a vector layer and write it to a new shape file. More...

bool extent (QgsVectorLayer *layer, const QString &shapefileName, bool onlySelectedFeatures=false, QProgressDialog *p=0)
Create a polygon based on the extent of all (selected) features and write it to a new shape file. More...

bool buffer (QgsVectorLayer *layer, const QString &shapefileName, double bufferDistance, bool onlySelectedFeatures=false, bool dissolve=false, int bufferDistanceField=-1, QProgressDialog *p=0)
Create buffers for a vector layer and write it to a new shape file. More...

bool convexHull (QgsVectorLayer *layer, const QString &shapefileName, bool onlySelectedFeatures=false, int uniqueIdField=-1, QProgressDialog *p=0)
Create convex hull(s) of a vector layer and write it to a new shape file. More...

bool dissolve (QgsVectorLayer *layer, const QString &shapefileName, bool onlySelectedFeatures=false, int uniqueIdField=-1, QProgressDialog *p=0)
Dissolve a vector layer and write it to a new shape file. More...

bool eventLayer (QgsVectorLayer *lineLayer, QgsVectorLayer *eventLayer, int lineField, int eventField, QgsFeatureIds &unlocatedFeatureIds, const QString &outputLayer, const QString &outputFormat, int locationField1, int locationField2=-1, int offsetField=-1, double offsetScale=1.0, bool forceSingleGeometry=false, QgsVectorDataProvider *memoryProvider=0, QProgressDialog *p=0)
Creates an event layer (multipoint or multiline) by locating features from a (non-spatial) event table along the features of a line layer. More...

QgsGeometrylocateBetweenMeasures (double fromMeasure, double toMeasure, QgsGeometry *lineGeom)
Returns linear reference geometry as a multiline (or 0 if no match). More...

QgsGeometrylocateAlongMeasure (double measure, QgsGeometry *lineGeom)
Returns linear reference geometry. More...

Private Member Functions

QList< double > simpleMeasure (QgsGeometry *geometry)

double perimeterMeasure (QgsGeometry *geometry, QgsDistanceArea &measure)

void simplifyFeature (QgsFeature &f, QgsVectorFileWriter *vfw, double tolerance)
Helper function to simplify an individual feature. More...

void centroidFeature (QgsFeature &f, QgsVectorFileWriter *vfw)
Helper function to get the cetroid of an individual feature. More...

void bufferFeature (QgsFeature &f, int nProcessedFeatures, QgsVectorFileWriter *vfw, bool dissolve, QgsGeometry **dissolveGeometry, double bufferDistance, int bufferDistanceField)
Helper function to buffer an individual feature. More...

void convexFeature (QgsFeature &f, int nProcessedFeatures, QgsGeometry **dissolveGeometry)
Helper function to get the convex hull of feature(s) More...

void dissolveFeature (QgsFeature &f, int nProcessedFeatures, QgsGeometry **dissolveGeometry)
Helper function to dissolve feature(s) More...

void addEventLayerFeature (QgsFeature &feature, QgsGeometry *geom, QgsGeometry *lineGeom, QgsVectorFileWriter *fileWriter, QgsFeatureList &memoryFeatures, int offsetField=-1, double offsetScale=1.0, bool forceSingleType=false)

bool createOffsetGeometry (QgsGeometry *geom, QgsGeometry *lineGeom, double offset)
Create geometry offset relative to line geometry. More...

QgsPoint createPointOffset (double x, double y, double dist, QgsGeometry *lineGeom) const

const unsigned char * locateBetweenWkbString (const unsigned char *ptr, QgsMultiPolyline &result, double fromMeasure, double toMeasure)

const unsigned char * locateAlongWkbString (const unsigned char *ptr, QgsMultiPoint &result, double measure)

Static Private Member Functions

static bool clipSegmentByRange (double x1, double y1, double m1, double x2, double y2, double m2, double range1, double range2, QgsPoint &pt1, QgsPoint &pt2, bool &secondPointClipped)

static void locateAlongSegment (double x1, double y1, double m1, double x2, double y2, double m2, double measure, bool &pt1Ok, QgsPoint &pt1, bool &pt2Ok, QgsPoint &pt2)

Detailed Description

The QGis class provides vector geometry analysis functions.

Definition at line 36 of file qgsgeometryanalyzer.h.

Member Function Documentation

 void QgsGeometryAnalyzer::addEventLayerFeature ( QgsFeature & feature, QgsGeometry * geom, QgsGeometry * lineGeom, QgsVectorFileWriter * fileWriter, QgsFeatureList & memoryFeatures, int offsetField = `-1`, double offsetScale = `1.0`, bool forceSingleType = `false` )
private

Definition at line 1033 of file qgsgeometryanalyzer.cpp.

Referenced by eventLayer().

 bool QgsGeometryAnalyzer::buffer ( QgsVectorLayer * layer, const QString & shapefileName, double bufferDistance, bool onlySelectedFeatures = `false`, bool dissolve = `false`, int bufferDistanceField = `-1`, QProgressDialog * p = `0` )

Create buffers for a vector layer and write it to a new shape file.

Parameters
 layer input vector layer shapefileName path to the output shp bufferDistance distance for buffering (if no buffer field is specified) onlySelectedFeatures if true, only selected features are considered, else all the features dissolve if true, merge all the buffers to a big multipolygon bufferDistanceField index of the attribute field that contains the buffer distance (or -1 if all features have the same buffer distance) p progress dialog (or 0 if no progress dialog is to be shown)
Note

Definition at line 752 of file qgsgeometryanalyzer.cpp.

 void QgsGeometryAnalyzer::bufferFeature ( QgsFeature & f, int nProcessedFeatures, QgsVectorFileWriter * vfw, bool dissolve, QgsGeometry ** dissolveGeometry, double bufferDistance, int bufferDistanceField )
private

Helper function to buffer an individual feature.

Definition at line 858 of file qgsgeometryanalyzer.cpp.

Referenced by buffer().

 void QgsGeometryAnalyzer::centroidFeature ( QgsFeature & f, QgsVectorFileWriter * vfw )
private

Helper function to get the cetroid of an individual feature.

Definition at line 239 of file qgsgeometryanalyzer.cpp.

Referenced by centroids().

 bool QgsGeometryAnalyzer::centroids ( QgsVectorLayer * layer, const QString & shapefileName, bool onlySelectedFeatures = `false`, QProgressDialog * p = `0` )

Calculate the true centroids, or 'center of mass' for a vector layer and write it to a new shape file.

Parameters
 layer input vector layer shapefileName path to the output shp onlySelectedFeatures if true, only selected features are considered, else all the features p progress dialog (or 0 if no progress dialog is to be shown)
Note

Definition at line 146 of file qgsgeometryanalyzer.cpp.

 bool QgsGeometryAnalyzer::clipSegmentByRange ( double x1, double y1, double m1, double x2, double y2, double m2, double range1, double range2, QgsPoint & pt1, QgsPoint & pt2, bool & secondPointClipped )
staticprivate

Definition at line 1368 of file qgsgeometryanalyzer.cpp.

References QgsPoint::setX(), and QgsPoint::setY().

Referenced by locateBetweenWkbString().

 void QgsGeometryAnalyzer::convexFeature ( QgsFeature & f, int nProcessedFeatures, QgsGeometry ** dissolveGeometry )
private

Helper function to get the convex hull of feature(s)

Definition at line 569 of file qgsgeometryanalyzer.cpp.

Referenced by convexHull().

 bool QgsGeometryAnalyzer::convexHull ( QgsVectorLayer * layer, const QString & shapefileName, bool onlySelectedFeatures = `false`, int uniqueIdField = `-1`, QProgressDialog * p = `0` )

Create convex hull(s) of a vector layer and write it to a new shape file.

Parameters
 layer input vector layer shapefileName path to the output shp onlySelectedFeatures if true, only selected features are considered, else all the features uniqueIdField index of the attribute field that contains the unique convex hull id (or -1 if all features have the same buffer distance) p progress dialog (or 0 if no progress dialog is to be shown)
Note

Definition at line 385 of file qgsgeometryanalyzer.cpp.

 bool QgsGeometryAnalyzer::createOffsetGeometry ( QgsGeometry * geom, QgsGeometry * lineGeom, double offset )
private

Create geometry offset relative to line geometry.

Parameters
 geom the geometry to modify lineGeom the line geometry to which the feature is referenced offset the offset value in layer unit. Negative values mean offset towards left, positive values offset to the right side

Definition at line 1083 of file qgsgeometryanalyzer.cpp.

 QgsPoint QgsGeometryAnalyzer::createPointOffset ( double x, double y, double dist, QgsGeometry * lineGeom ) const
private

Definition at line 1167 of file qgsgeometryanalyzer.cpp.

Referenced by createOffsetGeometry().

 bool QgsGeometryAnalyzer::dissolve ( QgsVectorLayer * layer, const QString & shapefileName, bool onlySelectedFeatures = `false`, int uniqueIdField = `-1`, QProgressDialog * p = `0` )

Dissolve a vector layer and write it to a new shape file.

Parameters
 layer input vector layer shapefileName path to the output shp onlySelectedFeatures if true, only selected features are considered, else all the features uniqueIdField index of the attribute field that contains the unique id to dissolve on (or -1 if all features should be dissolved together) p progress dialog (or 0 if no progress dialog is to be shown)
Note

Definition at line 595 of file qgsgeometryanalyzer.cpp.

 void QgsGeometryAnalyzer::dissolveFeature ( QgsFeature & f, int nProcessedFeatures, QgsGeometry ** dissolveGeometry )
private

Helper function to dissolve feature(s)

Definition at line 729 of file qgsgeometryanalyzer.cpp.

Referenced by buffer(), convexHull(), and dissolve().

 bool QgsGeometryAnalyzer::eventLayer ( QgsVectorLayer * lineLayer, QgsVectorLayer * eventLayer, int lineField, int eventField, QgsFeatureIds & unlocatedFeatureIds, const QString & outputLayer, const QString & outputFormat, int locationField1, int locationField2 = `-1`, int offsetField = `-1`, double offsetScale = `1.0`, bool forceSingleGeometry = `false`, QgsVectorDataProvider * memoryProvider = `0`, QProgressDialog * p = `0` )

Creates an event layer (multipoint or multiline) by locating features from a (non-spatial) event table along the features of a line layer.

Note that currently (until QgsGeometry supports m-values) the z-coordinate of the line layer is used for linear referencing

Parameters
 lineLayer layer with the line geometry eventLayer layer with features and location field lineField join index in line layer eventField join index in event layer outputLayer name of output file (can be empty if a memory layer is used) outputFormat name of output format (can be empty if a memory provider is used to store the results) unlocatedFeatureIds out: ids of event features where linear referencing was not successful locationField1 attribute index of location field in event layer locationField2 attribute index of location end field (or -1 for point layer) offsetField attribute index for offset field. Negative offset value = offset to left side, positive value = offset to right side offsetScale factor to scale offset forceSingleGeometry force layer to single point/line type. Feature attributes are copied in case of multiple matches memoryProvider memory provider to write output to (can be 0 if output is written to a file) p progress dialog or 0 if no progress dialog should be shown

Definition at line 910 of file qgsgeometryanalyzer.cpp.

 bool QgsGeometryAnalyzer::extent ( QgsVectorLayer * layer, const QString & shapefileName, bool onlySelectedFeatures = `false`, QProgressDialog * p = `0` )

Create a polygon based on the extent of all (selected) features and write it to a new shape file.

Parameters
 layer input vector layer shapefileName path to the output shp onlySelectedFeatures if true, only selected features are considered, else all the features p progress dialog (or 0 if no progress dialog is to be shown)
Note

Definition at line 262 of file qgsgeometryanalyzer.cpp.

 QgsGeometry * QgsGeometryAnalyzer::locateAlongMeasure ( double measure, QgsGeometry * lineGeom )

Returns linear reference geometry.

Unlike the PostGIS function, this method always returns multipoint or 0 if no match (not geometry collection). Currently, the z-coordinates are considered to be the measures (no support for m-values in QGIS)

Definition at line 1236 of file qgsgeometryanalyzer.cpp.

Referenced by eventLayer().

 void QgsGeometryAnalyzer::locateAlongSegment ( double x1, double y1, double m1, double x2, double y2, double m2, double measure, bool & pt1Ok, QgsPoint & pt1, bool & pt2Ok, QgsPoint & pt2 )
staticprivate

Definition at line 1463 of file qgsgeometryanalyzer.cpp.

References qgsDoubleNear(), QgsPoint::setX(), and QgsPoint::setY().

Referenced by locateAlongWkbString().

 const unsigned char * QgsGeometryAnalyzer::locateAlongWkbString ( const unsigned char * ptr, QgsMultiPoint & result, double measure )
private

Definition at line 1332 of file qgsgeometryanalyzer.cpp.

References locateAlongSegment().

Referenced by locateAlongMeasure().

 QgsGeometry * QgsGeometryAnalyzer::locateBetweenMeasures ( double fromMeasure, double toMeasure, QgsGeometry * lineGeom )

Returns linear reference geometry as a multiline (or 0 if no match).

Currently, the z-coordinates are considered to be the measures (no support for m-values in QGIS)

Definition at line 1192 of file qgsgeometryanalyzer.cpp.

Referenced by eventLayer().

 const unsigned char * QgsGeometryAnalyzer::locateBetweenWkbString ( const unsigned char * ptr, QgsMultiPolyline & result, double fromMeasure, double toMeasure )
private

Definition at line 1280 of file qgsgeometryanalyzer.cpp.

References clipSegmentByRange().

Referenced by locateBetweenMeasures().

 double QgsGeometryAnalyzer::perimeterMeasure ( QgsGeometry * geometry, QgsDistanceArea & measure )
private

Definition at line 357 of file qgsgeometryanalyzer.cpp.

Referenced by simpleMeasure().

 QList< double > QgsGeometryAnalyzer::simpleMeasure ( QgsGeometry * geometry )
private

Definition at line 334 of file qgsgeometryanalyzer.cpp.

Referenced by convexHull().

 bool QgsGeometryAnalyzer::simplify ( QgsVectorLayer * layer, const QString & shapefileName, double tolerance, bool onlySelectedFeatures = `false`, QProgressDialog * p = `0` )

Simplify vector layer using (a modified) Douglas-Peucker algorithm and write it to a new shape file.

Parameters
 layer input vector layer shapefileName path to the output shp tolerance (level of simplification) onlySelectedFeatures if true, only selected features are considered, else all the features p progress dialog (or 0 if no progress dialog is to be shown)
Note

Definition at line 30 of file qgsgeometryanalyzer.cpp.

 void QgsGeometryAnalyzer::simplifyFeature ( QgsFeature & f, QgsVectorFileWriter * vfw, double tolerance )
private

Helper function to simplify an individual feature.

Definition at line 123 of file qgsgeometryanalyzer.cpp.

Referenced by simplify().

The documentation for this class was generated from the following files: