-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
336 lines (306 loc) · 18.1 KB
/
index.html
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
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>ESA User Services powered by Open Source</title>
<meta name="description" content="This presentation introduces the Browse Server of ESA's new User Services infrastructure (ngEO) serving browse images via OGC's WMTS and WMS standards using GDAL, MapServer, EOxServer, and MapCache">
<meta name="author" content="Stephan Meissl">
<meta name="author" content="Thomas Bonfort">
<meta name="author" content="Fabian Schindler">
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<link rel="stylesheet" href="reveal.js/css/reveal.min.css">
<link rel="stylesheet" href="reveal.js/css/theme/osgeo.css" id="theme">
<!-- For syntax highlighting -->
<link rel="stylesheet" href="reveal.js/lib/css/zenburn.css">
<!-- If the query includes 'print-pdf', use the PDF print sheet -->
<script>
document.write( '<link rel="stylesheet" href="reveal.js/css/print/' + ( window.location.search.match( /print-pdf/gi ) ? 'pdf' : 'paper' ) + '.css" type="text/css" media="print">' );
</script>
<!--[if lt IE 9]>
<script src="reveal.js/lib/js/html5shiv.js"></script>
<![endif]-->
</head>
<body>
<div class="reveal">
<!-- Any section element inside of this container is displayed as a slide -->
<div class="slides">
<section>
<h1>ESA User Services powered by Open Source</h1>
<p>Created by:</p>
<p>Stephan Meissl, Thomas Bonfort, and Fabian Schindler</p>
<a rel="license" href="http://creativecommons.org/licenses/by/3.0/deed.en_US"><img style="margin: 15px 0px 0px 0px;" alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by/3.0/88x31.png" /></a>
<p><small>This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by/3.0/deed.en_US">Creative Commons Attribution 3.0 Unported License</a>.</small></p>
<aside class="notes">
<p>Good afternoon everybody. We're going to present how the European Space Agency - ESA - is using Open Source Software for their new User Services.</p>
<p>Let me briefly introduce the authors:</p>
<ul>
<li>Thmoas Bonfort - Famous for starting the MapCache project and core committer of MapServer.</li>
<li>Fabian Schindler and myself from the small Austrian company EOX. Committer of MapServer and initiator of EOxServer.</li>
</ul>
</aside>
</section>
<section>
<h2>Outline</h2>
<ul>
<li class="fragment">ESA User Services - ngEO</li>
<li class="fragment">ngEO Browse Server</li>
<li class="fragment">MapCache Enhancements</li>
<li class="fragment">Live Demonstration</li>
</ul>
<aside class="notes">
<p>We will start with an introduction to ESA's new User Services infrastructure called ngEO, short for Next Generation Earth Observation.</p>
<p>It will be followed by a brief introduction of the design and functionality of the Browse Server component of ngEO.</p>
<p>We will highlight some MapCache enhancements originating from ngEO.</p>
<p>Last but not least we will try a Live Demonstration which our connection hopefully allows.</p>
</aside>
</section>
<section>
<h2>ESA User Services - ngEO</h2>
<ul>
<li class="fragment">Operational Fully Online Data Access Service</li>
<li class="fragment">GMES and ESA Legacy Satellite Missions</li>
<li class="fragment">Fully Centralised Configuration Management</li>
<li class="fragment">Generic System usable for any Mission</li>
</ul>
<aside class="notes">
<p>The main objective of the new ESA User Services is to provide a fully Online Operational Data Access Service.</p>
<p>ESA provides access to satellite data from the European initiative GMES which stands for Global Monitoring for Environment & Security or, as it is called nowadays, Copernicus as well as ESA's legacy missions like Envisat.</p>
<p>Another objective of the new system is a Fully Centralised Configuration Management. I come back to that in a second.</p>
<p>In summary ESA wants to develop a generic system that is easily usable for any mission.</p>
</aside>
</section>
<section>
<section>
<h2>ngEO Browse Server - Architecture</h2>
<img src="./images/browse_server_architecture.png" alt="Browse Server Architecture" title="Browse Server Architecture"/>
<aside class="notes">
<p>Entirely based on Open Source Software:</p>
<ul>
<li>GDAL for raster processing</li>
<li>MapServer for OGC services support</li>
<li>EOxServer for Earth Observation extension</li>
<li>MapCache for extremely well performing WMTS and WMS access</li>
</ul>
<p>TBD</p>
</aside>
</section>
<section>
<h2>ngEO Browse Server</h2>
<ul>
<li class="fragment">Entirely based on Open Source Software</li>
<li class="fragment">OGC's WMTS and WMS Standards</li>
<li class="fragment">Configuration from ngEO Controller</li>
<li class="fragment">Data ingested by ngEO FEED</li>
<li class="fragment">Authentication using Shibboleth</li>
<li class="fragment">Authorization from ngEO Web Server</li>
</ul>
<aside class="notes">
<p>TBD</p>
<p>Won't go into details of the OGC services. Please look it up there is plenty of information available.</p>
</aside>
</section>
<section>
<h2>Preprocessing</h2>
<ul>
<li class="fragment">Input Geographic Metadata for Geo-referencing</li>
<ul class="fragment">
<li>Footprint polygon</li>
<li>Regular grid of tiepoints</li>
<li>Pre-georeferenced images</li>
</ul>
<li class="fragment">Optimizations</li>
<ul class="fragment">
<li>Footprint generation</li>
<li>Re-projection</li>
<li>Addition of alpha-channel</li>
<li>Internal tilling</li>
<li>Overviews</li>
<li>Compression</li>
</ul>
</ul>
<aside class="notes">
<p>TBD</p>
</aside>
</section>
</section>
<section>
<section>
<h2><a href="http://mapserver.org/trunk/en/mapcache/index.html">MapCache</a> Enhancements</h2>
<aside class="notes">
<p>TBD</p>
</aside>
</section>
<section>
<h2>Time dimension support</h2>
<pre><code data-trim contenteditable>
<tileset name="foss4g">
...
<timedimension type="sqlite" default="2013">
<dbfile>/var/ngeob_data/mapcache.sqlite</dbfile>
<query>select strftime('%Y-%m-%dT%H:%M:%SZ',start_time)||'/'||strftime('%Y-%m-%dT%H:%M:%SZ',end_time) from time where source_id=:tileset and start_time<=datetime(:end_timestamp,'unixepoch') and end_time>=datetime(:start_timestamp,'unixepoch') and maxx>=:minx and maxy>=:miny and minx<=:maxx and miny<=:maxy order by end_time limit 100</query>
</timedimension>
</tileset>
</code></pre>
<p>Visual representations of search results e.g. single browses or all browses in a specific time interval</p>
<aside class="notes">
<p>TBD</p>
</aside>
</section>
<section>
<h2>Read-only functionality</h2>
<pre><code data-trim contenteditable>
<tileset name="foss4g">
...
<read-only>true</read-only>
</tileset>
</code></pre>
<p>Absent tiles are considered empty instead of being sent to WMS for generation
<aside class="notes">
<p>TBD</p>
</aside>
</section>
<section>
<h2>Configure max-cached-zoom</h2>
<pre><code data-trim contenteditable>
<tileset name="foss4g">
...
<grid max-cached-zoom="8" out-of-zoom-strategy="reassemble">
WGS84
</grid>
</tileset>
</code></pre>
<p>Dynamically create high resolution tiles from lower resolution ones
<aside class="notes">
<p>TBD</p>
</aside>
</section>
<section>
<h2>Storage optimization e.g. detect_blank</h2>
<pre><code data-trim contenteditable>
<cache name="foss4g" type="sqlite3">
<dbfile>foss4g.sqlite</dbfile>
<detect_blank>true</detect_blank>
</cache>
</code></pre>
<p>9 bytes stored per tile (hex quadruplet). Dynamically returned as a 132 byte PNG.
<aside class="notes">
<p>TBD</p>
</aside>
</section>
</section>
<section>
<section>
<h2>Demonstration</h2>
<p>Live</p>
<p><a href="http://foss4g.eox.at/time.html"><img src="./images/time.png" alt="Live Demonstration" title="Live Demonstration"/></a></p>
<aside class="notes">
<p>We're trying a live demonstration using the shown URL.</p>
<p>We need you all to disconnect your devices. That's for better connection and you to follow us.</p>
<p>Btw. this is our Changing Times contribution to the Opening Up The Map challenge. Maybe you consider voting ;)</p>
<p>We have some screen shots as backup in case the connection is too poor.</p>
</aside>
</section>
<section>
<h2>Time Slider</h2>
<img style="height: 600px;" src="./images/screenshot_timeslider.png" alt="Time Slider" title="Time Slider"/>
<aside class="notes">
<p>Note the time slider at the bottom of the page.</p>p>
</aside>
</section>
<section>
<h2>Entire Dataset</h2>
<img style="height: 600px;" src="./images/screenshot_entiredataset.png" alt="Entire Dataset" title="Entire Dataset"/>
<aside class="notes">
<p>This is a layer holding the entire dataset. Thus the time slider is disabled.</p>
</aside>
</section>
<section>
<h2>Nottingham</h2>
<img style="height: 600px;" src="./images/screenshot_nottingham_level10.png" alt="Nottingham" title="Nottingham"/>
<aside class="notes">
<p>Let's zoom to Nottingham.</p>
</aside>
</section>
<section>
<h2>max-cached-zoom</h2>
<img style="height: 600px;" src="./images/screenshot_nottingham_level12.png" alt="max-cached-zoom" title="max-cached-zoom"/>
<aside class="notes">
<p>As you can see the image is still shown but no additional information is loaded (cf. max-cached-zoom).</p>
</aside>
</section>
</section>
<section>
<h2>Conclusions</h2>
<ul>
<li class="fragment">Mature Open Source Software building blocks for operational software exist</li>
<li class="fragment">Open Source software allows for flexible adaptations where required</li>
<li class="fragment">New Functionality is fed back to the communities</li>
<li class="fragment">Time axis is important</li>
</ul>
<aside class="notes">
<p>TBD</p>
</aside>
</section>
<section>
<h2>Acknowledgement</h2>
<a href="http://esa.int"><img src="./images/ESA_Logo.png" alt="European Space Agency - ESA" title="European Space Agency - ESA"/></a>
<p>Funding has been provided by the European Space Agency (ESA) in the frame of the ngEO project.</p>
<aside class="notes">
<p>TBD</p>
</aside>
</section>
<section>
<h2>Thank you for your Attention</h2>
<br/>
<ul>
<li><a class="image" href="http://eox.at"><img style="margin: 0px 0px -8px 0px;" src="./images/EOX_Logo.png" alt="EOX IT Services GmbH, Austria" title="EOX IT Services GmbH, Austria"/></a> @eox_a, [email protected]</li>
<ul>
<li>Stephan Meissl @Schpidi</li>
<li>Fabian Schindler</li>
</ul>
<br/>
<li>Thomas Bonfort @tbonfort</li>
</ul>
<br/>
<br/>
<br/>
<a rel="license" href="http://creativecommons.org/licenses/by/3.0/deed.en_US"><img style="margin: 15px 0px 0px 0px;" alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by/3.0/88x31.png" /></a>
<p><small>This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by/3.0/deed.en_US">Creative Commons Attribution 3.0 Unported License</a>.</small></p>
<aside class="notes">
<p>TBD</p>
</aside>
</section>
</div>
</div>
<script src="reveal.js/lib/js/head.min.js"></script>
<script src="reveal.js/js/reveal.min.js"></script>
<script>
// Full list of configuration options available here:
// https://github.com/hakimel/reveal.js#configuration
Reveal.initialize({
controls: true,
progress: true,
history: true,
keyboard: true,
touch: true,
overview: true,
center: true,
theme: Reveal.getQueryHash().theme, // available themes are in /css/theme
transition: Reveal.getQueryHash().transition || 'default', // default/cube/page/concave/zoom/linear/fade/none
// Optional libraries used to extend on reveal.js
dependencies: [
{ src: 'reveal.js/lib/js/classList.js', condition: function() { return !document.body.classList; } },
{ src: 'reveal.js/plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: 'reveal.js/plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
{ src: 'reveal.js/plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } },
{ src: 'reveal.js/plugin/zoom-js/zoom.js', async: true, condition: function() { return !!document.body.classList; } },
{ src: 'reveal.js/plugin/notes/notes.js', async: true, condition: function() { return !!document.body.classList; } }
// { src: 'reveal.js/plugin/search/search.js', async: true, condition: function() { return !!document.body.classList; } }
// { src: 'reveal.js/plugin/remotes/remotes.js', async: true, condition: function() { return !!document.body.classList; } }
]
});
</script>
</body>
</html>