QGIS API Documentation  2.4.0-Chugiak
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
QgsVectorLayerEditUtils Class Reference

#include <qgsvectorlayereditutils.h>

Collaboration diagram for QgsVectorLayerEditUtils:
Collaboration graph
[legend]

Public Member Functions

 QgsVectorLayerEditUtils (QgsVectorLayer *layer)
 
QgsGeometryCachecache ()
 
bool insertVertex (double x, double y, QgsFeatureId atFeatureId, int beforeVertex)
 Insert a new vertex before the given vertex number, in the given ring, item (first number is index 0), and feature Not meaningful for Point geometries. More...
 
bool moveVertex (double x, double y, QgsFeatureId atFeatureId, int atVertex)
 Moves the vertex at the given position number, ring and item (first number is index 0), and feature to the given coordinates. More...
 
bool deleteVertex (QgsFeatureId atFeatureId, int atVertex)
 Deletes a vertex from a feature. More...
 
int addRing (const QList< QgsPoint > &ring)
 Adds a ring to polygon/multipolygon features. More...
 
int addPart (const QList< QgsPoint > &ring, QgsFeatureId featureId)
 Adds a new part polygon to a multipart feature. More...
 
int translateFeature (QgsFeatureId featureId, double dx, double dy)
 Translates feature by dx, dy. More...
 
int splitParts (const QList< QgsPoint > &splitLine, bool topologicalEditing=false)
 Splits parts cut by the given line. More...
 
int splitFeatures (const QList< QgsPoint > &splitLine, bool topologicalEditing=false)
 Splits features cut by the given line. More...
 
int addTopologicalPoints (QgsGeometry *geom)
 Adds topological points for every vertex of the geometry. More...
 
int addTopologicalPoints (const QgsPoint &p)
 Adds a vertex to segments which intersect point p but don't already have a vertex there. More...
 
int insertSegmentVerticesForSnap (const QList< QgsSnappingResult > &snapResults)
 Inserts vertices to the snapped segments. More...
 

Protected Member Functions

int boundingBoxFromPointList (const QList< QgsPoint > &list, double &xmin, double &ymin, double &xmax, double &ymax) const
 Little helper function that gives bounding box from a list of points. More...
 

Protected Attributes

QgsVectorLayerL
 

Detailed Description

Definition at line 25 of file qgsvectorlayereditutils.h.

Constructor & Destructor Documentation

QgsVectorLayerEditUtils::QgsVectorLayerEditUtils ( QgsVectorLayer layer)

Definition at line 25 of file qgsvectorlayereditutils.cpp.

Member Function Documentation

int QgsVectorLayerEditUtils::addPart ( const QList< QgsPoint > &  ring,
QgsFeatureId  featureId 
)

Adds a new part polygon to a multipart feature.

Returns
0 in case of success, 1 if selected feature is not multipart, 2 if ring is not a valid geometry, 3 if new polygon ring not disjoint with existing rings, 4 if no feature was selected, 5 if several features are selected, 6 if selected geometry not found

Definition at line 138 of file qgsvectorlayereditutils.cpp.

References QgsGeometry::addPart(), cache(), QgsVectorLayerEditBuffer::changeGeometry(), QgsVectorLayer::editBuffer(), QgsGeometryCache::geometry(), QgsFeature::geometry(), QgsVectorLayer::geometryType(), QgsVectorLayer::getFeatures(), QgsVectorLayer::hasGeometryType(), L, and QgsFeatureIterator::nextFeature().

Referenced by QgsVectorLayer::addPart().

int QgsVectorLayerEditUtils::addRing ( const QList< QgsPoint > &  ring)

Adds a ring to polygon/multipolygon features.

Returns
0 in case of success, 1 problem with feature type, 2 ring not closed, 3 ring not valid, 4 ring crosses existing rings, 5 no feature found where ring can be inserted

Definition at line 100 of file qgsvectorlayereditutils.cpp.

References QgsGeometry::addRing(), boundingBoxFromPointList(), QgsVectorLayerEditBuffer::changeGeometry(), QgsVectorLayer::editBuffer(), QgsFeatureRequest::ExactIntersect, QgsFeature::geometry(), QgsVectorLayer::getFeatures(), QgsVectorLayer::hasGeometryType(), QgsFeature::id(), L, QgsFeatureIterator::nextFeature(), QgsRectangle::setXMaximum(), QgsRectangle::setXMinimum(), QgsRectangle::setYMaximum(), and QgsRectangle::setYMinimum().

Referenced by QgsVectorLayer::addRing().

int QgsVectorLayerEditUtils::addTopologicalPoints ( QgsGeometry geom)

Adds topological points for every vertex of the geometry.

Parameters
geomthe geometry where each vertex is added to segments of other features
Note
geom is not going to be modified by the function
Returns
0 in case of success

Definition at line 462 of file qgsvectorlayereditutils.cpp.

