SlideShare a Scribd company logo
1 of 24
Download to read offline
OPENLAYERS 3
UNE BIBLIOTHÈQUE UNIQUE !
Ou
« Pourquoi OL3 est fantastique ? »
www.camptocamp.com / 2/24
Plan
■ Objectifs/Vision OL3 – rappel
■ Exemples de techniques/outils utilisées dans OL3
www.camptocamp.com / 3/24
Objectifs/Vision OL3
www.camptocamp.com / 4/24
Convergence 2D 3D
www.camptocamp.com / 5/24
Vecteur riche/complexe
www.camptocamp.com / 6/24
Les cartes sont des graphiques
www.camptocamp.com / 7/24
Résumé des objectifs
■ Richesse fonctionnelle
■ Gestion de données 3D
■ Gestion de vecteurs complexes
■ Qualité des rendus (retina)
■ Performance et robustesse
« Les cartes sont des graphiques »
www.camptocamp.com / 8/24
Techniques/outils utilisées dans OL3
www.camptocamp.com / 9/24
Du vrai vecteur !
Les vecteurs sont dessinés très souvent.
■ pendant les animations
■ pendant les interactions (pendant le "pinch-zoom" !)
Avantages :
■ qualité du rendu – pas de "blur" suite à une rotation
■ les labels et icônes ne tournent pas avec la carte
La démo…
www.camptocamp.com / 10/24
Performance
Comment dessiner souvent et obtenir de bonnes performances ?
⇨ Utilisation de techniques et algorithmes adaptés.
On pousse l'implémentation à ses limites !
www.camptocamp.com / 11/24
Simplification des géométries
On dessine des géométries simplifiées, pour ne pas dessiner des
"vertex" qui sont sur le même pixel.
■ Douglas Peucker
■ "Quantization" – maintien de la topologie
La simplification permet aussi un rendu de meilleure qualité aux
petites échelles.
La démo…
www.camptocamp.com / 12/24
Batching
On minimise les traitements et manipulations de données.
■ calcul des styles
■ simplification des géométries
■ lecture des features dans le R-tree
■ et toutes les implications sur le garbage collector
⇨ Système de "batch/replay" dans le renderer. On réutilise le batch
pendant les animations et les interactions.
Important pour WebGL !
La démo…
www.camptocamp.com / 13/24
Sur-simplification et clipping
Sur-simplification + clipping pour les parties en dehors du viewport.
La démo…
www.camptocamp.com / 14/24
Hit Detection
Pas de "hit detection" natif avec Canvas (et WebGL).
⇨ On redessine toute la "scène" dans un canvas de 1x1 px, et on
teste si on a une couleur. Réutilisation du batch.
Avantages :
■ détection parfaite au pixel
■ tolérance pour la détection de lignes sur device touch
■ simple et efficace
La démo…
www.camptocamp.com / 15/24
Compilateur Closure
Outil unique dans le monde JavaScript !
■ Renommage des propriétés
■ Élimination du code non utilisé
■ Applatissage des namespaces
■ Dévirtualisation des méthodes
■ "Inlining"
www.camptocamp.com / 16/24
Exemple Compilateur Closure
goog.provide('ANamespace.ASubNamespace.AClass');
// une classe
ANamespace.ASubNamespace.AClass = function() {
this.aProperty = 'prop1';
};
// une méthode
ANamespace.ASubNamespace.AClass.prototype.aMethod = function() {
this.aProperty = 'change';
};
// une instance
var anInstance = new ANamespace.ASubNamespace.AClass();
// appel d'une méthode
anInstance.aMethod();
compilé en :
window.b=new function(){this.a="prop1"};window.b.a="change";
www.camptocamp.com / 17/24
Avantages du compilateur
Gérer un gros volume de code.
■ faire des petits "builds" d'OL3
■ faire des "builds" combinant OL3 + application
■ "type-checking"
Mais : bien utiliser le compilateur demande de l'expérience.
www.camptocamp.com / 18/24
Conclusion
www.camptocamp.com / 19/24
Conclusion
■ Bibliothèque ambitieuse
■ Techniques innovantes
■ Canvas et WebGL
www.camptocamp.com / 20/24
État actuel
■ v3.0.0-beta.5
■ Doc des API grandement améliorée
■ Outil de build "custom" amélioré
www.camptocamp.com / 21/24
Perspectives
■ Implémentation WebGL du vecteur
■ Intégration avec Cesium + 3D en général
■ Outils de build en ligne
■ Tutoriel : créer des appli OL3 avec Closure
■ « Amélioration continue »
www.camptocamp.com / 22/24
Merci !
www.camptocamp.com / 23/24
As Soon As Possible!
www.camptocamp.com / 24/24

