Suite

Le style Geoserver WMS Circle SLD renvoie un cercle incomplet avec des niveaux de zoom plus élevés

Le style Geoserver WMS Circle SLD renvoie un cercle incomplet avec des niveaux de zoom plus élevés


J'utilise OpenGeo Suite Boundless v2.6

J'ai créé un style SLD pour une couche de points et crée 2 règles :

  • Règle pour dessiner une icône graphique à partir d'un fichier png.
  • Règle pour dessiner un cercle avec un rayon (taille) à partir de la table db en utilisant la valeur (attribut OGC) en mètres.

J'utilise le code suivant pour charger la couche dans OL3 :

var wmsSource = new ol.source.TileWMS ({ url : 'http://localhost:8080/geoserver/wms', params : {'TILED': true, VERSION:'1.3.0', 'LAYERS': 'myds :antenne', }, serverType: 'geoserver' }); new ol.layer.Tile({ id:'Message', title: 'Antennas', visible: true , source:wmsSource });

La couche chargée correctement sur la carte dans certains niveaux de zoom inférieurs (0-10) si j'ai zoomé sur plus de niveaux vers le bas (11-17), la forme du cercle est découpée par les tuiles comme l'image ci-dessous :

La chose étrange lorsque j'ai défini la 2ème règle dans le SLD pour obtenir une valeur de rayon fixe comme (2000) mètres - Pas à partir de la table db -, cela trace un cercle complet dans tous les niveaux de zoom, mais je dois définir un rayon différent pour chaque cercle.

J'ai essayé de nombreuses solutions pour éviter cette erreur en changeant les facteurs de métallisation en 100x100 au lieu de 4x4 et en changeant la gouttière en 100px, cela résout le problème mais affecte mal la vitesse de chargement.

Alors merci de m'aider à résoudre ce problème.


Après avoir appliqué la suggestion iant en publiant un bug sur Geoserver dans le lien suivant Geoserver Issue

mais la première réponse était :

Ce n'est pas un bug, GeoServer ne peut pas prédire la taille du cercle car il dépend de ses attributs. Vous devez configurer manuellement un tampon de rendu suffisamment grand pour répondre à tous vos besoins dans la configuration de la couche : http://docs.geoserver.org/2.7.1/user/webadmin/data/layers.html

Une autre réponse utilise ol.source.ImageWMS** à la place d'utiliser **ol.source.TileWMS' qui renverra la réponse WMS dans UNE image unique et non en mosaïque afin que les cercles ne soient pas coupés comme l'image précédemment jointe.

J'ai essayé cette réponse et le cercle incomplet a disparu et le résultat est des cercles complets avec le rayon sélectionné à partir de l'attribut DB.

Donc la conclusion est :

  • Utiliser ol.source.ImageWMS si vous souhaitez charger la réponse WMS dans une seule image de tuile - pas d'images en mosaïque -.

Je voulais partager la solution avec toute personne confrontée à ce problème.


Voir la vidéo: Placer sur le cercle trigonométrique: rappel du partage du cercle