Affichage marqueurs

Discussions sur l'API CUB
Répondre
connecthings
Messages : 3
Enregistré le : 04 juin 2019, 15:20

Affichage marqueurs

Message 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
Fichiers joints
screen1.png
screen1.png (204 Kio) Vu 204242 fois
screen2.png
screen2.png (691.66 Kio) Vu 204242 fois
screen3.png
screen3.png (364.72 Kio) Vu 204242 fois
Sébastien Cart-Lamy
Équipe OpenData
Équipe OpenData
Messages : 357
Enregistré le : 23 juin 2011, 16:16

Re: Affichage marqueurs

Message 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... :?
connecthings
Messages : 3
Enregistré le : 04 juin 2019, 15:20

Re: Affichage marqueurs

Message 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.
connecthings
Messages : 3
Enregistré le : 04 juin 2019, 15:20

Re: Affichage marqueurs

Message 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
Sébastien Cart-Lamy
Équipe OpenData
Équipe OpenData
Messages : 357
Enregistré le : 23 juin 2011, 16:16

Re: Affichage marqueurs

Message par Sébastien Cart-Lamy »

Merci pour l'info !
Répondre