More Related Content

Similar to FOSS4G-FR 2014 : OpenLayers 3

Responsive web design new14
Responsive web design new14Responsive web design new14
Responsive web design new14FullSIX Group
 
Présentation GeoMapFish
Présentation GeoMapFishPrésentation GeoMapFish
Présentation GeoMapFishCamptocamp
 
Programmation des pic_en_c_part1
Programmation des pic_en_c_part1Programmation des pic_en_c_part1
Programmation des pic_en_c_part1oussamada
 
Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)Jean Gabès
 
Release note de 4D_Additive 1.4
Release note de 4D_Additive 1.4Release note de 4D_Additive 1.4
Release note de 4D_Additive 1.4CORETECHNOLOGIE
 
Le Kit du Parfait Petit Intégrateur (PW2009)
Le Kit du Parfait Petit Intégrateur (PW2009)Le Kit du Parfait Petit Intégrateur (PW2009)
Le Kit du Parfait Petit Intégrateur (PW2009)Thierry Régagnon
 
Rouabhi algiers meetup
Rouabhi algiers meetupRouabhi algiers meetup
Rouabhi algiers meetupSamir Rouabhi
 
Les Outils de l'Agile
Les Outils de l'AgileLes Outils de l'Agile
Les Outils de l'Agilearagot1
 
3 d slash - catapulte - comment animer un atelier sur l'impression 3d pour le...
3 d slash - catapulte - comment animer un atelier sur l'impression 3d pour le...3 d slash - catapulte - comment animer un atelier sur l'impression 3d pour le...
3 d slash - catapulte - comment animer un atelier sur l'impression 3d pour le...3D Slash
 
Poitou Charentes JUG - Traçabilité dans une architecture distribuée avec Node...
Poitou Charentes JUG - Traçabilité dans une architecture distribuée avec Node...Poitou Charentes JUG - Traçabilité dans une architecture distribuée avec Node...
Poitou Charentes JUG - Traçabilité dans une architecture distribuée avec Node...Sébastien Prunier
 
Optimisation des applications Windows 8/HTML5/WinJS
Optimisation des applications Windows 8/HTML5/WinJSOptimisation des applications Windows 8/HTML5/WinJS
Optimisation des applications Windows 8/HTML5/WinJSMicrosoft
 
Javascript - Fonctions : que fait ce code ?
Javascript - Fonctions : que fait ce code ?Javascript - Fonctions : que fait ce code ?
Javascript - Fonctions : que fait ce code ?Ruau Mickael
 

Similar to FOSS4G-FR 2014 : OpenLayers 3 (15)

Responsive web design new14
Responsive web design new14Responsive web design new14
Responsive web design new14
 
The Future of Javascript
The Future of JavascriptThe Future of Javascript
The Future of Javascript
 
The future of JavaScript
The future of JavaScriptThe future of JavaScript
The future of JavaScript
 
Présentation GeoMapFish
Présentation GeoMapFishPrésentation GeoMapFish
Présentation GeoMapFish
 
Programmation des pic_en_c_part1
Programmation des pic_en_c_part1Programmation des pic_en_c_part1
Programmation des pic_en_c_part1
 
Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)
 
