SlideShare a Scribd company logo
1 of 104
Download to read offline
Joint Research Centre - European Commision, November 22, Ispra, Italy.




 Research & Development with
WebGL, Closure, GDAL & MapRank




                Petr Pridal <petr.pridal@klokantech.com>
WebGL Earth                 Closure Tools
     3D digital globe.         JavaScript Toolset.




MapTiler Cluster
   GDAL2Tiles on steroids.   GeoSearch with ranking.
!




                               beta


    WebGL Earth
Free and open source 3D digital globe
     for web and mobile devices
HTML5 & WebGL

• HTML5 <canvas> WebGL extension
• Based on OpenGL ES
                               KLOKAN TECHNOLOGIES - Museo 300

  • Supported by NVidia, ATI, Intel on desktop 500
                               KLOKAN TECHNOLOGIES - Museo
                               KLOKAN TECHNOLOGIES - Museo 700

  • HW acceleration on mobile devices
  • Firefox 4+, Chrome 9+, Opera, Safari
  • Internet Explorer: with Chrome Frame
WebGL: Shaders in GLSL



               KLOKAN TECHNOLOGIES - Museo 300
               KLOKAN TECHNOLOGIES - Museo 500
               KLOKAN TECHNOLOGIES - Museo 700
KLOKAN TECHNOLOGIES - Museo 300
KLOKAN TECHNOLOGIES - Museo 500
KLOKAN TECHNOLOGIES - Museo 700
KLOKAN TECHNOLOGIES - Museo 300
KLOKAN TECHNOLOGIES - Museo 500
KLOKAN TECHNOLOGIES - Museo 700
KLOKAN TECHNOLOGIES - Museo 300
KLOKAN TECHNOLOGIES - Museo 500
KLOKAN TECHNOLOGIES - Museo 700
KLOKAN TECHNOLOGIES - Museo 300
                                  KLOKAN TECHNOLOGIES - Museo 500
                                  KLOKAN TECHNOLOGIES - Museo 700

Inspired by OpenLayers.Layer.GoogleNG
          (done by Andreas Hocevar)



      Compliant to Google TOS?
Try the demo application:
                 KLOKAN TECHNOLOGIES - Museo 300


 www.webglearth.com
                 KLOKAN TECHNOLOGIES - Museo 500
                 KLOKAN TECHNOLOGIES - Museo 700
Mission of the project

• User friendly (dragging, zooming, ...)
• Keep it simple & maximally web oriented
                               KLOKAN TECHNOLOGIES - Museo 300
• Raster data from prerendered tiles, WMS, - Museo 500
                               KLOKAN TECHNOLOGIES
                                     KLOKAN TECHNOLOGIES - Museo 700
  existing tile APIs and TileCache, GeoServer...
• “NoServer” = o ine usage & cloud
• Calculations from CPU to GPU. Preprocess!
• Open-Source (GPLv3), Community powered
Open Source project

• Simple JavaScript API
  • Embed <script src=“...../api.js”>
  • Mashup with your own tiles, custom WMS, 500
                                KLOKAN TECHNOLOGIES - Museo 300
                                KLOKAN TECHNOLOGIES - Museo
     overlays, markers and popups TECHNOLOGIES - Museo 700
                              KLOKAN



• The full codebase + demo app sources on
  GitHub, object oriented, documented code,
  manual describing internals available
• Contributors: KlokanTech, CampToCamp,
  AI2 Spain, BIMServer.org, NOAA
JavaScript API: Demo



              KLOKAN TECHNOLOGIES - Museo 300
              KLOKAN TECHNOLOGIES - Museo 500
              KLOKAN TECHNOLOGIES - Museo 700
JavaScript API

• Embedding of the 3D globe
• Custom base maps and overlays with
    adjustable transparency (tilesKLOKAN TECHNOLOGIES - Museo 300
                                   + WMS)
                                        KLOKAN TECHNOLOGIES - Museo 500

•   Camera API, flyTo, bbox              KLOKAN TECHNOLOGIES - Museo 700



•   User interaction and events
•   Markers & popups
•   <canvas> is part of HTML DOM
Codebase: we, weapp

• Demo application (www.webglearth.com)
  completely open-source, API exports too
• Compiled with Closure Compiler with types: 300
                           KLOKAN TECHNOLOGIES - Museo
                           KLOKAN TECHNOLOGIES - Museo 500
  http://blog.klokantech.com/2010/12/closure-compiler-for-openlayers-3x.html
                                                  KLOKAN TECHNOLOGIES - Museo 700

• Documented (google style guideline)
• Technically, anything is possible :-)
• Manual describing the implementation
  details: http://data.webglearth.com/doc/
Object hierarchy



             KLOKAN TECHNOLOGIES - Museo 300
             KLOKAN TECHNOLOGIES - Museo 500
             KLOKAN TECHNOLOGIES - Museo 700
“Keep it simple” design

• Sphere with diameter 1.0
• WGS84 coordinates used without ellipsoid
  transformation (a la Google Maps, OSM, etc.)
                              KLOKAN TECHNOLOGIES - Museo 300
                              KLOKAN TECHNOLOGIES - Museo 500
                              KLOKAN TECHNOLOGIES - Museo 700
• Textures in Spherical Mercator (EPSG:3857,
  EPSG:900913)
• Clip stack for megatextures with lookup
• Segmented plane as the model
Segmented plane



            KLOKAN TECHNOLOGIES - Museo 300
            KLOKAN TECHNOLOGIES - Museo 500
            KLOKAN TECHNOLOGIES - Museo 700
Terrain



          KLOKAN TECHNOLOGIES - Museo 300
          KLOKAN TECHNOLOGIES - Museo 500
          KLOKAN TECHNOLOGIES - Museo 700
KLOKAN TECHNOLOGIES - Museo 300
KLOKAN TECHNOLOGIES - Museo 500
KLOKAN TECHNOLOGIES - Museo 700
KLOKAN TECHNOLOGIES - Museo 300
KLOKAN TECHNOLOGIES - Museo 500
KLOKAN TECHNOLOGIES - Museo 700
Vector data (direct rendering)

• Now: rasterized only (WMS, tiles with
  Mapnik, ...). Raster tiles must be there for
  aerial data.
                                 KLOKAN TECHNOLOGIES - Museo 300

