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
Affichage marqueurs
-
- Messages : 3
- Enregistré le : 04 juin 2019, 15:20
Affichage marqueurs
- Fichiers joints
-
- screen1.png (204 Kio) Vu 204242 fois
-
- screen2.png (691.66 Kio) Vu 204242 fois
-
- screen3.png (364.72 Kio) Vu 204242 fois
-
- Équipe OpenData
- Messages : 357
- Enregistré le : 23 juin 2011, 16:16
Re: Affichage marqueurs
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...
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...
-
- Messages : 3
- Enregistré le : 04 juin 2019, 15:20
Re: Affichage marqueurs
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.
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.
-
- Messages : 3
- Enregistré le : 04 juin 2019, 15:20
Re: Affichage marqueurs
Bonjour,
J'ai enfin trouvé une solution ! 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
J'ai enfin trouvé une solution ! 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
-
- Équipe OpenData
- Messages : 357
- Enregistré le : 23 juin 2011, 16:16
Re: Affichage marqueurs
Merci pour l'info !