Release note de 4D_Additive 1.4
Release note de 4D_Additive 1.4Release note de 4D_Additive 1.4
Release note de 4D_Additive 1.4
 
Le Kit du Parfait Petit Intégrateur (PW2009)
Le Kit du Parfait Petit Intégrateur (PW2009)Le Kit du Parfait Petit Intégrateur (PW2009)
Le Kit du Parfait Petit Intégrateur (PW2009)
 
Rouabhi algiers meetup
Rouabhi algiers meetupRouabhi algiers meetup
Rouabhi algiers meetup
 
Hackerspace jan-2013
Hackerspace jan-2013Hackerspace jan-2013
Hackerspace jan-2013
 
Les Outils de l'Agile
Les Outils de l'AgileLes Outils de l'Agile
Les Outils de l'Agile
 
3 d slash - catapulte - comment animer un atelier sur l'impression 3d pour le...
3 d slash - catapulte - comment animer un atelier sur l'impression 3d pour le...3 d slash - catapulte - comment animer un atelier sur l'impression 3d pour le...
3 d slash - catapulte - comment animer un atelier sur l'impression 3d pour le...
 
Poitou Charentes JUG - Traçabilité dans une architecture distribuée avec Node...
Poitou Charentes JUG - Traçabilité dans une architecture distribuée avec Node...Poitou Charentes JUG - Traçabilité dans une architecture distribuée avec Node...
Poitou Charentes JUG - Traçabilité dans une architecture distribuée avec Node...
 
Optimisation des applications Windows 8/HTML5/WinJS
Optimisation des applications Windows 8/HTML5/WinJSOptimisation des applications Windows 8/HTML5/WinJS
Optimisation des applications Windows 8/HTML5/WinJS
 
Javascript - Fonctions : que fait ce code ?
Javascript - Fonctions : que fait ce code ?Javascript - Fonctions : que fait ce code ?
Javascript - Fonctions : que fait ce code ?
 

More from Camptocamp

ERP et customisation : comment éviter l’usine à gaz ?
ERP et customisation : comment éviter l’usine à gaz ?ERP et customisation : comment éviter l’usine à gaz ?
ERP et customisation : comment éviter l’usine à gaz ?Camptocamp
 
10 points-clés incontournables pour réussir votre projet ERP
10 points-clés incontournables pour réussir votre projet ERP10 points-clés incontournables pour réussir votre projet ERP
10 points-clés incontournables pour réussir votre projet ERPCamptocamp
 
Topsoft 2017: Praxisbericht: Welche Fehler bei der Implementierung eines ERP-...
Topsoft 2017: Praxisbericht: Welche Fehler bei der Implementierung eines ERP-...Topsoft 2017: Praxisbericht: Welche Fehler bei der Implementierung eines ERP-...
Topsoft 2017: Praxisbericht: Welche Fehler bei der Implementierung eines ERP-...Camptocamp
 
Geo mapfish 2_foss4g-eu_2017
Geo mapfish 2_foss4g-eu_2017Geo mapfish 2_foss4g-eu_2017
Geo mapfish 2_foss4g-eu_2017Camptocamp
 
Ge orchestra open_source_inspire_sdi-project_status_foss4g-eu_2017
Ge orchestra open_source_inspire_sdi-project_status_foss4g-eu_2017Ge orchestra open_source_inspire_sdi-project_status_foss4g-eu_2017
Ge orchestra open_source_inspire_sdi-project_status_foss4g-eu_2017Camptocamp
 
Data processing qgis3_foss4g-eu_2017
Data processing qgis3_foss4g-eu_2017Data processing qgis3_foss4g-eu_2017
Data processing qgis3_foss4g-eu_2017Camptocamp
 
AGIT 2017: GeoMapFish_2.2, the open source WebGIS
AGIT 2017: GeoMapFish_2.2, the open source WebGISAGIT 2017: GeoMapFish_2.2, the open source WebGIS
AGIT 2017: GeoMapFish_2.2, the open source WebGISCamptocamp
 