• Future: direct rendering (from GeoJSON,
                                 KLOKAN TECHNOLOGIES - Museo 500
                                 KLOKAN TECHNOLOGIES - Museo 700

  KML, WFS, ...)
• Sharing code for loading data formats with
  OpenLayers 3, Leaflet, Polymaps?
• Vector Tiles - Google MapsGL
Future: Google MapsGL




               KLOKAN TECHNOLOGIES - Museo 300
               KLOKAN TECHNOLOGIES - Museo 500
               KLOKAN TECHNOLOGIES - Museo 700
Future: Mobile devices



                KLOKAN TECHNOLOGIES - Museo 300
                KLOKAN TECHNOLOGIES - Museo 500
                KLOKAN TECHNOLOGIES - Museo 700
Problems: drivers + CORS

• Long list of blacklisted graphic cards
• June 2011: Introduced restrictions on cross-
  domain textures for WebGL :-(
                                        KLOKAN TECHNOLOGIES - Museo 300

  • CORS HTTP Header:    Access-Control-Allow-Origin: * - Museo 500
                                        KLOKAN TECHNOLOGIES
                                        KLOKAN TECHNOLOGIES - Museo 700

  • http://enable-cors.org/ or chrome --disable-web-security
  • Support only in Chrome 15+ (beta), Firefox 8 (11/2011)

• Workaround for now: HTTP proxy
• Tiles hosted on your own server runs always!
Try it: 10 minut cookbook

• JavaScript API: check examples
• Prepare data (one of):
                             KLOKAN TECHNOLOGIES - Museo 300
  • WMS / TMS / WMTS in EPSG:900913 - Museo 500
                             KLOKAN TECHNOLOGIES
                             KLOKAN TECHNOLOGIES - Museo 700

  • Convert any GeoTIFF with GDAL2Tiles /
     MapTiler
• Copy everything on your web server
• Display in any modern web browser
Try it at:
         http://www.webglearth.com/

Project website, mailing-list, documentation:
        http://www.webglearth.org/
                                 KLOKAN TECHNOLOGIES - Museo 300
                                      KLOKAN TECHNOLOGIES - Museo 500
                                      KLOKAN TECHNOLOGIES - Museo 700
 Plans for integration with OpenLayers 3.0


    Support, open-source contracted development:
   Klokan Technologies: http://www.klokantech.com/
WebGL Earth                 Closure Tools
     3D digital globe.         JavaScript Toolset.




MapTiler Cluster
   GDAL2Tiles on steroids.   GeoSearch with ranking.
"




Closure Tools
OpenSource JavaScript Toolset
  developed by Google Inc.
"




        Compiler           Library
Templates    Linter       Stylesheets   JS Test
            (Coding Style Guidelines)

      http://code.google.com/closure/
It is all about compiler...

1. Compiles readable JavaScript into compressed
   machine-readable JavaScript: dead code removal,
   function inlining, etc.
                                   KLOKAN TECHNOLOGIES - Museo 300
                                   KLOKAN TECHNOLOGIES - Museo 500
2. JSDoc Tags: typos, wrong use of a @constructor,
                                   KLOKAN TECHNOLOGIES - Museo 700
   wrong type of a variable, misuse of a field
   annotated with @private and @protected, etc.
3. A reusable JavaScript library, such as OpenLayers,
   exports public API - and the compiler optimizes
   the internal code.


              http://goo.gl/H6twe
It is all about compiler...

4. Unused parts of the library stripped. Application
   dependencies solved during compilation.
5. Constants to remove unwanted functionality: - Museo 300
                                   KLOKAN TECHNOLOGIES
   Mobile WebKit only, no Quirks mode support, - Museo 500
                                   KLOKAN TECHNOLOGIES
                                   KLOKAN TECHNOLOGIES - Museo 700
   compilation without support of IE6
6. Debugging with FireBug possible even for the
   compiled version
7. Dynamically loadable modules, additional
   functionality loaded only when required.

                http://goo.gl/H6twe
Hello world


goog.require('goog.dom');

function sayHi() {                   KLOKAN TECHNOLOGIES - Museo 300
  var newHeader = goog.dom.createDom('h1', TECHNOLOGIES - Museo 500
                                     KLOKAN {'style':
                                     KLOKAN TECHNOLOGIES - Museo 700
'background-color:#EEE'},
    'Hello world!');
  goog.dom.appendChild(document.body, newHeader);
}

goog.exportSymbol('sayHi', sayHi);
How to start?

• Easiest is to get plovr - where all the tools
  are packed into one .jar application.
• Run java       -jar
                                          KLOKAN TECHNOLOGIES - Museo 300
                        plovr.jar serve config.json               and use
                                          KLOKAN TECHNOLOGIES - Museo 500
  it with HTML as          <script src="http://localhost: - Museo 700
                                          KLOKAN TECHNOLOGIES
  9810/compile?id=hello"></script>

• Plovr: Hello world + skeletons at GitHub:
  https://github.com/klokantech/closure-library-plovr-hello-world-skeletons/


• Closure Library websites:
  http://code.google.com/closure/library/
Where it excels?

• Complex online applications - any serious
    work done in JS
•   More developers working on KLOKANsame code 300
                                the TECHNOLOGIES - Museo
                                  KLOKAN TECHNOLOGIES - Museo 500

•                                 KLOKAN TECHNOLOGIES - Museo 700
    High peformance app + mobile apps
•   Libraries and APIs
•   :-( no fast copy & paste hacking
•   :-( steep learning curve, smaller community
Read more at:
       http://code.google.com/closure/

        Plovr.jar - the “packed” toolset:
                                 KLOKAN TECHNOLOGIES - Museo 300
                http://plovr.com/KLOKAN TECHNOLOGIES - Museo 500
                                      KLOKAN TECHNOLOGIES - Museo 700



The book: Closure Library, The Definitive Guide

        Blog post: http://goo.gl/H6twe
WebGL Earth                 Closure Tools
     3D digital globe.         JavaScript Toolset.




MapTiler Cluster
   GDAL2Tiles on steroids.   GeoSearch with ranking.
#




MapTiler Cluster
  GDAL2Tiles on steroids.
MAPTILER - WHAT IS IT?

• MapTiler is an application for rapid online map publishing
• Input: raster geodata (GeoTIFF, JPEG2000, MrSID, ECW, Erdas HFA,
  BSB, ...). Output: jpeg/png tiles
• Support for existing georeference (World Files, WKT, EPSG,...).
  Transformation (warping) of projections possible.
• Standards: OSGEO Tile Map Service Specification - TMS, comming OGC
  WMTS:
   • Web viewers (OpenLayers, Google Maps API) + applications
   • KML files (Google Earth)
   • iPhone + iPad + Android native applications
   • ArcGIS - with extensions (ArcBruTile). 10.1+ native WMTS support
GOOGLE MAPS OVERLAY DEMO
OPENLAYERS DEMO
GOOGLE EARTH DEMO
MAP TILER GENERATES TILES:
NECESSARY TRANSFORMATIONS AND WARPING




GEODETIC COORDINATES    SPHERICAL MERCATOR       PYRAMID COORDINATES       TILE INDEX
 LATITUDE LONGITUDE           METERS               XYZ PIXELS / ZOOM    XYZ TILE / ZOOM
  WGS 84 (EPSG:4326)   EPSG:3785 / EPSG:900913       WEB VIEWERS       TILE MAP SERVICE
SPHERICAL MERCATOR:
 TILE PROJECTION AND COORDINATES
     NOT ONLY IN GOOGLE MAPS!
• Popular on the web: Google Maps, Microsoft Bing
  Maps, Yahoo Maps, OpenStreetMap, ...
• Lat/Long WGS84 (GPS devices) datum coordinates
  always displayed to users - KML
• Map rasters are projected by a global Mercator
  projection: “Spherical Mercator”. EPSG:900913 /
  EPSG:3857 (meters)
• Conformal, cylindrical. Cropped to square (maximal
  latitude ~ 85.05 degrees), WGS84 ellipsoid is sphere!
OPEN-SOURCE ALTERNATIVES:
                  PREGENERATING X CACHING TILES


• Generating from raster input:        • Caching tiles from WMS servers
                                        (MapServer, GeoServer):
 • MapTiler & GDAL2Tiles
                                        • TileCache.org (Python)
 • MSR MapCruncher
                                        • GeoWebCache.org (Java Servlet)
• Generating from features (vectors)
 • Mapnik

 • GMapCreator,                        • Commercial alternatives
 • ...                                  • License per server (ArcGIS Server)
EXTREMELY FAST ONLINE MAPS
                 FOR THOUSANDS OF PEOPLE




• Easy hosting: only static files / or raster blobs in a database
• Extremely fast delivery, highest-quality output possible (you
 have more time for rendering), SLA for up to 99.99% availability
Our software is used ...
• ... in: web applications, mashups, native
  mobile applications (iPhone/iPad/Android),
  hardware appliances and 3D visualizations
• ... for: standard base maps, aerial imagery,
                                KLOKAN TECHNOLOGIES - Museo 300
                                KLOKAN TECHNOLOGIES - Museo 500
  coverage maps, thematic maps, marine
                                KLOKAN TECHNOLOGIES - Museo 700

  navigation, by pilots in airplains, on the
  ground during disaster events, ...
• ... by: Google, NOAA, NASA, CERN,
  Vodafone, T-Mobile, Orange, Three, United
  Nations, and thousands of developers
PARALLELIZED RENDERING:
                    MAPTILER CLUSTER
• Parallelized rendering on Multi-Core processors or even on
 computer clusters (Amazon EC2 supported)
 • Speed-up the rendering on modern computers

 • Rendering on a computer cluster (Amazon EC2) - price: 0.1 USD / hour / core

 • Publishing of tiles on a world-wide CDNs (Amazon S3/CloudFront, Google App
   Engine, Azure, SimpleCDN) - fast multi-threaded upload for tiles possible

• Merging of huge raster datasets into a seamless map a la
 Google Maps on a computer cluster:
 • Fast parallelized rendering and merging of large data collections




                                                                                    s
                                                                                  nt
 • Cluster parallelization based on MPI




                                                                                 lie
                                                                             rc
 • Test of MapReduce approach (via Nokia labs Disco project)




                                                                           fo
MapTiler Cluster vs
            GDAL2Tiles
•   Fast rendering: multi-core CPU & MPI cluster
•   Direct merging of several input files
•   Excellent visual quality
•   Heavily optimized PNGs/JPEGs tiles to speed
    up the delivery and save disk space
• Precise "data over-zooming"
• Various coordinate systems supported




                                                     s
                                                   nt
                                               lie
                                              rc
                                            fo
WWW . MAPTILER . ORG
Runs under Windows, Linux and Mac OS X + GDAL2Tiles
        You can try it on the FOSS4G LiveDVD!
          Community: MapTiler User Group
                 maptiler@googlegrups.com

  MapTiler Cluster, commercial support, integration,
                    customization
                 http://www.maptiler.com/
WebGL Earth                 Closure Tools
     3D digital globe.         JavaScript Toolset.




MapTiler Cluster
   GDAL2Tiles on steroids.   GeoSearch with ranking.
$




Geosearch with ranking.
GEOGRAPHICAL SEARCHING
    • Research, scientific articles, work on Ph.D. thesis (Petr Přidal),
      Computer Science + Geodesy and Cartography
    • Alternative projects tested in OldMapsOnline.org (R&D project in MZK):
       • Lucene with GeoTemporal Ext. (LGTE) from DigMap.eu
       • Alexandria Digital Library
       • TimeMap.net (ECAI.org)
       • Google GeoSearch API
    • Knowledge of traditional GIS search methods (PostGIS, ...)

Result: Development of a new geographical search engine
                 for map collections.
CORE FEATURES

• Map-driven interface: Simple. Intuitive. Web 2.0.
  Users love it!
• Combined queries: Where, When, Who & What
• Results sorted geographically with an advanced
  spatial ranking algorithm.
• Instant search. Immediate delivery of the results by
  moving the map or typing.
• It is fast. Even for large databases (million+ records).
METADATA & CUSTOMIZATION
• Indexing metadata in MARC, DublinCore, ISO
  19139 formats, ...
• Batch import or harvesting: OAI-PMH or OGC CWS
• Numerical geographical boundaries necessary!
  (MARC 034, DublinCore DCMI) - enrichment with
  Geoparser or Georeferencer tools
• Possible customization of the user interface,
  integration into products or websites
• For developers: REST API (JSON format), queries
  following OpenSearch.org
Try it at: http://demo.mapranksearch.com/
Try it at: http://rumsey.mapranksearch.com/
Try it at: http://mapy.mzk.cz/
TOUCH INTERFACE
MAPRANK RANKING &
               SCALABILITY
• MapRank ranking: an advanced algorithm calculating
  similarity of geographical area of query and area covered
  by every document and combining it with map scale, time
  range, predefined categories and traditional full text
  search.
• Data indexing implemented specifically to provide ranked
  real-time results even for large databases. Traditional R-
  Tree indexing or Lucene are failing.
• Server component: FastCGI, C++
• Default user interface developed with Closure JavaScript
  Library + Closure Compiler.
ENRICHMENT OF METADATA

Geoparser
Text parsing and semi-automatic assignment of
bounding boxes to map records with detectable
geonames (gazetteer), known physical size and map
scale.

Georeferencer
Crowdsourced georeferencing. Higher accuracy, more
outputs beside geometadata such as visualization, 3D
view, comparing of maps, OGC WMS for use in GIS.
WWW.MAPRANKSEARCH . COM
Thank you!
                Questions, ideas?
    Cooperation on OpenSource and R&D?
Coding week for OpenLayers3 & WebGL Earth?
Interest in applications of MapTiler / MapRank?




        Petr Pridal <petr.pridal@klokantech.com>

More Related Content

Similar to GDAL & WebGL: European Commission, Joint Research Center, Ispra

Barcelona nls-maps-api-print
Barcelona nls-maps-api-printBarcelona nls-maps-api-print
Barcelona nls-maps-api-printPetr Pridal
 
Clocker - How to Train your Docker Cloud
Clocker - How to Train your Docker CloudClocker - How to Train your Docker Cloud
Clocker - How to Train your Docker CloudAndrew Kennedy
 
CloudStack / Saltstack lightning talk at DevOps Amsterdam
CloudStack / Saltstack lightning talk at DevOps AmsterdamCloudStack / Saltstack lightning talk at DevOps Amsterdam
CloudStack / Saltstack lightning talk at DevOps AmsterdamSebastien Goasguen
 
Devoxx 2010 | Tools In Action : Kauri and Lily
Devoxx 2010 | Tools In Action : Kauri and LilyDevoxx 2010 | Tools In Action : Kauri and Lily
Devoxx 2010 | Tools In Action : Kauri and LilyNGDATA
 
#_Openstack.pptx
#_Openstack.pptx#_Openstack.pptx
#_Openstack.pptxMelSarita1
 
Containers and CloudStack
Containers and CloudStackContainers and CloudStack
Containers and CloudStackShapeBlue
 
DemoCamp Budapest 2016 - Introdcution
DemoCamp Budapest 2016 - IntrodcutionDemoCamp Budapest 2016 - Introdcution
DemoCamp Budapest 2016 - IntrodcutionÁkos Horváth
 
Teaching Apache Spark Clusters to Manage Their Workers Elastically: Spark Sum...
Teaching Apache Spark Clusters to Manage Their Workers Elastically: Spark Sum...Teaching Apache Spark Clusters to Manage Their Workers Elastically: Spark Sum...
Teaching Apache Spark Clusters to Manage Their Workers Elastically: Spark Sum...Spark Summit
 
Getting Groovy with JHipster and Micronaut
Getting Groovy with JHipster and MicronautGetting Groovy with JHipster and Micronaut
Getting Groovy with JHipster and MicronautZachary Klein
 
OCCIware Year 1 Milestone: Docker Studio, Studio Factory, pluggable XaaS runt...
OCCIware Year 1 Milestone: Docker Studio, Studio Factory, pluggable XaaS runt...OCCIware Year 1 Milestone: Docker Studio, Studio Factory, pluggable XaaS runt...
OCCIware Year 1 Milestone: Docker Studio, Studio Factory, pluggable XaaS runt...OCCIware
 
OCCIware Cloud Expo London 2016 - Docker Studio, Studio Factory, erocci bus &...
OCCIware Cloud Expo London 2016 - Docker Studio, Studio Factory, erocci bus &...OCCIware Cloud Expo London 2016 - Docker Studio, Studio Factory, erocci bus &...
OCCIware Cloud Expo London 2016 - Docker Studio, Studio Factory, erocci bus &...Marc Dutoo
 
WT-4069, WebCL: Enabling OpenCL Acceleration of Web Applications, by Mikael ...
WT-4069, WebCL: Enabling OpenCL Acceleration of Web Applications, by  Mikael ...WT-4069, WebCL: Enabling OpenCL Acceleration of Web Applications, by  Mikael ...
WT-4069, WebCL: Enabling OpenCL Acceleration of Web Applications, by Mikael ...AMD Developer Central
 
Automate your oracle cloud infrastructure operations v2.0 - OOW19
Automate your oracle cloud infrastructure operations v2.0 - OOW19Automate your oracle cloud infrastructure operations v2.0 - OOW19
Automate your oracle cloud infrastructure operations v2.0 - OOW19Nelson Calero
 
XML London 2013 - Architecture of xproc.xq an XProc processor
XML London 2013 - Architecture of xproc.xq an XProc processorXML London 2013 - Architecture of xproc.xq an XProc processor
XML London 2013 - Architecture of xproc.xq an XProc processorjimfuller2009
 
Kolla talk at OpenStack Summit 2017 in Sydney
Kolla talk at OpenStack Summit 2017 in SydneyKolla talk at OpenStack Summit 2017 in Sydney
Kolla talk at OpenStack Summit 2017 in SydneyVikram G Hosakote
 
Cloud Native Application Development - build fast, cheap, scalable and agile ...
Cloud Native Application Development - build fast, cheap, scalable and agile ...Cloud Native Application Development - build fast, cheap, scalable and agile ...
Cloud Native Application Development - build fast, cheap, scalable and agile ...Lucas Jellema
 
OpenStack APIs: Present and Future (Beta Talk)
OpenStack APIs: Present and Future (Beta Talk)OpenStack APIs: Present and Future (Beta Talk)
OpenStack APIs: Present and Future (Beta Talk)Wade Minter
 
Docker Platform and Ecosystem Nov 2015
Docker Platform and Ecosystem Nov 2015Docker Platform and Ecosystem Nov 2015
Docker Platform and Ecosystem Nov 2015Patrick Chanezon
 
Scala, ECS, Docker: Delayed Execution @Coursera
Scala, ECS, Docker: Delayed Execution @CourseraScala, ECS, Docker: Delayed Execution @Coursera
Scala, ECS, Docker: Delayed Execution @CourseraC4Media
 
On-Premises Serverless Container-Aware Architecture (OSCAR)
On-Premises Serverless Container-Aware Architecture (OSCAR)On-Premises Serverless Container-Aware Architecture (OSCAR)
On-Premises Serverless Container-Aware Architecture (OSCAR)Germán Moltó
 

Similar to GDAL & WebGL: European Commission, Joint Research Center, Ispra (20)

Barcelona nls-maps-api-print
Barcelona nls-maps-api-printBarcelona nls-maps-api-print
Barcelona nls-maps-api-print
 
Clocker - How to Train your Docker Cloud
Clocker - How to Train your Docker CloudClocker - How to Train your Docker Cloud
Clocker - How to Train your Docker Cloud
 
CloudStack / Saltstack lightning talk at DevOps Amsterdam
CloudStack / Saltstack lightning talk at DevOps AmsterdamCloudStack / Saltstack lightning talk at DevOps Amsterdam
CloudStack / Saltstack lightning talk at DevOps Amsterdam
 
Devoxx 2010 | Tools In Action : Kauri and Lily
Devoxx 2010 | Tools In Action : Kauri and LilyDevoxx 2010 | Tools In Action : Kauri and Lily
Devoxx 2010 | Tools In Action : Kauri and Lily
 
#_Openstack.pptx
#_Openstack.pptx#_Openstack.pptx
#_Openstack.pptx
 
Containers and CloudStack
Containers and CloudStackContainers and CloudStack
Containers and CloudStack
 
DemoCamp Budapest 2016 - Introdcution
DemoCamp Budapest 2016 - IntrodcutionDemoCamp Budapest 2016 - Introdcution
DemoCamp Budapest 2016 - Introdcution
 
Teaching Apache Spark Clusters to Manage Their Workers Elastically: Spark Sum...
Teaching Apache Spark Clusters to Manage Their Workers Elastically: Spark Sum...Teaching Apache Spark Clusters to Manage Their Workers Elastically: Spark Sum...
Teaching Apache Spark Clusters to Manage Their Workers Elastically: Spark Sum...
 
Getting Groovy with JHipster and Micronaut
Getting Groovy with JHipster and MicronautGetting Groovy with JHipster and Micronaut
Getting Groovy with JHipster and Micronaut
 
OCCIware Year 1 Milestone: Docker Studio, Studio Factory, pluggable XaaS runt...
OCCIware Year 1 Milestone: Docker Studio, Studio Factory, pluggable XaaS runt...OCCIware Year 1 Milestone: Docker Studio, Studio Factory, pluggable XaaS runt...
OCCIware Year 1 Milestone: Docker Studio, Studio Factory, pluggable XaaS runt...
 
OCCIware Cloud Expo London 2016 - Docker Studio, Studio Factory, erocci bus &...
OCCIware Cloud Expo London 2016 - Docker Studio, Studio Factory, erocci bus &...OCCIware Cloud Expo London 2016 - Docker Studio, Studio Factory, erocci bus &...
OCCIware Cloud Expo London 2016 - Docker Studio, Studio Factory, erocci bus &...
 
WT-4069, WebCL: Enabling OpenCL Acceleration of Web Applications, by Mikael ...
WT-4069, WebCL: Enabling OpenCL Acceleration of Web Applications, by  Mikael ...WT-4069, WebCL: Enabling OpenCL Acceleration of Web Applications, by  Mikael ...
WT-4069, WebCL: Enabling OpenCL Acceleration of Web Applications, by Mikael ...
 
Automate your oracle cloud infrastructure operations v2.0 - OOW19
Automate your oracle cloud infrastructure operations v2.0 - OOW19Automate your oracle cloud infrastructure operations v2.0 - OOW19
Automate your oracle cloud infrastructure operations v2.0 - OOW19
 
XML London 2013 - Architecture of xproc.xq an XProc processor
XML London 2013 - Architecture of xproc.xq an XProc processorXML London 2013 - Architecture of xproc.xq an XProc processor
XML London 2013 - Architecture of xproc.xq an XProc processor
 
Kolla talk at OpenStack Summit 2017 in Sydney
Kolla talk at OpenStack Summit 2017 in SydneyKolla talk at OpenStack Summit 2017 in Sydney
Kolla talk at OpenStack Summit 2017 in Sydney
 
Cloud Native Application Development - build fast, cheap, scalable and agile ...
Cloud Native Application Development - build fast, cheap, scalable and agile ...Cloud Native Application Development - build fast, cheap, scalable and agile ...
Cloud Native Application Development - build fast, cheap, scalable and agile ...
 
OpenStack APIs: Present and Future (Beta Talk)
OpenStack APIs: Present and Future (Beta Talk)OpenStack APIs: Present and Future (Beta Talk)
OpenStack APIs: Present and Future (Beta Talk)
 
Docker Platform and Ecosystem Nov 2015
Docker Platform and Ecosystem Nov 2015Docker Platform and Ecosystem Nov 2015
Docker Platform and Ecosystem Nov 2015
 
Scala, ECS, Docker: Delayed Execution @Coursera
Scala, ECS, Docker: Delayed Execution @CourseraScala, ECS, Docker: Delayed Execution @Coursera
Scala, ECS, Docker: Delayed Execution @Coursera
 
On-Premises Serverless Container-Aware Architecture (OSCAR)
On-Premises Serverless Container-Aware Architecture (OSCAR)On-Premises Serverless Container-Aware Architecture (OSCAR)
On-Premises Serverless Container-Aware Architecture (OSCAR)
 

Recently uploaded

DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 

Recently uploaded (20)

DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 

GDAL & WebGL: European Commission, Joint Research Center, Ispra

  • 1. Joint Research Centre - European Commision, November 22, Ispra, Italy. Research & Development with WebGL, Closure, GDAL & MapRank Petr Pridal <petr.pridal@klokantech.com>
  • 2.
  • 3.
  • 4. WebGL Earth Closure Tools 3D digital globe. JavaScript Toolset. MapTiler Cluster GDAL2Tiles on steroids. GeoSearch with ranking.
  • 5. ! beta WebGL Earth Free and open source 3D digital globe for web and mobile devices
  • 6. HTML5 & WebGL • HTML5 <canvas> WebGL extension • Based on OpenGL ES KLOKAN TECHNOLOGIES - Museo 300 • Supported by NVidia, ATI, Intel on desktop 500 KLOKAN TECHNOLOGIES - Museo KLOKAN TECHNOLOGIES - Museo 700 • HW acceleration on mobile devices • Firefox 4+, Chrome 9+, Opera, Safari • Internet Explorer: with Chrome Frame
  • 7. WebGL: Shaders in GLSL KLOKAN TECHNOLOGIES - Museo 300 KLOKAN TECHNOLOGIES - Museo 500 KLOKAN TECHNOLOGIES - Museo 700
  • 8. KLOKAN TECHNOLOGIES - Museo 300 KLOKAN TECHNOLOGIES - Museo 500 KLOKAN TECHNOLOGIES - Museo 700
  • 9. KLOKAN TECHNOLOGIES - Museo 300 KLOKAN TECHNOLOGIES - Museo 500 KLOKAN TECHNOLOGIES - Museo 700
  • 10. KLOKAN TECHNOLOGIES - Museo 300 KLOKAN TECHNOLOGIES - Museo 500 KLOKAN TECHNOLOGIES - Museo 700
  • 11.
  • 12. KLOKAN TECHNOLOGIES - Museo 300 KLOKAN TECHNOLOGIES - Museo 500 KLOKAN TECHNOLOGIES - Museo 700 Inspired by OpenLayers.Layer.GoogleNG (done by Andreas Hocevar) Compliant to Google TOS?
  • 13. Try the demo application: KLOKAN TECHNOLOGIES - Museo 300 www.webglearth.com KLOKAN TECHNOLOGIES - Museo 500 KLOKAN TECHNOLOGIES - Museo 700
  • 14. Mission of the project • User friendly (dragging, zooming, ...) • Keep it simple & maximally web oriented KLOKAN TECHNOLOGIES - Museo 300 • Raster data from prerendered tiles, WMS, - Museo 500 KLOKAN TECHNOLOGIES KLOKAN TECHNOLOGIES - Museo 700 existing tile APIs and TileCache, GeoServer... • “NoServer” = o ine usage & cloud • Calculations from CPU to GPU. Preprocess! • Open-Source (GPLv3), Community powered
  • 15. Open Source project • Simple JavaScript API • Embed <script src=“...../api.js”> • Mashup with your own tiles, custom WMS, 500 KLOKAN TECHNOLOGIES - Museo 300 KLOKAN TECHNOLOGIES - Museo overlays, markers and popups TECHNOLOGIES - Museo 700 KLOKAN • The full codebase + demo app sources on GitHub, object oriented, documented code, manual describing internals available • Contributors: KlokanTech, CampToCamp, AI2 Spain, BIMServer.org, NOAA
  • 16. JavaScript API: Demo KLOKAN TECHNOLOGIES - Museo 300 KLOKAN TECHNOLOGIES - Museo 500 KLOKAN TECHNOLOGIES - Museo 700
  • 17. JavaScript API • Embedding of the 3D globe • Custom base maps and overlays with adjustable transparency (tilesKLOKAN TECHNOLOGIES - Museo 300 + WMS) KLOKAN TECHNOLOGIES - Museo 500 • Camera API, flyTo, bbox KLOKAN TECHNOLOGIES - Museo 700 • User interaction and events • Markers & popups • <canvas> is part of HTML DOM
  • 18.
  • 19.
  • 20. Codebase: we, weapp • Demo application (www.webglearth.com) completely open-source, API exports too • Compiled with Closure Compiler with types: 300 KLOKAN TECHNOLOGIES - Museo KLOKAN TECHNOLOGIES - Museo 500 http://blog.klokantech.com/2010/12/closure-compiler-for-openlayers-3x.html KLOKAN TECHNOLOGIES - Museo 700 • Documented (google style guideline) • Technically, anything is possible :-) • Manual describing the implementation details: http://data.webglearth.com/doc/
  • 21.
  • 22. Object hierarchy KLOKAN TECHNOLOGIES - Museo 300 KLOKAN TECHNOLOGIES - Museo 500 KLOKAN TECHNOLOGIES - Museo 700
  • 23. “Keep it simple” design • Sphere with diameter 1.0 • WGS84 coordinates used without ellipsoid transformation (a la Google Maps, OSM, etc.) KLOKAN TECHNOLOGIES - Museo 300 KLOKAN TECHNOLOGIES - Museo 500 KLOKAN TECHNOLOGIES - Museo 700 • Textures in Spherical Mercator (EPSG:3857, EPSG:900913) • Clip stack for megatextures with lookup • Segmented plane as the model
  • 24. Segmented plane KLOKAN TECHNOLOGIES - Museo 300 KLOKAN TECHNOLOGIES - Museo 500 KLOKAN TECHNOLOGIES - Museo 700
  • 25. Terrain KLOKAN TECHNOLOGIES - Museo 300 KLOKAN TECHNOLOGIES - Museo 500 KLOKAN TECHNOLOGIES - Museo 700
  • 26. KLOKAN TECHNOLOGIES - Museo 300 KLOKAN TECHNOLOGIES - Museo 500 KLOKAN TECHNOLOGIES - Museo 700
  • 27. KLOKAN TECHNOLOGIES - Museo 300 KLOKAN TECHNOLOGIES - Museo 500 KLOKAN TECHNOLOGIES - Museo 700
  • 28. Vector data (direct rendering) • Now: rasterized only (WMS, tiles with Mapnik, ...). Raster tiles must be there for aerial data. KLOKAN TECHNOLOGIES - Museo 300 • Future: direct rendering (from GeoJSON, KLOKAN TECHNOLOGIES - Museo 500 KLOKAN TECHNOLOGIES - Museo 700 KML, WFS, ...) • Sharing code for loading data formats with OpenLayers 3, Leaflet, Polymaps? • Vector Tiles - Google MapsGL
  • 29. Future: Google MapsGL KLOKAN TECHNOLOGIES - Museo 300 KLOKAN TECHNOLOGIES - Museo 500 KLOKAN TECHNOLOGIES - Museo 700
  • 30. Future: Mobile devices KLOKAN TECHNOLOGIES - Museo 300 KLOKAN TECHNOLOGIES - Museo 500 KLOKAN TECHNOLOGIES - Museo 700
  • 31. Problems: drivers + CORS • Long list of blacklisted graphic cards • June 2011: Introduced restrictions on cross- domain textures for WebGL :-( KLOKAN TECHNOLOGIES - Museo 300 • CORS HTTP Header: Access-Control-Allow-Origin: * - Museo 500 KLOKAN TECHNOLOGIES KLOKAN TECHNOLOGIES - Museo 700 • http://enable-cors.org/ or chrome --disable-web-security • Support only in Chrome 15+ (beta), Firefox 8 (11/2011) • Workaround for now: HTTP proxy • Tiles hosted on your own server runs always!
  • 32. Try it: 10 minut cookbook • JavaScript API: check examples • Prepare data (one of): KLOKAN TECHNOLOGIES - Museo 300 • WMS / TMS / WMTS in EPSG:900913 - Museo 500 KLOKAN TECHNOLOGIES KLOKAN TECHNOLOGIES - Museo 700 • Convert any GeoTIFF with GDAL2Tiles / MapTiler • Copy everything on your web server • Display in any modern web browser
  • 33. Try it at: http://www.webglearth.com/ Project website, mailing-list, documentation: http://www.webglearth.org/ KLOKAN TECHNOLOGIES - Museo 300 KLOKAN TECHNOLOGIES - Museo 500 KLOKAN TECHNOLOGIES - Museo 700 Plans for integration with OpenLayers 3.0 Support, open-source contracted development: Klokan Technologies: http://www.klokantech.com/
  • 34. WebGL Earth Closure Tools 3D digital globe. JavaScript Toolset. MapTiler Cluster GDAL2Tiles on steroids. GeoSearch with ranking.
  • 35. " Closure Tools OpenSource JavaScript Toolset developed by Google Inc.
  • 36. " Compiler Library Templates Linter Stylesheets JS Test (Coding Style Guidelines) http://code.google.com/closure/
  • 37. It is all about compiler... 1. Compiles readable JavaScript into compressed machine-readable JavaScript: dead code removal, function inlining, etc. KLOKAN TECHNOLOGIES - Museo 300 KLOKAN TECHNOLOGIES - Museo 500 2. JSDoc Tags: typos, wrong use of a @constructor, KLOKAN TECHNOLOGIES - Museo 700 wrong type of a variable, misuse of a field annotated with @private and @protected, etc. 3. A reusable JavaScript library, such as OpenLayers, exports public API - and the compiler optimizes the internal code. http://goo.gl/H6twe
  • 38. It is all about compiler... 4. Unused parts of the library stripped. Application dependencies solved during compilation. 5. Constants to remove unwanted functionality: - Museo 300 KLOKAN TECHNOLOGIES Mobile WebKit only, no Quirks mode support, - Museo 500 KLOKAN TECHNOLOGIES KLOKAN TECHNOLOGIES - Museo 700 compilation without support of IE6 6. Debugging with FireBug possible even for the compiled version 7. Dynamically loadable modules, additional functionality loaded only when required. http://goo.gl/H6twe
  • 39. Hello world goog.require('goog.dom'); function sayHi() { KLOKAN TECHNOLOGIES - Museo 300   var newHeader = goog.dom.createDom('h1', TECHNOLOGIES - Museo 500 KLOKAN {'style': KLOKAN TECHNOLOGIES - Museo 700 'background-color:#EEE'},     'Hello world!');   goog.dom.appendChild(document.body, newHeader); } goog.exportSymbol('sayHi', sayHi);
  • 40. How to start? • Easiest is to get plovr - where all the tools are packed into one .jar application. • Run java -jar KLOKAN TECHNOLOGIES - Museo 300 plovr.jar serve config.json and use KLOKAN TECHNOLOGIES - Museo 500 it with HTML as <script src="http://localhost: - Museo 700 KLOKAN TECHNOLOGIES 9810/compile?id=hello"></script> • Plovr: Hello world + skeletons at GitHub: https://github.com/klokantech/closure-library-plovr-hello-world-skeletons/ • Closure Library websites: http://code.google.com/closure/library/
  • 41.
  • 42. Where it excels? • Complex online applications - any serious work done in JS • More developers working on KLOKANsame code 300 the TECHNOLOGIES - Museo KLOKAN TECHNOLOGIES - Museo 500 • KLOKAN TECHNOLOGIES - Museo 700 High peformance app + mobile apps • Libraries and APIs • :-( no fast copy & paste hacking • :-( steep learning curve, smaller community
  • 43. Read more at: http://code.google.com/closure/ Plovr.jar - the “packed” toolset: KLOKAN TECHNOLOGIES - Museo 300 http://plovr.com/KLOKAN TECHNOLOGIES - Museo 500 KLOKAN TECHNOLOGIES - Museo 700 The book: Closure Library, The Definitive Guide Blog post: http://goo.gl/H6twe
  • 44. WebGL Earth Closure Tools 3D digital globe. JavaScript Toolset. MapTiler Cluster GDAL2Tiles on steroids. GeoSearch with ranking.
  • 45. # MapTiler Cluster GDAL2Tiles on steroids.
  • 46.
  • 47. MAPTILER - WHAT IS IT? • MapTiler is an application for rapid online map publishing • Input: raster geodata (GeoTIFF, JPEG2000, MrSID, ECW, Erdas HFA, BSB, ...). Output: jpeg/png tiles • Support for existing georeference (World Files, WKT, EPSG,...). Transformation (warping) of projections possible. • Standards: OSGEO Tile Map Service Specification - TMS, comming OGC WMTS: • Web viewers (OpenLayers, Google Maps API) + applications • KML files (Google Earth) • iPhone + iPad + Android native applications • ArcGIS - with extensions (ArcBruTile). 10.1+ native WMTS support
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 70. NECESSARY TRANSFORMATIONS AND WARPING GEODETIC COORDINATES SPHERICAL MERCATOR PYRAMID COORDINATES TILE INDEX LATITUDE LONGITUDE METERS XYZ PIXELS / ZOOM XYZ TILE / ZOOM WGS 84 (EPSG:4326) EPSG:3785 / EPSG:900913 WEB VIEWERS TILE MAP SERVICE
  • 71. SPHERICAL MERCATOR: TILE PROJECTION AND COORDINATES NOT ONLY IN GOOGLE MAPS! • Popular on the web: Google Maps, Microsoft Bing Maps, Yahoo Maps, OpenStreetMap, ... • Lat/Long WGS84 (GPS devices) datum coordinates always displayed to users - KML • Map rasters are projected by a global Mercator projection: “Spherical Mercator”. EPSG:900913 / EPSG:3857 (meters) • Conformal, cylindrical. Cropped to square (maximal latitude ~ 85.05 degrees), WGS84 ellipsoid is sphere!
  • 72. OPEN-SOURCE ALTERNATIVES: PREGENERATING X CACHING TILES • Generating from raster input: • Caching tiles from WMS servers (MapServer, GeoServer): • MapTiler & GDAL2Tiles • TileCache.org (Python) • MSR MapCruncher • GeoWebCache.org (Java Servlet) • Generating from features (vectors) • Mapnik • GMapCreator, • Commercial alternatives • ... • License per server (ArcGIS Server)
  • 73. EXTREMELY FAST ONLINE MAPS FOR THOUSANDS OF PEOPLE • Easy hosting: only static files / or raster blobs in a database • Extremely fast delivery, highest-quality output possible (you have more time for rendering), SLA for up to 99.99% availability
  • 74. Our software is used ... • ... in: web applications, mashups, native mobile applications (iPhone/iPad/Android), hardware appliances and 3D visualizations • ... for: standard base maps, aerial imagery, KLOKAN TECHNOLOGIES - Museo 300 KLOKAN TECHNOLOGIES - Museo 500 coverage maps, thematic maps, marine KLOKAN TECHNOLOGIES - Museo 700 navigation, by pilots in airplains, on the ground during disaster events, ... • ... by: Google, NOAA, NASA, CERN, Vodafone, T-Mobile, Orange, Three, United Nations, and thousands of developers
  • 75. PARALLELIZED RENDERING: MAPTILER CLUSTER • Parallelized rendering on Multi-Core processors or even on computer clusters (Amazon EC2 supported) • Speed-up the rendering on modern computers • Rendering on a computer cluster (Amazon EC2) - price: 0.1 USD / hour / core • Publishing of tiles on a world-wide CDNs (Amazon S3/CloudFront, Google App Engine, Azure, SimpleCDN) - fast multi-threaded upload for tiles possible • Merging of huge raster datasets into a seamless map a la Google Maps on a computer cluster: • Fast parallelized rendering and merging of large data collections s nt • Cluster parallelization based on MPI lie rc • Test of MapReduce approach (via Nokia labs Disco project) fo
  • 76. MapTiler Cluster vs GDAL2Tiles • Fast rendering: multi-core CPU & MPI cluster • Direct merging of several input files • Excellent visual quality • Heavily optimized PNGs/JPEGs tiles to speed up the delivery and save disk space • Precise "data over-zooming" • Various coordinate systems supported s nt lie rc fo
  • 77.
  • 78.
  • 79.
  • 80.
  • 81.
  • 82.
  • 83.
  • 84.
  • 85.
  • 86.
  • 87. WWW . MAPTILER . ORG Runs under Windows, Linux and Mac OS X + GDAL2Tiles You can try it on the FOSS4G LiveDVD! Community: MapTiler User Group maptiler@googlegrups.com MapTiler Cluster, commercial support, integration, customization http://www.maptiler.com/
  • 88. WebGL Earth Closure Tools 3D digital globe. JavaScript Toolset. MapTiler Cluster GDAL2Tiles on steroids. GeoSearch with ranking.
  • 90. GEOGRAPHICAL SEARCHING • Research, scientific articles, work on Ph.D. thesis (Petr Přidal), Computer Science + Geodesy and Cartography • Alternative projects tested in OldMapsOnline.org (R&D project in MZK): • Lucene with GeoTemporal Ext. (LGTE) from DigMap.eu • Alexandria Digital Library • TimeMap.net (ECAI.org) • Google GeoSearch API • Knowledge of traditional GIS search methods (PostGIS, ...) Result: Development of a new geographical search engine for map collections.
  • 91. CORE FEATURES • Map-driven interface: Simple. Intuitive. Web 2.0. Users love it! • Combined queries: Where, When, Who & What • Results sorted geographically with an advanced spatial ranking algorithm. • Instant search. Immediate delivery of the results by moving the map or typing. • It is fast. Even for large databases (million+ records).
  • 92. METADATA & CUSTOMIZATION • Indexing metadata in MARC, DublinCore, ISO 19139 formats, ... • Batch import or harvesting: OAI-PMH or OGC CWS • Numerical geographical boundaries necessary! (MARC 034, DublinCore DCMI) - enrichment with Geoparser or Georeferencer tools • Possible customization of the user interface, integration into products or websites • For developers: REST API (JSON format), queries following OpenSearch.org
  • 93. Try it at: http://demo.mapranksearch.com/
  • 94. Try it at: http://rumsey.mapranksearch.com/
  • 95. Try it at: http://mapy.mzk.cz/
  • 97. MAPRANK RANKING & SCALABILITY • MapRank ranking: an advanced algorithm calculating similarity of geographical area of query and area covered by every document and combining it with map scale, time range, predefined categories and traditional full text search. • Data indexing implemented specifically to provide ranked real-time results even for large databases. Traditional R- Tree indexing or Lucene are failing. • Server component: FastCGI, C++ • Default user interface developed with Closure JavaScript Library + Closure Compiler.
  • 98. ENRICHMENT OF METADATA Geoparser Text parsing and semi-automatic assignment of bounding boxes to map records with detectable geonames (gazetteer), known physical size and map scale. Georeferencer Crowdsourced georeferencing. Higher accuracy, more outputs beside geometadata such as visualization, 3D view, comparing of maps, OGC WMS for use in GIS.
  • 99.
  • 100.
  • 101.
  • 102.
  • 104. Thank you! Questions, ideas? Cooperation on OpenSource and R&D? Coding week for OpenLayers3 & WebGL Earth? Interest in applications of MapTiler / MapRank? Petr Pridal <petr.pridal@klokantech.com>