References QgsGeometry::asMultiPolygon(), QgsGeometry::asMultiPolyline(), QgsGeometry::asPolygon(), QgsGeometry::asPolyline(), QgsVectorLayer::hasGeometryType(), L, QGis::WKBLineString, QGis::WKBLineString25D, QGis::WKBMultiLineString, QGis::WKBMultiLineString25D, QGis::WKBMultiPolygon, QGis::WKBMultiPolygon25D, QGis::WKBPolygon, QGis::WKBPolygon25D, and QgsGeometry::wkbType().

Referenced by QgsVectorLayer::addTopologicalPoints(), splitFeatures(), and splitParts().

int QgsVectorLayerEditUtils::addTopologicalPoints ( const QgsPoint p)

Adds a vertex to segments which intersect point p but don't already have a vertex there.

If a feature already has a vertex at position p, no additional vertex is inserted. This method is useful for topological editing.

Parameters
pposition of the vertex
Returns
0 in case of success

Definition at line 570 of file qgsvectorlayereditutils.cpp.

References QgsMapLayer::crs(), QGis::Feet, QgsVectorLayer::hasGeometryType(), insertSegmentVerticesForSnap(), L, QgsCoordinateReferenceSystem::mapUnits(), QGis::Meters, QgsSnapper::SnapToSegment, QgsSnapper::SnapToVertex, and QgsVectorLayer::snapWithContext().

int QgsVectorLayerEditUtils::boundingBoxFromPointList ( const QList< QgsPoint > &  list,
double &  xmin,
double &  ymin,
double &  xmax,
double &  ymax 
) const
protected

Little helper function that gives bounding box from a list of points.

Returns
0 in case of success

Definition at line 654 of file qgsvectorlayereditutils.cpp.

References MathUtils::max().

Referenced by addRing(), splitFeatures(), and splitParts().

QgsGeometryCache* QgsVectorLayerEditUtils::cache ( )
inline
bool QgsVectorLayerEditUtils::deleteVertex ( QgsFeatureId  atFeatureId,
int  atVertex 
)
int QgsVectorLayerEditUtils::insertSegmentVerticesForSnap ( const QList< QgsSnappingResult > &  snapResults)

Inserts vertices to the snapped segments.

This is useful for topological editing if snap to segment is enabled.

Parameters
snapResultsresults collected from the snapping operation
Returns
0 in case of success

Definition at line 628 of file qgsvectorlayereditutils.cpp.

References QgsVectorLayer::hasGeometryType(), insertVertex(), L, QgsPoint::x(), and QgsPoint::y().

Referenced by addTopologicalPoints(), and QgsVectorLayer::insertSegmentVerticesForSnap().

bool QgsVectorLayerEditUtils::insertVertex ( double  x,
double  y,
QgsFeatureId  atFeatureId,
int  beforeVertex 
)

Insert a new vertex before the given vertex number, in the given ring, item (first number is index 0), and feature Not meaningful for Point geometries.

Definition at line 30 of file qgsvectorlayereditutils.cpp.

References cache(), QgsVectorLayerEditBuffer::changeGeometry(), QgsVectorLayer::editBuffer(), QgsGeometryCache::geometry(), QgsFeature::geometry(), QgsVectorLayer::getFeatures(), QgsVectorLayer::hasGeometryType(), QgsGeometry::insertVertex(), L, and QgsFeatureIterator::nextFeature().

Referenced by insertSegmentVerticesForSnap(), and QgsVectorLayer::insertVertex().

bool QgsVectorLayerEditUtils::moveVertex ( double  x,
double  y,
QgsFeatureId  atFeatureId,
int  atVertex 
)

Moves the vertex at the given position number, ring and item (first number is index 0), and feature to the given coordinates.

Definition at line 53 of file qgsvectorlayereditutils.cpp.

References cache(), QgsVectorLayerEditBuffer::changeGeometry(), QgsVectorLayer::editBuffer(), QgsGeometryCache::geometry(), QgsFeature::geometry(), QgsVectorLayer::getFeatures(), QgsVectorLayer::hasGeometryType(), L, QgsGeometry::moveVertex(), and QgsFeatureIterator::nextFeature().

Referenced by QgsVectorLayer::moveVertex().

int QgsVectorLayerEditUtils::splitFeatures ( const QList< QgsPoint > &  splitLine,
bool  topologicalEditing = false 
)
int QgsVectorLayerEditUtils::splitParts ( const QList< QgsPoint > &  splitLine,
bool  topologicalEditing = false 
)
int QgsVectorLayerEditUtils::translateFeature ( QgsFeatureId  featureId,
double  dx,
double  dy 
)

Translates feature by dx, dy.

Parameters
featureIdid of the feature to translate
dxtranslation of x-coordinate
dytranslation of y-coordinate
Returns
0 in case of success

Definition at line 164 of file qgsvectorlayereditutils.cpp.

References cache(), QgsVectorLayerEditBuffer::changeGeometry(), QgsVectorLayer::editBuffer(), QgsGeometryCache::geometry(), QgsFeature::geometry(), QgsVectorLayer::getFeatures(), QgsVectorLayer::hasGeometryType(), L, QgsFeatureIterator::nextFeature(), and QgsGeometry::translate().

Referenced by QgsVectorLayer::translateFeature().

Member Data Documentation

QgsVectorLayer* QgsVectorLayerEditUtils::L
protected

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