AGIT 2017: Cesium 1.35, WebGL Virtual Globe and Map Engine
AGIT 2017: Cesium 1.35, WebGL Virtual Globe and Map EngineAGIT 2017: Cesium 1.35, WebGL Virtual Globe and Map Engine
AGIT 2017: Cesium 1.35, WebGL Virtual Globe and Map EngineCamptocamp
 
AGIT 2017: geOrchestra 16.12, the open source INSPIRE SDI
AGIT 2017: geOrchestra 16.12, the open source INSPIRE SDIAGIT 2017: geOrchestra 16.12, the open source INSPIRE SDI
AGIT 2017: geOrchestra 16.12, the open source INSPIRE SDICamptocamp
 
[Geocom2017] geOrchestra and ngeo
[Geocom2017] geOrchestra and ngeo[Geocom2017] geOrchestra and ngeo
[Geocom2017] geOrchestra and ngeoCamptocamp
 
[Geocom2017] Georchestra & monitoring
[Geocom2017] Georchestra & monitoring[Geocom2017] Georchestra & monitoring
[Geocom2017] Georchestra & monitoringCamptocamp
 
GeoMapFish, the Open Source WebGIS
GeoMapFish, the Open Source WebGISGeoMapFish, the Open Source WebGIS
GeoMapFish, the Open Source WebGISCamptocamp
 
NGEO – OpenLayers meets Angular
NGEO – OpenLayers meets AngularNGEO – OpenLayers meets Angular
NGEO – OpenLayers meets AngularCamptocamp
 
OpenLayers 3 & Google Closure Compiler
OpenLayers 3 & Google Closure CompilerOpenLayers 3 & Google Closure Compiler
OpenLayers 3 & Google Closure CompilerCamptocamp
 
MapFish Print 3
MapFish Print 3MapFish Print 3
MapFish Print 3Camptocamp
 
georchestra SDI: Project Status Report
georchestra SDI: Project Status Reportgeorchestra SDI: Project Status Report
georchestra SDI: Project Status ReportCamptocamp
 
GeoMapFish, the Open Source WebGIS
GeoMapFish, the Open Source WebGISGeoMapFish, the Open Source WebGIS
GeoMapFish, the Open Source WebGISCamptocamp
 
geOrchestra, a free, modular and secure SDI
geOrchestra, a free, modular and secure SDIgeOrchestra, a free, modular and secure SDI
geOrchestra, a free, modular and secure SDICamptocamp
 
FOSS4G Europe 2015: OL3-Cesium (3D for OpenLayers)
FOSS4G Europe 2015: OL3-Cesium (3D for OpenLayers)FOSS4G Europe 2015: OL3-Cesium (3D for OpenLayers)
FOSS4G Europe 2015: OL3-Cesium (3D for OpenLayers)Camptocamp
 

More from Camptocamp (20)

ERP et customisation : comment éviter l’usine à gaz ?
ERP et customisation : comment éviter l’usine à gaz ?ERP et customisation : comment éviter l’usine à gaz ?
ERP et customisation : comment éviter l’usine à gaz ?
 
10 points-clés incontournables pour réussir votre projet ERP
10 points-clés incontournables pour réussir votre projet ERP10 points-clés incontournables pour réussir votre projet ERP
10 points-clés incontournables pour réussir votre projet ERP
 
Topsoft 2017: Praxisbericht: Welche Fehler bei der Implementierung eines ERP-...
Topsoft 2017: Praxisbericht: Welche Fehler bei der Implementierung eines ERP-...Topsoft 2017: Praxisbericht: Welche Fehler bei der Implementierung eines ERP-...
Topsoft 2017: Praxisbericht: Welche Fehler bei der Implementierung eines ERP-...
 
Geo mapfish 2_foss4g-eu_2017
Geo mapfish 2_foss4g-eu_2017Geo mapfish 2_foss4g-eu_2017
Geo mapfish 2_foss4g-eu_2017
 
