QGIS API Documentation
2.0.1-Dufour
|
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
bool | eventLayer (QgsVectorLayer *lineLayer, QgsVectorLayer *eventLayer, int lineField, int eventField, QList< int > &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. | |
QgsGeometry * | locateBetweenMeasures (double fromMeasure, double toMeasure, QgsGeometry *lineGeom) |
Returns linear reference geometry as a multiline (or 0 if no match). | |
QgsGeometry * | locateAlongMeasure (double measure, QgsGeometry *lineGeom) |
Returns linear reference geometry. |
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. | |
void | centroidFeature (QgsFeature &f, QgsVectorFileWriter *vfw) |
Helper function to get the cetroid of an individual feature. | |
void | bufferFeature (QgsFeature &f, int nProcessedFeatures, QgsVectorFileWriter *vfw, bool dissolve, QgsGeometry **dissolveGeometry, double bufferDistance, int bufferDistanceField) |
Helper function to buffer an individual feature. | |
void | convexFeature (QgsFeature &f, int nProcessedFeatures, QgsGeometry **dissolveGeometry) |
Helper function to get the convex hull of feature(s) | |
void | dissolveFeature (QgsFeature &f, int nProcessedFeatures, QgsGeometry **dissolveGeometry) |
Helper function to dissolve feature(s) | |
void | addEventLayerFeature (QgsFeature &feature, QgsGeometry *geom, QgsGeometry *lineGeom, QgsVectorFileWriter *fileWriter, QgsFeatureList &memoryFeatures, int offsetField=-1, double offsetScale=1.0, bool forceSingleType=false) |
void | createOffsetGeometry (QgsGeometry *geom, QgsGeometry *lineGeom, double offset) |
Create geometry offset relative to line geometry. | |
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) |
The QGis class provides vector geometry analysis functions.
Definition at line 36 of file qgsgeometryanalyzer.h.
|
private |
Definition at line 1035 of file qgsgeometryanalyzer.cpp.
References QgsVectorFileWriter::addFeature(), QgsGeometry::asGeometryCollection(), QgsFeature::attribute(), createOffsetGeometry(), and QgsFeature::setGeometry().
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.
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) |
Definition at line 752 of file qgsgeometryanalyzer.cpp.
References bufferFeature(), QgsMapLayer::crs(), QgsVectorLayer::dataProvider(), dissolveFeature(), QgsVectorDataProvider::encoding(), QgsVectorLayer::featureCount(), QgsVectorLayer::getFeatures(), QgsFeatureIterator::nextFeature(), QgsVectorLayer::pendingFields(), QgsDebugMsg, QgsVectorLayer::selectedFeaturesIds(), QgsFeature::setGeometry(), QGis::WKBMultiPolygon, and QGis::WKBPolygon.
|
private |
Helper function to buffer an individual feature.
Definition at line 858 of file qgsgeometryanalyzer.cpp.
References QgsVectorFileWriter::addFeature(), QgsFeature::attribute(), QgsFeature::attributes(), QgsGeometry::buffer(), QgsGeometry::combine(), QgsFeature::geometry(), QgsFeature::setAttributes(), and QgsFeature::setGeometry().
Referenced by buffer().
|
private |
Helper function to get the cetroid of an individual feature.
Definition at line 239 of file qgsgeometryanalyzer.cpp.
References QgsVectorFileWriter::addFeature(), QgsFeature::attributes(), QgsGeometry::centroid(), QgsFeature::geometry(), QgsFeature::setAttributes(), and QgsFeature::setGeometry().
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.
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) |
Definition at line 146 of file qgsgeometryanalyzer.cpp.
References centroidFeature(), QgsMapLayer::crs(), QgsVectorLayer::dataProvider(), QgsVectorDataProvider::encoding(), QgsVectorLayer::featureCount(), QgsVectorLayer::getFeatures(), QgsFeatureIterator::nextFeature(), QgsVectorLayer::pendingFields(), QgsDebugMsg, QgsVectorLayer::selectedFeaturesIds(), and QGis::WKBPoint.
|
staticprivate |
Definition at line 1355 of file qgsgeometryanalyzer.cpp.
References QgsPoint::setX(), and QgsPoint::setY().
Referenced by locateBetweenWkbString().
|
private |
Helper function to get the convex hull of feature(s)
Definition at line 569 of file qgsgeometryanalyzer.cpp.
References QgsGeometry::combine(), QgsGeometry::convexHull(), and QgsFeature::geometry().
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.
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) |
Definition at line 385 of file qgsgeometryanalyzer.cpp.
References QgsFields::append(), convexFeature(), QgsGeometry::convexHull(), QgsMapLayer::crs(), QgsVectorLayer::dataProvider(), dissolveFeature(), QgsVectorDataProvider::encoding(), QgsVectorLayer::featureCount(), QgsVectorLayer::getFeatures(), QgsFeatureIterator::nextFeature(), QgsDebugMsg, QgsVectorLayer::selectedFeaturesIds(), QgsFeature::setAttributes(), QgsFeature::setGeometry(), simpleMeasure(), and QGis::WKBPolygon.
|
private |
Create geometry offset relative to line geometry.
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 1081 of file qgsgeometryanalyzer.cpp.
References QgsGeometry::asGeometryCollection(), createPointOffset(), QgsGeometry::fromGeos(), QgsGeometry::isMultipart(), QGis::Line, QGis::Point, QgsGeometry::type(), QgsPoint::x(), and QgsPoint::y().
Referenced by addEventLayerFeature().
|
private |
Definition at line 1154 of file qgsgeometryanalyzer.cpp.
References QgsGeometry::closestSegmentWithContext(), QgsGeometry::vertexAt(), QgsPoint::x(), and QgsPoint::y().
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.
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) |
Definition at line 595 of file qgsgeometryanalyzer.cpp.
References QgsMapLayer::crs(), QgsVectorLayer::dataProvider(), dissolveFeature(), QgsVectorDataProvider::encoding(), QgsVectorLayer::featureCount(), QgsVectorDataProvider::geometryType(), QgsVectorLayer::getFeatures(), QgsFeatureIterator::nextFeature(), QgsVectorLayer::pendingFields(), QgsVectorLayer::selectedFeaturesIds(), QgsFeature::setAttributes(), and QgsFeature::setGeometry().
|
private |
Helper function to dissolve feature(s)
Definition at line 729 of file qgsgeometryanalyzer.cpp.
References QgsGeometry::asWkb(), QgsGeometry::combine(), QgsFeature::geometry(), and QgsGeometry::wkbSize().
Referenced by buffer(), convexHull(), and dissolve().
bool QgsGeometryAnalyzer::eventLayer | ( | QgsVectorLayer * | lineLayer, |
QgsVectorLayer * | eventLayer, | ||
int | lineField, | ||
int | eventField, | ||
QList< int > & | 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
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.
References QgsVectorDataProvider::addAttributes(), addEventLayerFeature(), QgsVectorDataProvider::addFeatures(), QgsFeature::attribute(), QgsMapLayer::crs(), QgsVectorLayer::dataProvider(), QgsVectorDataProvider::encoding(), QgsFeature::geometry(), QgsVectorLayer::getFeatures(), QgsFeature::id(), QgsMapLayer::isValid(), locateAlongMeasure(), locateBetweenMeasures(), QgsFeatureIterator::nextFeature(), QgsFeatureRequest::NoGeometry, QgsVectorLayer::pendingFeatureCount(), QgsVectorLayer::pendingFields(), QgsFeatureRequest::setSubsetOfAttributes(), QgsFields::toList(), QGis::WKBLineString, QGis::WKBMultiLineString, QGis::WKBMultiPoint, and QGis::WKBPoint.
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.
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) |
Definition at line 262 of file qgsgeometryanalyzer.cpp.
References QgsFields::append(), QgsVectorLayer::boundingBoxOfSelected(), QgsMapLayer::crs(), QgsVectorLayer::dataProvider(), QgsVectorDataProvider::encoding(), QgsVectorLayer::extent(), QgsGeometry::fromRect(), QgsFeature::setAttributes(), QgsFeature::setGeometry(), QGis::WKBPolygon, and QgsRectangle::xMinimum().
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 1223 of file qgsgeometryanalyzer.cpp.
References QgsGeometry::asWkb(), QgsGeometry::fromMultiPoint(), locateAlongWkbString(), QGis::WKBLineString25D, and QGis::WKBMultiLineString25D.
Referenced by eventLayer().
|
staticprivate |
Definition at line 1450 of file qgsgeometryanalyzer.cpp.
References qgsDoubleNear(), QgsPoint::setX(), and QgsPoint::setY().
Referenced by locateAlongWkbString().
|
private |
Definition at line 1319 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 1179 of file qgsgeometryanalyzer.cpp.
References QgsGeometry::asWkb(), QgsGeometry::fromMultiPolyline(), locateBetweenWkbString(), QGis::WKBLineString25D, and QGis::WKBMultiLineString25D.
Referenced by eventLayer().
|
private |
Definition at line 1267 of file qgsgeometryanalyzer.cpp.
References clipSegmentByRange().
Referenced by locateBetweenMeasures().
|
private |
Definition at line 357 of file qgsgeometryanalyzer.cpp.
References QgsGeometry::asMultiPolygon(), QgsGeometry::asPolygon(), QgsGeometry::fromPolyline(), QgsGeometry::isMultipart(), and QgsDistanceArea::measure().
Referenced by simpleMeasure().
|
private |
Definition at line 334 of file qgsgeometryanalyzer.cpp.
References QgsGeometry::asPoint(), QgsDistanceArea::measure(), perimeterMeasure(), QGis::Polygon, QgsGeometry::type(), QGis::WKBPoint, QgsGeometry::wkbType(), QgsPoint::x(), and QgsPoint::y().
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.
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) |
Definition at line 30 of file qgsgeometryanalyzer.cpp.
References QgsMapLayer::crs(), QgsVectorLayer::dataProvider(), QgsVectorDataProvider::encoding(), QgsVectorLayer::featureCount(), QgsVectorDataProvider::geometryType(), QgsVectorLayer::getFeatures(), QgsFeatureIterator::nextFeature(), QgsVectorLayer::pendingFields(), QgsVectorLayer::selectedFeaturesIds(), and simplifyFeature().
|
private |
Helper function to simplify an individual feature.
Definition at line 123 of file qgsgeometryanalyzer.cpp.
References QgsVectorFileWriter::addFeature(), QgsFeature::attributes(), QgsFeature::geometry(), QgsFeature::setAttributes(), QgsFeature::setGeometry(), and QgsGeometry::simplify().
Referenced by simplify().