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,
})
- Chargez de nouvelles tuiles, en EPSG:3575 également https://tile.gbif.org/ui/
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 à utiliserclone
- Attention, la méthode
// exemple pour récupérer des coords transformées
votre_layer.getSource().getFeatures()[0].getGeometry().clone().transform('EPSG:3575', 'EPSG:4326').getCoordinates()