Ge orchestra open_source_inspire_sdi-project_status_foss4g-eu_2017
Ge orchestra open_source_inspire_sdi-project_status_foss4g-eu_2017Ge orchestra open_source_inspire_sdi-project_status_foss4g-eu_2017
Ge orchestra open_source_inspire_sdi-project_status_foss4g-eu_2017
 
Data processing qgis3_foss4g-eu_2017
Data processing qgis3_foss4g-eu_2017Data processing qgis3_foss4g-eu_2017
Data processing qgis3_foss4g-eu_2017
 
AGIT 2017: GeoMapFish_2.2, the open source WebGIS
AGIT 2017: GeoMapFish_2.2, the open source WebGISAGIT 2017: GeoMapFish_2.2, the open source WebGIS
AGIT 2017: GeoMapFish_2.2, the open source WebGIS
 
AGIT 2017: Cesium 1.35, WebGL Virtual Globe and Map Engine
AGIT 2017: Cesium 1.35, WebGL Virtual Globe and Map EngineAGIT 2017: Cesium 1.35, WebGL Virtual Globe and Map Engine
AGIT 2017: Cesium 1.35, WebGL Virtual Globe and Map Engine
 
AGIT 2017: geOrchestra 16.12, the open source INSPIRE SDI
AGIT 2017: geOrchestra 16.12, the open source INSPIRE SDIAGIT 2017: geOrchestra 16.12, the open source INSPIRE SDI
AGIT 2017: geOrchestra 16.12, the open source INSPIRE SDI
 
[Geocom2017] geOrchestra and ngeo
[Geocom2017] geOrchestra and ngeo[Geocom2017] geOrchestra and ngeo
[Geocom2017] geOrchestra and ngeo
 
[Geocom2017] Georchestra & monitoring
[Geocom2017] Georchestra & monitoring[Geocom2017] Georchestra & monitoring
[Geocom2017] Georchestra & monitoring
 
GeoMapFish, the Open Source WebGIS
GeoMapFish, the Open Source WebGISGeoMapFish, the Open Source WebGIS
GeoMapFish, the Open Source WebGIS
 
NGEO – OpenLayers meets Angular
NGEO – OpenLayers meets AngularNGEO – OpenLayers meets Angular
NGEO – OpenLayers meets Angular
 
OpenLayers 3 & Google Closure Compiler
OpenLayers 3 & Google Closure CompilerOpenLayers 3 & Google Closure Compiler
OpenLayers 3 & Google Closure Compiler
 
MapFish Print 3
MapFish Print 3MapFish Print 3
MapFish Print 3
 
georchestra SDI: Project Status Report
georchestra SDI: Project Status Reportgeorchestra SDI: Project Status Report
georchestra SDI: Project Status Report
 
GeoMapFish, the Open Source WebGIS
GeoMapFish, the Open Source WebGISGeoMapFish, the Open Source WebGIS
GeoMapFish, the Open Source WebGIS
 
OpenLayers 3
OpenLayers 3OpenLayers 3
OpenLayers 3
 
geOrchestra, a free, modular and secure SDI
geOrchestra, a free, modular and secure SDIgeOrchestra, a free, modular and secure SDI
geOrchestra, a free, modular and secure SDI
 
FOSS4G Europe 2015: OL3-Cesium (3D for OpenLayers)
FOSS4G Europe 2015: OL3-Cesium (3D for OpenLayers)FOSS4G Europe 2015: OL3-Cesium (3D for OpenLayers)
FOSS4G Europe 2015: OL3-Cesium (3D for OpenLayers)
 

