-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
284 lines (258 loc) · 15.8 KB
/
index.html
File metadata and controls
284 lines (258 loc) · 15.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
<!DOCTYPE html>
<head>
<title>GeoPriv</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<link href="https://fonts.googleapis.com/css?family=Raleway:400,500,500i,700,800i" rel="stylesheet">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js"></script>
<link href="css/index.css" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Ubuntu" rel="stylesheet">
<link rel="apple-touch-icon" sizes="180x180" href="assets/favicon/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="assets/favicon/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="assets/favicon/favicon-16x16.png">
<link rel="manifest" href="assets/favicon/site.webmanifest">
<link rel="mask-icon" href="assets/favicon/safari-pinned-tab.svg" color="#5bbad5">
<meta name="msapplication-TileColor" content="#da532c">
<meta name="theme-color" content="#ffffff">
</head>
<body>
<nav class="navbar navbar-expand-sm navbar-light bg-light">
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarTogglerDemo03"
aria-controls="navbarTogglerDemo03" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarTogglerDemo03">
<ul class="navbar-nav mr-auto mt-2 mt-lg-0">
<li class="nav-item">
<a class="nav-link" href="#home">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#about">About</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#usage">Usage</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#contribute">Contribute</a>
</li>
</ul>
<div class="social-part">
<a class="nav-link" target="new" href="https://github.com/Diuke/GeoPriv"><i style="font-size:24px" class="fa fa-github" aria-hidden="true"></i></a>
</div>
</div>
</nav>
<div class="container-fluid" style="height: 560px; vertical-align: middle" id="home">
<div class="row" style="height: 100%">
<div class="col" style="text-align: right">
<span class="img-wrapper"></span>
<img src="assets/icon.png" style="vertical-align: middle;">
</div>
<div class="col" style="float:left; position: relative; top: 40%">
<div class="text-wrapper">
<h1 style="vertical-align: middle">Geoprivacy Plugin</h1>
<h2 style="vertical-align: middle">A set of location privacy tools <br> for geographic data.</h2>
</div>
</div>
</div>
</div>
<hr>
<a class="anchor" id="about"></a>
<div class="container mt-5 mb-5">
<div class="row">
<h2 class="title w-100">About</h2>
<p>
GeoPriv is a plugin for QGIS 3+ that offers location privacy protection mechanisms for users to protect
the privacy of their datasets before publishing or putting them on maps.
</p>
<p>
In GeoPriv you can choose between three location privacy methods that can be found in scientific articles and
that we have implemented to be easily used by technical and non-technical users, providing location privacy for everyone! <br>
The location privacy methods implemented works with Vector Layers that have Point geometries only and provide privacy
by obfuscation and k-anonymity.
</p>
<p>
This plugin is our final project for our Computer Science undergrad and is intended to help the Open Source and the GIS community
with a reliable tool for geoprivacy.
</p>
</div>
</div>
<hr>
<a class="anchor" id="usage"></a>
<div class="container mt-5 mb-5" >
<div class="row">
<h2 class="title w-100">Usage</h2>
<p>
Along this brief tutorial we will be using <a href="assets/downloads/test_dataset.csv" download="milano_dataset">this sample dataset</a>, consisting of 18967 points of locations of Tweets
from Milano, Italy. Feel free to download it.<br>
</p>
<p class="w-100">
Index:
</p>
<ul>
<li><a href="#started">Getting started</a></li>
<li><a href="#functionalities">Functionalities</a></li>
<li><a href="#lppm">The Location Privacy Protection Mechanisms (LPPM)</a></li>
</ul>
<!--Seccion Getting Started-->
<a class="anchor" id="started"></a>
<h4 class="subtitle w-100" id="started">Getting Started</h4>
<p>
This plugin integrates three Location Privacy Protection Mechanisms (or LPPM) that were extracted from academic papers and research
to provide technical and non-technical folks a suite of geoprivacy methods to protect their datasets before publishing or exporting.
This plugin works with <strong>vector layers</strong> that have <strong>Point</strong> geometries (Multipoint geometries are not supported yet)
and process the layer data with the selected LPPM.
</p>
<p>
There are several categories for LPPMs, but for this kind of data we chose to work with obfuscation and K-Anonymity methods, that
are well suited for Point geometries and for offline data. <br>
Obfuscation methods hide the original location by changing the longitude and latitude of the point to new ones, while K-Anonymity
hides user information and location by grouping similar or close points to be indistinguishable between them.
</p>
<p>
This plugin is located in the Vector menu and can be found in the <a href="https://plugins.qgis.org/plugins/" target="new">QGIS Python Plugins Repository</a>. <br>
Now create a new layer with the test dataset provided and lets get started!
</p>
<!--Seccion Functionalities-->
<a class="anchor" id="functionalities"></a>
<h4 class="subtitle w-100" id="functionalities">Functionalities</h4>
<p>
The plugin consists of a layer picker(1), three LPPMs(2,3,4), a Data Preview tab(5) and a Results tab(6).
</p>
<div class="image text-center w-100">
<img class="img-responsive thumbnail" src="assets/tutorial/img1.png">
</div>
<p>
The <strong>layer picker</strong> allows you to select one of the valid layers, that means, a Vector Layer with Point geometry, every other layer is filtered out
from the selector. It is initially empty so you have to select the layer by yourself.<br>
Next section will tell you everything you need to know about the
</p>
<p>
The <strong>Data Preview</strong> shows the first 100 or less features of the selected layer
and its fields so you can explore the data. After a new layer is selected the information of the Data Preview tab is automatically updated.
If your data has a field with the same values of the latitude or longitude it will not be shown to avoid revealing
the original location of the points, also, when the data is processed, those fields with location data will dissapear.
</p>
<div class="image text-center w-100">
<img class="img-responsive thumbnail" src="assets/tutorial/img2.png">
</div>
<p>
Each one of the <strong>LPPMs</strong> have its own tab, a set of parameters and a <strong>Process Data</strong> button in the bottom
of its tab. The next section will analyze each mechanism and explain each one of its parameters.
</p>
<p>
After the layer is processed by clicking on the <strong>Process Data</strong> button in any of the <strong>LPPMs</strong>, the <strong>Results</strong> tab
is opened automatically and a temporal layer is created with the name of the mechanism and the original layer projection.
The <strong>Results</strong> tab shows the progress of the mechanism (for large datasets it will take long processing times) and metrics of the
new layer generated.
</p>
<div class="image text-center w-100">
<img class="img-responsive thumbnail" src="assets/tutorial/img3.png">
</div>
<p>
Two metrics are shown as well on the <strong>Results</strong> tab, the Quadratic Error or mean squared error and the point loss. The Quadratic error indicate how alike is the new layer
with the original one by calculating the distance between the new and the original point and showing the mean of all errors squared (see <a href="https://en.wikipedia.org/wiki/Mean_squared_error" target="new">Mean Squared Error</a>).
While the error increases, protection increases, but utility of the data decreases.
</p>
<p>
Point loss is the amount of points that were erased during processing. Some mechanisms delete the noise of the dataset, but if every point is necessary you may
want this value low.
</p>
<p>
Feel free to process your data as many times as you like testing different values for the parameters until
you find the one you like the most.
</p>
<!--Seccion LPPMs-->
<a class="anchor" id="lppm"></a>
<h4 class="subtitle w-100" id="functionalities">The Location Privacy Protection Mechanisms (LPPM)</h4>
<p class="w-100">
There are three LPPMs implemented in this plugin:
</p>
<ul>
<li><a href="#spatial">Spatial Clustering</a></li>
<li><a href="#nrandk">NRandK</a></li>
<li><a href="geoi">Laplace Noise (or Geo indistinguishability)</a></li>
</ul>
<!--Seccion Spatial-->
<a class="anchor" id="spatial"></a>
<h4 class="subtitle w-100" id="spatial">Spatial Clustering</h4>
<p>
This is a K-Anonymity mechanism that provides privacy by aggregating points by their distance. <br>
This mechanism does a pre-processing, where it <strong>gridifies</strong> data, that means, aggregates data building a virtual grid according to a precission defined by the user.<br>
The precission for the gridification is the number of decimals that will be truncated from each coordinate to aggregate points by matching truncated coordinates.<br>
After that, the user can choose between K-Means and DBScan as the spatial clustering algorithm for the geolocated data.
</p>
<p>
<strong>- KMeans:</strong> <br>For method explanation see <a href="https://www.youtube.com/watch?v=IuRb3y8qKX4" target="new">KMeans</a>. <br>
The parameters that KMeans need are the number of clusters <strong>K</strong> and a <strong>random seed</strong> for reproducibility,
which is zero (0) by default.
</p>
<p>
<strong>- DBScan:</strong> <br>For method explanation see <a href="https://youtu.be/5E097ZLE9Sg?t=44" target="new">DBSCAN</a>. <br>
The parameters that DBSCAN need are the <strong>aggregation radius R</strong> and the <strong>minimum quantity of points</strong> that must be grouped to make a cluster.
</p>
<!--Seccion NRandK-->
<a class="anchor" id="nrandk"></a>
<h4 class="subtitle w-100" id="nrandk">NRandK</h4>
<p>
<strong>NRandK</strong> is an obfuscation Location Privacy Protection Mechanism that provides privacy by modificating the original coordinates of the point.
</p>
<p>
This mechanism consists in applying an algorithm named <strong>NRand</strong> to each point of the dataset by generating <strong>N</strong> random points (four (4) by default)
on a circle of <strong>radius R</strong> and choosing the farthest from the orginal point. <br>
The <strong>radius</strong> of the circle of each point is decided by how many points are close to it after an aggregation process.<br>
If the number of points that are close to the point is greater than <strong>K</strong>, the point uses an small radius, otherwise uses a larger radius.
</p>
<p>
This mechanism receives six (6) parameters:
</p>
<ul>
<li><strong>Grid decimal Precision:</strong> Number of decimals to be truncated for the aggregation process (gridification).</li>
<li><strong>Number of random points generated:</strong> Number of points that are generated inside the circle for each point. Four by default.</li>
<li><strong>Minimum Points:</strong> Number of points that determines if the point uses the small or the large radius.</li>
<li><strong>Small radius:</strong> Small radius for points in high density areas.</li>
<li><strong>Large radius:</strong> large radius for points in low density areas.</li>
<li><strong>Random seed:</strong> Random seed for reproducibility.</li>
</ul>
<!--Seccion GeoI-->
<a class="anchor" id="geoi"></a>
<h4 class="subtitle w-100" id="geoi">Laplace Noise (or Geo indistinguishability)</h4>
<p>
</p>
</div>
</div>
<hr>
<a class="anchor" id="contribute"></a>
<div class="container mt-5 mb-5">
<div class="row">
<h2 class="title w-100">Contribute</h2>
<p>
You can contribute with GeoPriv by adding new Location Privacy Protection Mechanisms and reporting bugs and issues.<br>
Check the <a target="new" href="https://github.com/Diuke/GeoPriv">project repository</a> and ask our team anything you want about
the source code.
</p>
</div>
</div>
<footer class="container-fluid">
<div class="row">
<div class="col-md"></div>
<div class="col text-justify">
<h3 class="w-100 pb-2">License Information:</h3>
<p>GeoPriv Plugin is licensed under GNU General Public License v3.</p>
<p>Version 1.0</p>
<p>Approved May 1, 2019</p>
</div>
<div class="col text-right">
<h3>Created by:</h3>
<h3 class="mt-4">Juan Pablo Duque</h4>
<h4>pjduque@uninorte.edu.co</h4>
<h3 class="mt-4">Angelly Pugliese</h4>
<h4>angellyp@uninorte.edu.co</h4>
</div>
<div class="col-md"></div>
</div>
</footer>
</body>
</html>