QGIS API Documentation
2.8.2-Wien
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Groups
Pages
src
core
qgsgeometrysimplifier.cpp
Go to the documentation of this file.
1
/***************************************************************************
2
qgsgeometrysimplifier.cpp
3
---------------------
4
begin : December 2013
5
copyright : (C) 2013 by Alvaro Huarte
6
email : http://wiki.osgeo.org/wiki/Alvaro_Huarte
7
8
***************************************************************************
9
* *
10
* This program is free software; you can redistribute it and/or modify *
11
* it under the terms of the GNU General Public License as published by *
12
* the Free Software Foundation; either version 2 of the License, or *
13
* (at your option) any later version. *
14
* *
15
***************************************************************************/
16
17
#include <limits>
18
#include "
qgsgeometrysimplifier.h
"
19
20
QgsAbstractGeometrySimplifier::~QgsAbstractGeometrySimplifier
()
21
{
22
}
23
25
bool
QgsAbstractGeometrySimplifier::isGeneralizableByDeviceBoundingBox
(
const
QgsRectangle
& envelope,
float
mapToPixelTol )
26
{
27
return
( envelope.
xMaximum
() - envelope.
xMinimum
() ) < mapToPixelTol && ( envelope.
yMaximum
() - envelope.
yMinimum
() ) < mapToPixelTol;
28
}
29
31
bool
QgsAbstractGeometrySimplifier::isGeneralizableByDeviceBoundingBox
(
const
QVector<QPointF>& points,
float
mapToPixelTol )
32
{
33
QgsRectangle
r;
34
r.
setMinimal
();
35
36
for
(
int
i = 0, numPoints = points.size(); i < numPoints; ++i )
37
{
38
r.
combineExtentWith
( points[i].x(), points[i].y() );
39
}
40
return
isGeneralizableByDeviceBoundingBox
( r, mapToPixelTol );
41
}
42
43
/***************************************************************************/
47
QgsTopologyPreservingSimplifier::QgsTopologyPreservingSimplifier
(
double
tolerance ) : mTolerance( tolerance )
48
{
49
}
50
QgsTopologyPreservingSimplifier::~QgsTopologyPreservingSimplifier
()
51
{
52
}
53
55
QgsGeometry
*
QgsTopologyPreservingSimplifier::simplify
(
QgsGeometry
* geometry )
const
56
{
57
return
geometry->
simplify
(
mTolerance
);
58
}
59
61
bool
QgsTopologyPreservingSimplifier::simplifyGeometry
(
QgsGeometry
* geometry )
const
62
{
63
QgsGeometry
* g = geometry->
simplify
(
mTolerance
);
64
65
if
( g )
66
{
67
size_t
wkbSize = g->
wkbSize
();
68
unsigned
char
* wkb = (
unsigned
char
* )malloc( wkbSize );
69
memcpy( wkb, g->
asWkb
(), wkbSize );
70
geometry->
fromWkb
( wkb, wkbSize );
71
delete
g;
72
73
return
true
;
74
}
75
return
false
;
76
}
Generated on Sun May 10 2015 16:33:24 for QGIS API Documentation by
1.8.1.2