Libcarto
Une librairie de
développement cartographique
en libre service
Clément Glogowski et Marc-Olivier Ethier - Forum Géomatique 22 septembre 2023
Marc-Olivier
Ethier
Clément
Glogowski
Développeur/concepteur principal
TI - Géomatique
Analyste principal
TI - Géomatique
Division
Intelligence
d’Affaires et
Géomatique
Centre
d’expertise en
géomatique
Division
Intelligence
d’Affaires et
Géomatique
Centre
d’expertise en
géomatique
Centre
d’expertise en
intelligence
d’affaires
Division
Intelligence
d’Affaires et
Géomatique
Centre
d’expertise en
géomatique
Gouvernance
des données
Centre
d’expertise en
intelligence
d’affaires
Division
Intelligence
d’Affaires et
Géomatique
Centre
d’expertise en
géomatique
Gouvernance
des données
Centre
d’expertise en
intelligence
d’affaires
Valorisation
des données
corporatives
Mise en contexte
Collection de codes/scripts :
● Simplifie le développement
● Expose des fonctionnalités et
des outils prêts à l'emploi
Librairie
&
API ?
Mise en contexte
…fonctionnalités
préconstruites conçues pour
faciliter la création
d'applications et de
visualisations
cartographiques interactives.
Librairie
cartographique ?
Mise en contexte
… adresse réseau/web qui permet
d'accéder à des données
géospatiales facilitant ainsi leur
intégration dans des applications
SIG.
Service
cartographique ?
Mise en contexte
Service
cartographique ?
Mise en contexte
Source de données
Symbologie
● Géométrie
● Police
● Couleurs
● …
Filtres
…
Style
cartographique ?
Mise en contexte
● Mauvaise utilisation des données
corporatives
● Informatique grise / Cartographie grise
● Manque de ressources spécialisées
● Sécurité informatique
Enjeux municipaux ?
Objectif de la librairie
Comment résoudre
nos problèmes
organisationnels ?
● Faciliter
● Remplacer
● Uniformiser
● Inventorier
● Démocratiser
Comment résoudre
nos problèmes
organisationnels ?
● Faciliter l’ intégration
d’une carte dans les
applications
● Remplacer
● Uniformiser
● Inventorier
● Démocratiser
Objectif de la librairie
Comment résoudre
nos problèmes
organisationnels ?
● Faciliter
● Remplacer les multiples
technologies de
cartographie
● Uniformiser
● Inventorier
● Démocratiser
Objectif de la librairie
Comment résoudre
nos problèmes
organisationnels ?
● Faciliter
● Remplacer
● Uniformiser et
standardiser l’ accès aux
données corporatives
● Inventorier
● Démocratiser
Objectif de la librairie
Comment résoudre
nos problèmes
organisationnels ?
● Faciliter
● Remplacer
● Uniformiser
● Inventorier et cataloguer
les couches géospatiales
corporatives
● Démocratiser
Objectif de la librairie
Comment résoudre
nos problèmes
organisationnels ?
● Faciliter
● Remplacer
● Uniformiser
● Inventorier
● Démocratiser les
pratiques SIG aux TI
Objectif de la librairie
Autonomie / Libre-service
Un wrapper pour simplifier tout ca ?
La LibCarto pour les
gouverner tous ?
● Faciliter
● Remplacer
● Uniformiser
● Inventorier
● Démocratiser
Autonomie / Libre-service
Un wrapper pour simplifier tout ca ?
La LibCarto pour les
gouverner tous ?
● Faciliter
● Remplacer
● Uniformiser
● Inventorier
● Démocratiser
Lib
Carto
Applications
internes
Anatomie / Architecture
Catalogue de
Métadonnées
VTS
WFS
WMS
WMTS
Objets
Styles
Applications
internes
Portail Ville
Données
Ouvertes
Publication
Notification
Diffusion
/
sécurité
/
performance
Logiciels
Usagers
Usagers
Usagers
Usagers
Usagers
Usagers
BD
Réglementation
Applications
internes
Anatomie / Architecture
Catalogue de
Métadonnées
Objet
Applications
internes
Portail Ville
Données
Ouvertes
Publication
Notification
Logiciels
Usagers
Usagers
Usagers
Usagers
Usagers
Usagers
Réglementation
Usagers
Développement d’un
studio
cartographique en
libre service
Présentation du Studio
Administrer les styles
Présentation du Studio
Présentation du Studio
https://api.dev.interne.montreal.ca/api/it-platforms/geomatic/map-assets/v1/styles?code=
fond-de-carte,arrondissements-polygones,arrondissements-etiquettes
Jumeler les styles
Éditer / visualiser un style
Présentation du Studio
Présentation du Studio
Gérer les icônes
Présentation du Studio
Publier
● Fichier
● BD
● Services
Partager
● Privé
● Public
● Officiel
Documenter
● géocatalogueMTL
Concepts techniques
Config As Code ?
Développer une
application en
remplissant un fichier
de configuration.
Concepts techniques
{
containerId: "map",
environment: libCarto.Environment.DEV
};
Config as code ?
Concepts techniques
{
containerId: "map",
basemap: 'fdc-leger',
layers: [
'arrondissements-polygones',
'arrondissements-contours',
'arrondissements-etiquettes',
],
environment: libMap.Environment.DEV,
};
Config as code ?
● couches
Concepts techniques
{
containerId: "map",
basemap: 'fdc-leger',
layers: [
'arrondissements-polygones',
'arrondissements-contours',
'arrondissements-etiquettes',
],
position: {
type: "feature",
featureId: "'OCC-2106ZC11887865'",
idField: 'permitPermitId',
layerId: 'montreal:entraves-polygonales'
},
environment: libMap.Environment.DEV,
}
Config as code ?
● position
Concepts techniques
{
containerId: "map",
basemap: 'fdc-leger',
layers: [
'arrondissements-polygones',
'arrondissements-contours',
'arrondissements-etiquettes',
],
layersOptions: {
'arrondissements-polygones' : {
selectable: true,
selectionMethod: "click",
selectionColor: "rgba(248, 95, 8 ,0.7)",
}
},
environment: libMap.Environment.DEV,
}
Config as code ?
● sélection
Démocratisation
=
Documentation
Concepts techniques
● Documentation dynamique (TypeDoc)
● Déploiement en application web
● Déploiement en librairie
Documentation
automatisée
Concepts techniques
Documentation de la librairie
Concepts techniques
Exemples interactifs et documentés
Exemples
documentés et
interactifs en ligne
Concepts techniques
Exemples
documentés et
interactifs en ligne
Utilisation après
initialisation de la
configuration
Ex: sélection par attribut
● Appel WFS
● Supporte toutes les
couches et attributs
Concepts techniques
Ex: sélection par attribut
Concepts techniques
const mapOptions: IMapOptions = {
containerId: 'map',
basemap: 'fond-de-carte',
position: { type: PositionType.LATLON, point: [-73.7, 45.55] },
layers: ['arrondissements-contours', 'arrondissements-polygones',
'stations-lignes-de-metro-icones'],
layersOptions: {
'stations-de-metro': { visible: false },
'arrondissements-polygones': { selectable: true, selectionMethod:
SelectionMethod.CLICK },
},
environment: Environment.DEV
};
const myMap = createMap(mapOptions);
…
myMap.selectFeaturesByAttribute(
'arrondissements',
'nomArrond',
'Verdun'
);
Utilisation après
initialisation de la
configuration
Ex: Clusters
● Appel WFS (geojson)
● Simple d’utilisation
● Zoom automatisé
● Interaction possible
● Possibilité de filtrer
Concepts techniques
Concepts techniques
const mapOptions: IMapOptions = {
containerId: 'map',
basemap: 'fdc-leger',
layers: ['info-travaux-clusters'],
environment: Environment.DEV
};
const myMap = createMap(mapOptions);
…
const leaves = await myMap.getClusterLeaves(
'info-travaux-clusters',
clusterId
);
...
myMap.zoomToFeaturesExtent(leaves)
Ex: Clusters
Utilisation à
la Ville ?
Applications et projets
Services divers :
● GBeau
● Gogeo
● AGIR
● …
Lib Carto :
● Engagement Numérique pour
le portail citoyens
https://services.montreal.ca/cartes/entraves
https://services.montreal.ca/cartes/entraves
https://services.montreal.ca/cartes/pistes-cyclables
Gains et leçons apprises
Démocratisation
!!
Gains
Informations “vivantes”
Compatibilité accrue
Vélocité
Transparence
Gains et leçons apprises
Dépendance sur la Donnée
!?
Enjeux
Garder les choses simples
Pré-requis d’infrastructure
Perspectives d'avenir
?!
Avenir
Détection du changement !
Versionnement & Notification ?
Interopérabilité accrue ?
Ouverture du code ?
??
Questions
Merci !

Une librairie de développement cartographique en libre service