Skip to content

Commit

Permalink
Merge pull request #5 from agarrone/patch-5
Browse files Browse the repository at this point in the history
Update 3-tuiles-vecteur.md
  • Loading branch information
ThomasG77 authored Mar 7, 2022
2 parents 1da63a2 + 20f5cb9 commit 8f8d7e1
Showing 1 changed file with 44 additions and 31 deletions.
75 changes: 44 additions & 31 deletions apis-geo/3-tuiles-vecteur.md
Original file line number Diff line number Diff line change
@@ -1,33 +1,42 @@
# Tuiles vecteur
# Tuiles vectorielles

## Introduction
:::tip Qu’est-ce que les tuiles vectorielles ? Pour comprendre ce que sont que les tuiles vectorielles et leurs usages rendez-vous sur la documentation de l’IGN.

Ce service permet de mettre à disposition des tuiles avec un style pour avoir un fond de plan de tuiles vecteur. Ce style est publié en s'appuyant sur une version d'OpenMapTiles déployée par Etalab sur la France. Il permet aussi de servir les tuiles des limites administratives ainsi que celles du cadastre.
:::

Ce service est consommé par plusieurs autres produits d'Etalab ainsi que par d'autres acteurs institutionnels. Nous l'utilisons car les tuiles vectorielles et les styles associés sont à ce jour plus légers que ceux de l'IGN.
**Pourquoi utiliser les tuiles vectorielles ?**

Ces tuiles ont une structure standardisée par un schéma <https://openmaptiles.org/schema/>, ainsi que des styles par défaut associés à cette structure <https://openmaptiles.org/styles/>
Le service proposé par Etalab permet de

Ce service s'appuie sur les données du [projet OpenStreetMap](https://openstreetmap.org).
- mettre à disposition des tuiles avec un style pour avoir un fond de plan de tuiles vecteur. Ce style est publié en s’appuyant sur une version d’OpenMapTiles déployée par Etalab sur la France.
- servir les tuiles des limites administratives ainsi que celles du cadastre.

> OpenStreetMap (ou "OSM") est une carte du monde entier librement modifiable, faite par des gens comme vous.
> OpenStreetMap vous permet de voir, modifier et utiliser des données géographiques de n'importe quel endroit dans le monde.
Ce service s'appuie sur les données du [projet OpenStreetMap](https://openstreetmap.org).

OpenStreetMap (ou "OSM") est une carte du monde entier librement modifiable, faite par des gens comme vous.
OpenStreetMap vous permet de voir, modifier et utiliser des données géographiques de n'importe quel endroit dans le monde.

Si vous trouvez des données manquantes sur la carte, vous pouvez contribuer sur <https://openstreetmap.org> et vous verrez les changements au plus tard une semaine après. En effet, les tuiles vecteur des fonds de plan sont mises à jour une fois par semaine.

