Suite

Les tuiles OpenLayers à partir de données cartographiques reprojetées mélangent les niveaux de zoom


Nous avons une couche de tuiles de carte sur OpenLayers où la projection originale estEPSG : 3067et il est reprojeté àEPSG : 3395projection. La carte arrive assez bien, elle n'a pas les tuiles comme des carrés droits, mais ça va quand même pour nous.

Le problème est que dans la partie nord de la carte, les tuiles qui sont sur la carte deviennent de deux couches. Il y a une ligne horizontale avec de nombreuses courbes qui sépare les tuiles au nord avec un autre niveau de zoom et au sud avec un autre.

L'aperçu sur GeoServer montre toutes les tuiles au même niveau de zoom, contrairement à la carte basée sur le code openlayers. Nous avons eu un problème du même genre lorsque nous avions des niveaux de zoom personnalisés sur la carte, mais en les supprimant, le séparateur est apparu au nord. Auparavant, c'était beaucoup plus au sud.

Qu'est-ce qui pourrait amener la couche à prendre des tuiles à partir de différents niveaux de zoom par base de tuile, avec deux niveaux différents utilisés sur l'ensemble de la carte, une division entre les parties nord et sud.

Le problème serait plutôt correct s'il n'y avait pas de noms de lieux sur la carte. Maintenant, ils sont coupés et manquants en partie.

La couche est initialisée avec unol.source.TileWMSprenant en compte le nom du calque, le format (image/png), la transparence et une version.

La couche est unol.layer.Tileavec ce tileWMS comme source, titre et visibilité.

Tout cela semble si basique, il n'y a au moins aucun hack là-dessus. Qu'est-ce qui pourrait causer le problème?

Edit1 :

Il semble que le GeoServer renvoie les tuiles agrandies différemment. J'ai pris les URL de demande de tuile et dans les tuiles de celles-ci, j'ai trouvé des tuiles qui semblaient avoir été zoomées à différents niveaux.

Il demande des tuiles 256x256 à partir de différents cadres de délimitation dans ces requêtes, d'une manière ou d'une autre, ils ont des niveaux de zoom différents.

La conversion à la volée peut-elle en quelque sorte mélanger la chose?

Edit2 :

La découverte la plus récente est que les données d'origine sont un groupe de couches, ce qui peut provoquer le changement de niveau, si certaines demandes donnent des données d'un autre groupe pour une raison quelconque.


J'ai changé les limites de la couche en des nombres totalement nouveaux, autres que sur la carte et autres que configurés sur GeoServer, voici le code pertinent que j'ai ajouté à Layer init :

tileGrid : nouveau ol.tilegrid.XYZ({ étendue : [-380188, 5249943, 1347312, 8226943], résolutions : [2048.0, 1024.0, 361.0, 256.0, 128.0, 64.0, 32.0, 16.0, 8.0, 4.0, 2.0, 0.5] })

Cela a fait disparaître l'effet de la carte.

Il y avait auparavant ce même code avec le deuxième numéro d'extent 6249943, je l'ai abaissé d'un million et le problème a disparu.

Note latérale:

Peut-être que le problème se produit maintenant sur une carte écrite quelque part, mais lorsque le service ne renvoie qu'une partie limitée du monde (un pays, la Finlande), ce n'est plus un problème visible. Avec une carte du monde, cela pourrait toujours être un problème quelque part. Pourtant, cela ne se rendra-t-il même pas sur les cartes du monde entier, c'est une autre histoire. Comme indiqué par @AndreJ, la projection utilisée est rare.


Voir la vidéo: Les tuiles à plancher et les tuiles murales (Octobre 2021).