FOSS4G-FR 2014 : OpenLayers 3

  • 2. Ou « Pourquoi OL3 est fantastique ? » www.camptocamp.com / 2/24
  • 3. Plan ■ Objectifs/Vision OL3 – rappel ■ Exemples de techniques/outils utilisées dans OL3 www.camptocamp.com / 3/24
  • 7. Les cartes sont des graphiques www.camptocamp.com / 7/24
  • 8. Résumé des objectifs ■ Richesse fonctionnelle ■ Gestion de données 3D ■ Gestion de vecteurs complexes ■ Qualité des rendus (retina) ■ Performance et robustesse « Les cartes sont des graphiques » www.camptocamp.com / 8/24
  • 9. Techniques/outils utilisées dans OL3 www.camptocamp.com / 9/24
  • 10. Du vrai vecteur ! Les vecteurs sont dessinés très souvent. ■ pendant les animations ■ pendant les interactions (pendant le "pinch-zoom" !) Avantages : ■ qualité du rendu – pas de "blur" suite à une rotation ■ les labels et icônes ne tournent pas avec la carte La démo… www.camptocamp.com / 10/24
  • 11. Performance Comment dessiner souvent et obtenir de bonnes performances ? ⇨ Utilisation de techniques et algorithmes adaptés. On pousse l'implémentation à ses limites ! www.camptocamp.com / 11/24
  • 12. Simplification des géométries On dessine des géométries simplifiées, pour ne pas dessiner des "vertex" qui sont sur le même pixel. ■ Douglas Peucker ■ "Quantization" – maintien de la topologie La simplification permet aussi un rendu de meilleure qualité aux petites échelles. La démo… www.camptocamp.com / 12/24
  • 13. Batching On minimise les traitements et manipulations de données. ■ calcul des styles ■ simplification des géométries ■ lecture des features dans le R-tree ■ et toutes les implications sur le garbage collector ⇨ Système de "batch/replay" dans le renderer. On réutilise le batch pendant les animations et les interactions. Important pour WebGL ! La démo… www.camptocamp.com / 13/24
  • 14. Sur-simplification et clipping Sur-simplification + clipping pour les parties en dehors du viewport. La démo… www.camptocamp.com / 14/24
  • 15. Hit Detection Pas de "hit detection" natif avec Canvas (et WebGL). ⇨ On redessine toute la "scène" dans un canvas de 1x1 px, et on teste si on a une couleur. Réutilisation du batch. Avantages : ■ détection parfaite au pixel ■ tolérance pour la détection de lignes sur device touch ■ simple et efficace La démo… www.camptocamp.com / 15/24
  • 16. Compilateur Closure Outil unique dans le monde JavaScript ! ■ Renommage des propriétés ■ Élimination du code non utilisé ■ Applatissage des namespaces ■ Dévirtualisation des méthodes ■ "Inlining" www.camptocamp.com / 16/24
  • 17. Exemple Compilateur Closure goog.provide('ANamespace.ASubNamespace.AClass'); // une classe ANamespace.ASubNamespace.AClass = function() { this.aProperty = 'prop1'; }; // une méthode ANamespace.ASubNamespace.AClass.prototype.aMethod = function() { this.aProperty = 'change'; }; // une instance var anInstance = new ANamespace.ASubNamespace.AClass(); // appel d'une méthode anInstance.aMethod(); compilé en : window.b=new function(){this.a="prop1"};window.b.a="change"; www.camptocamp.com / 17/24
  • 18. Avantages du compilateur Gérer un gros volume de code. ■ faire des petits "builds" d'OL3 ■ faire des "builds" combinant OL3 + application ■ "type-checking" Mais : bien utiliser le compilateur demande de l'expérience. www.camptocamp.com / 18/24
  • 20. Conclusion ■ Bibliothèque ambitieuse ■ Techniques innovantes ■ Canvas et WebGL www.camptocamp.com / 20/24
  • 21. État actuel ■ v3.0.0-beta.5 ■ Doc des API grandement améliorée ■ Outil de build "custom" amélioré www.camptocamp.com / 21/24
  • 22. Perspectives ■ Implémentation WebGL du vecteur ■ Intégration avec Cesium + 3D en général ■ Outils de build en ligne ■ Tutoriel : créer des appli OL3 avec Closure ■ « Amélioration continue » www.camptocamp.com / 22/24
  • 24. As Soon As Possible! www.camptocamp.com / 24/24