QGIS API Documentation
3.16.0-Hannover (43b64b13f3)
Main Page
Related Pages
Modules
Namespaces
Namespace List
Namespace Members
All
a
b
c
d
e
f
g
h
i
j
l
m
n
o
p
q
r
s
t
u
w
z
Functions
a
b
c
d
e
f
g
h
i
l
m
n
o
p
r
s
t
u
w
z
Variables
Typedefs
Enumerations
Enumerator
Classes
Class List
Class Index
Class Hierarchy
Class Members
All
2
3
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Functions
2
3
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Variables
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
a
c
e
f
g
h
k
l
m
o
p
r
s
t
u
v
w
Enumerations
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
z
Enumerator
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Properties
a
b
c
d
e
f
g
h
i
l
m
n
o
p
r
s
t
u
v
w
x
y
z
Related Functions
3
a
c
d
e
f
g
i
l
m
n
o
p
q
r
s
t
v
Files
File List
File Members
All
3
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
y
z
Functions
_
a
b
c
d
e
f
g
h
i
j
l
m
n
o
p
q
r
s
t
u
v
w
z
Variables
a
b
c
d
e
f
g
h
i
l
m
n
o
p
q
r
s
t
u
w
Typedefs
3
a
c
d
e
f
g
h
i
l
m
n
o
p
q
r
s
t
u
v
w
Enumerations
Enumerator
c
l
s
t
Macros
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
w
y
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Modules
Pages
src
core
vectortile
qgsvectortilemvtutils.cpp
Go to the documentation of this file.
1
/***************************************************************************
2
qgsvectortilemvtutils.cpp
3
--------------------------------------
4
Date : April 2020
5
Copyright : (C) 2020 by Martin Dobias
6
Email : wonder dot sk at gmail dot com
7
***************************************************************************
8
* *
9
* This program is free software; you can redistribute it and/or modify *
10
* it under the terms of the GNU General Public License as published by *
11
* the Free Software Foundation; either version 2 of the License, or *
12
* (at your option) any later version. *
13
* *
14
***************************************************************************/
15
16
#include "
qgsvectortilemvtutils.h
"
17
18
#include "
qgslinestring.h
"
19
20
21
bool
QgsVectorTileMVTUtils::isExteriorRing
(
const
QgsLineString
*lineString )
22
{
23
// Exterior rings have POSITIVE area while interior rings have NEGATIVE area
24
// when calculated with https://en.wikipedia.org/wiki/Shoelace_formula
25
// The orientation of axes is that X grows to the right and Y grows to the bottom.
26
// the input data are expected to form a closed ring, i.e. first pt == last pt.
27
28
double
total = 0.0;
29
int
count = lineString->
numPoints
();
30
const
double
*xData = lineString->
xData
();
31
const
double
*yData = lineString->
yData
();
32
33
for
(
int
i = 0; i < count - 1; i++ )
34
{
35
double
val = ( xData[i + 1] - xData[i] ) * ( yData[i + 1] + yData[i] );
36
//double val = xData[i] * (-yData[i+1]) - xData[i+1] * (-yData[i]); // gives the same result
37
total += val;
38
}
39
return
total >= 0;
40
}
qgslinestring.h
QgsLineString::yData
const double * yData() const
Returns a const pointer to the y vertex data.
Definition:
qgslinestring.h:232
QgsVectorTileMVTUtils::isExteriorRing
static bool isExteriorRing(const QgsLineString *lineString)
Returns whether this linear ring forms an exterior ring according to MVT spec (depending on the orien...
Definition:
qgsvectortilemvtutils.cpp:21
QgsLineString
Line string geometry type, with support for z-dimension and m-values.
Definition:
qgslinestring.h:44
QgsLineString::xData
const double * xData() const
Returns a const pointer to the x vertex data.
Definition:
qgslinestring.h:221
qgsvectortilemvtutils.h
QgsLineString::numPoints
int numPoints() const override SIP_HOLDGIL
Returns the number of points in the curve.
Definition:
qgslinestring.cpp:703
Generated on Sat Oct 24 2020 17:43:09 for QGIS API Documentation by
1.8.20