OpenDataAPI/scripts/helpers/gps.js
2024-01-24 16:29:09 +01:00

89 lines
3.1 KiB
JavaScript

import proj4 from 'proj4'
// Définir les paramètres de la projection WGS84 (EPSG:4326) (GPS)
proj4.defs('EPSG:4326', '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs');
// Définir les paramètres de la projection Lambert 93 (EPSG:2154)
proj4.defs('EPSG:2154', '+proj=lcc +lat_1=49 +lat_2=44 +lat_0=46.5 +lon_0=3 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs');
// Définir les paramètres de la projection UTM Zone 20N (EPSG:32620)
proj4.defs('EPSG:32620', '+proj=utm +zone=20 +ellps=WGS84 +datum=WGS84 +units=m +no_defs');
// Définir les paramètres de la projection UTM_N21 (exemple)
proj4.defs('EPSG:32621', '+proj=utm +zone=21 +ellps=WGS84 +datum=WGS84 +units=m +no_defs');
// Définir les paramètres de la projection UTM_N22 (exemple)
proj4.defs('EPSG:32622', '+proj=utm +zone=22 +ellps=WGS84 +datum=WGS84 +units=m +no_defs');
// Définir les paramètres de la projection UTM_S38 (exemple)
proj4.defs('EPSG:32638', '+proj=utm +zone=38 +ellps=WGS84 +datum=WGS84 +units=m +no_defs');
// Définir les paramètres de la projection UTM_S40 (exemple)
proj4.defs('EPSG:32740', '+proj=utm +zone=40 +ellps=WGS84 +datum=WGS84 +units=m +no_defs');
export const transformToGPS = (system, coordX, coordY, ) => {
if (system.includes('LAMBERT_93')) {
return lambert93toGPS(coordX, coordY)
}
if (system.includes('UTM_N20')) {
return utmN20toGPS(coordX, coordY)
}
if (system.includes('UTM_N21')) {
return utmN21toGPS(coordX, coordY)
}
if (system.includes('UTM_N22')) {
return utmN22toGPS(coordX, coordY)
}
if (system.includes('UTM_S38')) {
return utmS38toGPS(coordX, coordY)
}
if (system.includes('UTM_S40')) {
return utmS40toGPS(coordX, coordY)
}
console.error(system);
}
function lambert93toGPS(easting, northing) {
// Convertir les coordonnées Lambert 93 en WGS84 (GPS)
const [longitude, latitude] = proj4('EPSG:2154', 'EPSG:4326', [easting, northing]);
return { latitude, longitude };
}
function utmN20toGPS(easting, northing) {
// Convertir les coordonnées UTM en WGS84 (GPS)
const [longitude, latitude] = proj4('EPSG:32620', 'EPSG:4326', [easting, northing]);
return { latitude, longitude };
}
function utmN21toGPS(easting, northing) {
// Convertir les coordonnées UTM_N21 en WGS84 (GPS)
const [longitude, latitude] = proj4('EPSG:32621', 'EPSG:4326', [easting, northing]);
return { latitude, longitude };
}
function utmN22toGPS(easting, northing) {
// Convertir les coordonnées UTM_N22 en WGS84 (GPS)
const [longitude, latitude] = proj4('EPSG:32622', 'EPSG:4326', [easting, northing]);
return { latitude, longitude };
}
function utmS38toGPS(easting, northing) {
// Convertir les coordonnées UTM_S38 en WGS84 (GPS)
const [longitude, latitude] = proj4('EPSG:32638', 'EPSG:4326', [easting, northing]);
return { latitude, longitude };
}
function utmS40toGPS(easting, northing) {
// Convertir les coordonnées UTM_S40 en WGS84 (GPS)
const [longitude, latitude] = proj4('EPSG:32740', 'EPSG:4326', [easting, northing]);
return { latitude, longitude };
}