Page 1 sur 1

Affichage marqueurs

Posté : 29 juillet 2019, 15:54
par connecthings
Bonjour,

En utilisant la librairie Leaflet ainsi que le GetCapabilities pour récupérer les paramètres WMTS,
je rencontre des problèmes pour afficher correctement les markers sur la carto.

En zoom 9 (0 à 9) les markers sont affichés au bon endroit.

Screen1.png

Lorsque je dé-zoom (ici zoom 8) les markers ne sont pas au bon endroit.

Screen2.png

Au zoom minimal (zoom 0) les markers sont complètement décalés par rapport à leur position
d'origine.

Screen3.png

J'utilise Proj4Leaflet pour changer de projection :

var crs = new L.Proj.CRS(
'EPSG:3945',
'+proj=lcc +lat_1=44.25 +lat_2=45.75 +lat_0=45 +lon_0=3 +x_0=1700000 +y_0=4200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',
{
transformation: new L.Transformation(1, 0, -1, 0),
resolutions: resolutions
}
);

Avec resolutions un tableau contenant le ScaleDenominator*0.00028 (la taille d'un pixel).

J'ai essayé de mettre des boundaries ainsi qu'une origine mais rien n'y fait.

Merci

Re: Affichage marqueurs

Posté : 29 juillet 2019, 16:05
par Sébastien Cart-Lamy
Bonjour,
C'est un problème de paramétrage sur votre leaflet.

A mon avis cela vient d'un mauvais calcul de la résolution des niveaux, car le standard WMTS utilise une résolution de 90.7 dpi (0.28mm par pixel...). Du coup, si les niveaux sont configurés en 96 dpi (ce qui est le cas de leaflet), ça décale tout.

Je crois qu'il faut utiliser la valeur ScaleDenominator (et non le Identifier) que renvoie le getCapabilities. Il faut essayer les deux.

J'ai déjà passé pas mal de temps sur le même type de problème... :?

Re: Affichage marqueurs

Posté : 31 juillet 2019, 13:59
par connecthings
Bonjour,

Merci pour ces informations.

J'ai effectivement essayé les calculs avec le ScaleDenominator et le Identifier mais j'ai toujours le
meme problème.

Voici la formule que j'ai trouvé pour l'initialisation de la résolution :

var inchesPerMeter = 39.3701; //nombre de pouce par metre
var dpi = 90.71446714322; //dpi WMTS

for(var i = 0; i < resolutions.length; i++){
resolutions = scaleDenominator/(dpi*inchesPerMeter);
}

scaleDenominator est le tableau contenant les valeurs de ScaleDenominator du GetCapabilities.

Avez vous d'autres formules de calculs de la résolution ?

Merci pour votre aide.

Re: Affichage marqueurs

Posté : 01 août 2019, 11:04
par connecthings
Bonjour,

J'ai enfin trouvé une solution ! :D Au final, la formule de la résolution était bonne. Mon problème était le paramétrage de l'origin du CRS de proj4Leaflet. Je m'étais basé sur les coordonnées fournit par la projection EPSG:3945 (https://epsg.io/3945)

Il fallait en fait récupérer les coordonnées fournit par le GetCapabilities, celui du TopLeftCorner de la tileMatrix 250000.

Si ça peut aider quelqu'un voici le lien qui m'a mené sur la piste :
https://stackoverflow.com/questions/354 ... projection

Re: Affichage marqueurs

Posté : 01 août 2019, 16:04
par Sébastien Cart-Lamy
Merci pour l'info !