Aller au contenu

Exercices Ligne droite (suite)

Exercice - Ligne droite, ou pas (suite)#

À la suite de l’exercice «Ligne Droite», nous voulons visualiser la même problématique, mais avec une autre projection, en l’occurence l’EPSG:3575 (WGS 84 / North Pole LAEA Europe).

  • Dans votre carte OpenLayers, supprimez ol.proj.useGeographic()
  • Chargez la librairie proj4.js
    • <script src="https://cdnjs.cloudflare.com/ajax/libs/proj4js/2.11.0/proj4.js"></script>
  • Définissez l’EPSG:3575, ainsi que ses caractéristiques
proj4.defs("EPSG:3575", "+proj=laea +lat_0=90 +lon_0=10 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs");
ol.proj.proj4.register(proj4);

let halfWidth = Math.sqrt(2) * 6371000;
let extent = [-halfWidth, -halfWidth, halfWidth, halfWidth];

ol.proj.get('EPSG:3575').setExtent(extent);
  • Modifiez la projection pour la vue
view: new ol.View({
    center: ol.proj.fromLonLat([0, 90], 'EPSG:3575'),
    projection: 'EPSG:3575',
    zoom: 2,
})
new ol.layer.Tile({
    source: new ol.source.XYZ({
        projection: 'EPSG:3575',
        url: 'https://tile.gbif.org/3575/omt/{z}/{x}/{y}@1x.png?style=gbif-natural',
    }),
})
  • Pensez à convertir les coordonnées lat/lng des points en EPSG:3575
let paris = ol.proj.fromLonLat([2.35, 48.85], 'EPSG:3575');
let vancouver = ol.proj.fromLonLat([-123.118, 49.247], 'EPSG:3575');
  • Pensez également à convertir de/vers EPSG:3575 pour Turf (Turf ne travaille qu’avec du GeoJSON, donc qu’en EPSG:4326)
    • Attention, la méthode transform d’une géométrie modifie la géométrie «en place», pensez à utiliser clone
// exemple pour récupérer des coords transformées
votre_layer.getSource().getFeatures()[0].getGeometry().clone().transform('EPSG:3575', 'EPSG:4326').getCoordinates()