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
 
OpenLayers 3
OpenLayers 3OpenLayers 3
OpenLayers 3Camptocamp
 
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