Hello,
je pensais avoir déjà fait un retour sur la liste, mais je ne retrouve
rien dans les archives.. donc j'ai du oublier.
cas d'utilisation: avoir un 'beau' relief dans la vue 3d de mapstore.
par défaut dans ms2-georchestra on utilise le terrainProvider avec un
type 'ellipsoid' cf
https://github.com/georchestra/datadir/blob/master/mapstore/configs/localConfig.json#L33
mais avec ça, le globe est une boule, c'est pas très beau. Y'a des
sources de terrain 'libres' mais pas super bien définies.
pour avoir bien mieux, on peut utiliser un cache pyramidé (même principe
que le WMTS) de terrain de type 'cesium' crée depuis un MNT - ici
uniquement sur la région AURA, c'est la config du viewer cesium sur
https://ids.craig.fr/mapstore/, et j'ai moins de 12Go de cache sur la
région entière avec 17 niveaux de zoom (200Go avec le niveau 18 depuis
le rge alti 1m):
"terrainProvider": {
"type": "cesium",
"url": "
https://3d.craig.fr/terrain",
"requestVertexNormals": true
}
pour générer ce cache, j'ai bidouillé pas mal mais assez rapidement j'ai
eu qqch de probant en utilisant un fork de ctb-tile (ctb pour
cesium-terrain-builder) supportant 'quantized mesh', cf
https://www.linkedin.com/pulse/fast-cesium-terrain-rendering-new-quantized-mesh-output-alvaro-huarte/
https://github.com/tum-gis/cesium-terrain-builder-docker et/ou
https://github.com/ahuarte47/cesium-terrain-builder/tree/master-quantized-mesh
requestvertexnormals c'est pour avoir de l'ombrage, il faut utiliser
l'option -N de ctb-tile (-N, --vertex-normals Write 'Oct-Encoded
Per-Vertex Normals' for Terrain Lighting, only for `Mesh` format)
en gros les étapes:
- faire (avec gdalwarp ou gdal_translate) un gros tif monobande en
EPSG:4326 avec son MNT (on peut utiliser un VRT en source mais ca sera
bien plus lent)
gdalwarp -s_srs epsg:2154 -t_srs epsg:4326 -r bilinear -of GTiff
/data/wxs/mnt/ign/bdalti/BDALTIV2_25M.tiff
/data/wxs/mnt/ign/bdalti/BDALTIV2_25M_4326.tiff
- faire un premier ctb-tile pour générer les tuiles
ctb-tile -f Mesh -C -N -c 4 -o /tmp/cache -s 14 -e 11
/data/wxs/mnt/ign/bdalti/BDALTIV2_25M_4326.tiff
- faire un 2e ctb-tile avec -l pour générer le 'layer.json' qui sera lu
par cesium (en gros c'est l'index du dallage, cf
https://3d.craig.fr/terrain/layer.json)
ctb-tile -f Mesh -C -N -c 4 -l -o /tmp/cache -s 14 -e 11
/data/wxs/mnt/ign/bdalti/BDALTIV2_25M_4326.tiff
(-e/-s servent eventuellement a limiter le nb de zooms qu'on veut
générer, ici je vous montre juste l'exemple du nv 11 a 13 avec du 25m)
pour la source de données, j'ai fait diverses expériences avec la bd
alti a 25m, puis le rge alti a 5m, et le rge alti a 1m. la bd alti 25m
suffit largement pour les nvx de zoom jusqu'a 13 inclus (on peut meme
prendre du 75m au dessus du niveau 10), de 14 a 18 le rge alti 5m fait
le taf, et si on veut être encore plus fin/précis il faut passer au rge
alti 1m sinon on a de moches effets de crénelage sur du 5m. On peut
certainement faire avec plus fin, mais c'est mieux d'avoir des données
homogènes sur une zone (ie pas faire du composite de resolutions
diverses pour un niveau de zoom donné..)
Si on utilise plusieurs sources de données pour générer un seul cache de
terrain unique il faut bien penser a 'merger' les différents layer.json
générés.
enfin coller le cache et le layer.json qqpart sur un serveur web, ne pas
oublier de les servir avec le header gzip pour la compression (les
tuiles terrain sont compressées en interne), avec nginx j'ai:
location ~ /3d/terrain.*terrain {
add_header Content-Encoding gzip;
}
pour que ça marche dans mapstore, aussi ajouter le hostname de la ou son
hébergées les tuiles dans la liste 'useCors'. Avec ça, on devrait avoir
un vrai relief bien plus beau - regarder dans la console réseau et
vérifier que les .terrain sont fetchés au fur a mesure qu'on se déplace
dans la vue 3d :)
En espérant que ça serve !
--
Landry Breuil
Responsable Informatique
04 44 05 12 42
----------------------------------------------------------------------------
Centre Régional Auvergne-Rhône-Alpes de l'Information Géographique
Hôtel de région
59 Boulevard Léon Jouhaux - CS 90706
63050 Clermont-Ferrand Cedex 2
https://www.craig.fr <
https://www.craig.fr> - @GipCraig
----------------------------------------------------------------------------
> Support utilisateurs (tous les jours ouvrés de 8H30 à 12H30) : 09 72
62 25 31