Il faut aussi noter que vous devez obligatoirement [créditer OpenStreetMap et ses contributeurs](https://www.openstreetmap.org/copyright/fr) quand vous utilisez les fonds de plan.

Bien que ce service réponde à de nombreux besoins, il a ses limitations.
**Qui utilise ce service ?**

**Les cas où vous ne devriez pas utiliser OpenMapTiles:**
Ce service est utilisé par plusieurs produits d’Etalab ainsi que par d’autres acteurs institutionnels en raison de la légèreté des tuiles vectorielles et des styles associés en comparaison à ceux mis à disposition actuellement par l’IGN.

- si votre besoin nécessite des tuiles dont les informations ne sont pas dans les couches OpenMapTiles, un grand nombre d'acteurs commerciaux <https://switch2osm.org/providers/#tile-hosting> proposent de consommer des tuiles vectorielles en créant un compte, sans coût
Ces tuiles ont une structure standardisée par un schéma [https://openmaptiles.org/schema/](https://openmaptiles.org/schema/), ainsi que des styles par défaut associés à cette structure [https://openmaptiles.org/styles/](https://openmaptiles.org/styles/)

- Si vous avez besoin d'une qualité de service garantie, là encore, adressez-vous à ces mêmes acteurs commerciaux ou auto-hébergez vous. Dans ce cas, pour des outils pour gérer vos propres tuiles vecteur en autohébergé, allez sur <https://github.com/mapbox/awesome-vector-tiles#servers>
**Quelles sont les limites de ce service ?**

Bien que ce service réponde à de nombreux besoins, il a ses limitations.

- si vous voulez les données sur une autre couverture que la France
Les cas où vous ne devriez pas utiliser OpenMapTiles:

- si vous avez un besoin qui vous parait correspondre à celui des tuiles vectorielles et styles associés de l'IGN (voir des exemples en fin de guide). Ces tuiles sont un peu plus lourdes mais elles sont par nature plus homogènes en terme de contenu car elles utilisent les données de l'IGN. Celles du projet OpenMapTiles étant basées sur OpenStreetMap, la complétude dépend des contributions à OpensStreetMap.
- si votre besoin nécessite des tuiles dont les informations ne sont pas dans les couches OpenMapTiles, un grand nombre d’acteurs commerciaux [https://switch2osm.org/providers/#tile-hosting](https://switch2osm.org/providers/#tile-hosting) proposent de consommer des tuiles vectorielles en créant un compte, sans coût.
- Si vous avez besoin d’une qualité de service garantie, là encore, adressez-vous à ces mêmes acteurs commerciaux ou autohébergez-vous. Dans ce cas, pour des outils pour gérer vos propres tuiles vecteur en autohébergé, allez sur [https://github.com/mapbox/awesome-vector-tiles#servers](https://github.com/mapbox/awesome-vector-tiles#servers).
- Si vous souhaitez des données sur une autre couverture que la France.
si vous avez un besoin qui vous parait correspondre à celui des tuiles vectorielles et styles associés de l’IGN (voir des exemples en fin de guide). Ces tuiles sont un peu plus lourdes mais elles sont par nature plus homogènes en terme de contenu car elles utilisent les données de l’IGN. Celles du projet OpenMapTiles étant basées sur OpenStreetMap, la complétude dépend des contributions à OpenStreetMap.

## Rappel sur les tuiles vecteur

Expand All @@ -43,17 +52,16 @@ Tuiles 512px

![](https://d.basemaps.cartocdn.com/light_all/7/63/[email protected])

Le découpage des tuiles est normalisé en s'appuyant sur "une grille" "qui change avec les échelles et dont les conventions sont reprises par tous.
Le découpage des tuiles est normalisé en s'appuyant sur "une grille" qui change avec les échelles et dont les conventions sont reprises par tous.

### Les "tuiles vecteur"
### Les « tuiles vectorielles »

Même si ces solutions raster sont toujours fonctionnelles, ils existent des cas qui nécessitent d'avoir plus de souplesse pour pouvoir styler des fonds de plan en particulier ou bien pour afficher une couche "par-dessus" les autres. Ils peuvent être adressés avec les tuiles vecteur. On parle abusivement de tuiles vecteur pour désigner généralement deux choses:
Même si ces solutions raster sont toujours fonctionnelles, ils existent des cas qui nécessitent d’avoir plus de souplesse pour pouvoir styler des fonds de plan en particulier ou bien pour afficher une couche « par-dessus » les autres. Ils peuvent être adressés avec les tuiles vectorielles. On parle abusivement de tuiles vectorielles pour désigner généralement deux choses:
• les tuiles vectorielles à proprement parler
• les styles « Mapbox Vector Style »

- les tuiles vecteur à proprement parler
- les styles "Mapbox Vector Style"


#### Les tuiles vecteur en elle-même
#### Les tuiles vectorielles en elle-même

On peut les assimiler à des objects vectoriels, des points, des lignes, des polygones qui sont associés à des attributs par exemple un nom. On groupe ces objets par couche, généralement un objet métier, par exemple, les limites communales, les commerces,... On découpe ensuite ces vecteurs selon une emprise fixe qui reprend celle historiquement utilisées par les tuiles raster. On peut ainsi voir quelles couches contiennent une tuile. Il existe plusieurs standards pour ces tuiles mais celui le plus adopté est celui de la société Mapbox. On parle de "Mapbox Vector Tiles" ou MVT. Leur contenu est encapsulé dans un format binaire appelé Protocol Buffer, non spécifique à la cartographie, c'est pour cela que l'extension des tuiles est souvent `.pbf` même si c'était historiquement `.mvt`. Voici des exemples pour inspecter:

Expand All @@ -68,19 +76,23 @@ Ici, nous avons choisi de nous concentrer sur la consommation des tuiles. Il exi

Ils permettent d'indiquer pour quelles couches, pour quelles caractéristiques comme la population et quels zooms il faut appliquer un style. Ces styles sont par exemple, l'épaisseur du trait, sa couleur pour le contour communal. Ils s'appuient sur le standard ["Mapbox/Maplibre GL JS Style Specification"](https://maplibre.org/maplibre-gl-js-docs/style-spec/) qui indique quelles sont les ressources "tuiles" (l'URL) à consommer puis quelles couches de cette ressource doivent être utilisées puis comment les styles doivent être appliqués.

C'est avant tout la combinaison des tuiles vectorielles et des styles qui a permis à ce standard de s'imposer. Généralement, on consomme ces tuiles vecteur via une bibliothèque cartographique JavaScript. Il faut aussi noter que selon les bibliothèques il est possible de profiter de la combinaison des 2 mais que certains ne permettent pas de gérer les styles mais simplement de consommer les tuiles vecteur, les `pbf` mais en devant styler selon la syntaxe propre à la bibliothèque. Cela joue fortement sur les choix techniques à adopter selon votre besoin. Seuls Maplibre et OpenLayers via une bibliothèque intermédiaire sont à même de correctement utiliser les 2.
C'est avant tout la combinaison des tuiles vectorielles et des styles qui a permis à ce standard de s'imposer.

On peut par exemple aller sur <https://maputnik.github.io/editor/#3.71/45.57/3.43> puis dans le menu supérieur, cliquer sur "Open". Dans la popup qui apparaît, dans la section "Load from URL", collez l'URL `https://openmaptiles.geo.data.gouv.fr/styles/osm-bright/style.json` puis sur le bouton "Open URL" pour voir le style utilisé par défaut sur les tuiles vectorielles.

## Points d'entrées du service
Généralement, on consomme ces tuiles vectorielles via une bibliothèque cartographique JavaScript. Il faut également noter que selon les bibliothèques il est possible de profiter de la combinaison des deux mais que certains ne permettent pas de gérer les styles mais simplement de consommer les tuiles vectorielles, les `pbf` mais en devant styler selon la syntaxe propre à la bibliothèque. Cela joue fortement sur les choix techniques à adopter selon votre besoin. Seuls Maplibre et OpenLayers via une bibliothèque intermédiaire sont à même de correctement utiliser les deux.

## Comment utiliser les tuiles vectorielles d’Etalab ?

Pour avoir un aperçu, vous pouvez vous rendre sur

- <https://openmaptiles.geo.data.gouv.fr>

Il y a pour le moment des versions dites `latest` qui permettent d'assurer la transition entre deux versions des tuiles. Nous avions historiquement des tuiles datant de 2019 avec un schéma OpenMapTiles qui a un peu évolué entre temps. Ces URLs seront amenées à remplacer celles actuellement en production. Les versions `latest` ont été mises à jour en janvier 2022.

### Consommez les styles
Les versions des tuiles pour les fonds de plan ont été mises à jour en mars 2022 et sont mises à jour une fois par semaine.

Nous avons pris le parti d'une approche pratique. Vous trouverez ainsi quelques exemples pour montrer qu'il est possible de combiner les styles ou de les utiliser seuls. Nous abordons principalement l'usage avec MapLibre qui est capable de nativement gérer les tuiles et les styles associés. Nous aborderons pas Mapbox GL JS, la bibliothèque JavaScript de Mapbox car elle n'est maintenant plus OpenSource depuis la version 2.x et c'est MapLibre une version forkée de la dernière version de Mapbox GL JS avant son passage en version non libre qui a pris sa succession. Voici quelques scénarios:
### Consommer les styles
Nous abordons principalement l'usage avec MapLibre qui est capable de nativement gérer les tuiles et les styles associés. Nous aborderons pas Mapbox GL JS, la bibliothèque JavaScript de Mapbox car elle n'est maintenant plus OpenSource depuis la version 2.x et c'est MapLibre une version forkée de la dernière version de Mapbox GL JS avant son passage en version non libre qui a pris sa succession.
Voici quelques scénarios:

**Avec le fond de plan et le cadastre**

Expand All @@ -94,13 +106,13 @@ Nous avons pris le parti d'une approche pratique. Vous trouverez ainsi quelques

- MapLibre <https://bl.ocks.org/ThomasG77/e9eacae4cd4c75e61327944997cb82d4>

### Consommez les tuiles vectorielles seules
### Consommer les tuiles vectorielles seules

- Maplibre <https://raw.githack.com/webgeodatavore/openmaptiles-geo-data-gouv-fr/master/maplibre-gl-js/maplibre-gl-js-openmaptiles-with-overlay.html>
- OpenLayers <https://raw.githack.com/webgeodatavore/openmaptiles-geo-data-gouv-fr/master/openlayers/openlayers-openmaptiles-with-overlay.html>
- Leaflet <https://raw.githack.com/webgeodatavore/openmaptiles-geo-data-gouv-fr/master/leaflet/leaflet-openmaptiles-with-overlay.html>

### Hébergez les tuiles du cadastre ou faire une extrait sur votre zone
### Héberger les tuiles du cadastre ou faire une extrait sur votre zone

```bash
wget https://cadastre.data.gouv.fr/data/etalab-cadastre/2021-07-01/mbtiles/france/cadastre.mbtiles
Expand All @@ -117,13 +129,14 @@ mbview cadastre-extract-for-nantes-city.mbtiles

Pour un aperçu, ouvrir <http://localhost:3000/#16.17/47.215211/-1.567287>

Si vous souhaitez héberger vous-même, nous vous recommandons de passer par [TileServer-Gl Light](https://www.npmjs.com/package/tileserver-gl-light) combiné avec NGinx
Si vous souhaitez héberger vous-même, nous vous recommandons de passer par [TileServer-Gl Light](https://www.npmjs.com/package/tileserver-gl-light) combiné avec NGinx.

## L'alternative des tuiles vecteur de l'IGN

Selon vos besoins, vous pouvez choisir d'utiliser l'API de tuiles vecteur de l'IGN plutôt que celles que nous mettons à disposition. Voici 2 exemples:
Selon vos besoins, vous pouvez choisir d'utiliser l'API de tuiles vectorielles de l'IGN plutôt que celles que nous mettons à disposition.
Voici deux exemples:

- OpenLayers <https://bl.ocks.org/ThomasG77/3047b6072f0411d11d23cfed1fdb2c5c>
- Maplibre <https://bl.ocks.org/ThomasG77/5a122812635a85af7f762858ecf052a3>

Ici, nous avons utilisé le plan Standard dont l'URL est <https://wxs.ign.fr/static/vectorTiles/styles/PLAN.IGN/essentiels/standard.json>. Vous verrez qu'il est possible de choisir d'autres styles et même d'avoir des tuiles vectorielles pour d'autres éléments que les fonds de plan. Pour cela, consultez la documentation officielle côté IGN, <https://geoservices.ign.fr/documentation/services/api-et-services-ogc/vecteur-tuile-tmswmts>. Nous vous recommandons en complément de regarder <https://geoservices.ign.fr/services-web-essentiels> car la 1ère documentation à date mentionne encore une clé d'API alors que bien que présente, celle-ci est publique et s'appelle `essentiels`, ce que vous pouvez voir dans les démos mises à disposition.
Ici, nous avons utilisé le plan "Standard" dont l'URL est <https://wxs.ign.fr/static/vectorTiles/styles/PLAN.IGN/essentiels/standard.json>. Vous verrez qu'il est possible de choisir d'autres styles et même d'avoir des tuiles vectorielles pour d'autres éléments que les fonds de plan. Pour cela, consultez la documentation officielle côté IGN, <https://geoservices.ign.fr/documentation/services/api-et-services-ogc/vecteur-tuile-tmswmts>. Nous vous recommandons en complément de regarder <https://geoservices.ign.fr/services-web-essentiels> car la 1ère documentation à date mentionne encore une clé d'API alors que bien que présente, celle-ci est publique et s'appelle `essentiels`, ce que vous pouvez voir dans les démos mises à disposition.

0 comments on commit 8f8d7e1

Please sign in to comment.