Cuando utilizo iconos específicos para la visualización de puntos mediante GeoServer, varios iconos se recortan automáticamente. Esto puede deberse al tamaño de los azulejos o a otra cosa.
¿Cómo puedo resolver esto?
En general, tienes 3 opciones:
Puedes desactivar el mosaico por completo, lo que probablemente eliminará la mayoría de los símbolos que se cortan (¿excepto tal vez en los bordes del cuadro delimitador?), pero obviamente hará que los tiempos de renderizado aumenten, por lo que no lo recomendaría.
Es posible que desee buscar en metatiling, que efectivamente combina múltiples azulejos adyacentes a la baldosa actual antes de renderizar la simbología y luego los transforma de nuevo en el tamaño del azulejo original. El WMS de GeoServer soporta el metatiling como un parámetro del proveedor, pero está sujeto a la restricción de que el tamaño del mosaico debe ser de 256x256 píxeles. Yo recomendaría usar GeoWebCache en su lugar, ya que tiene más opciones de metatiling y es más flexible en este sentido.
GeoWebCache también ofrece un parámetro de canalón, que añade un espacio de relleno de píxeles extra alrededor de cada baldosa. Esto también ayuda a eliminar los artefactos cerca de los bordes de las baldosas, y puede combinarse con el metatiling para evitar dichos artefactos.
Ver https://docs.geoserver.org/stable/en/user/geowebcache/webadmin/defaults.html#default-metatile-size para obtener información sobre el metatiling y los canalones.
Relacionado: GeoServer VendorOption for SLD to place labels overlapping and out of bounds
(Tal vez esta no sea una respuesta correcta, ya que la pregunta se refiere a los iconos de los puntos; pero esperemos que a alguien le sirva).
Además del canalón mencionado en la respuesta, utilicé el siguiente enfoque para etiquetar las líneas utilizando un TextSymolizer con un Graphic (y resolver el problema de los símbolos que se recortan en los bordes de los azulejos):
<TextSymbolizer>
<!-- ... -->
<Graphic>
<ExternalGraphic>
<OnlineResource xlink:type="simple" xlink:href="http://localhost:8080/geoserver/styles/icons/${code}.png"/>
<Format>image/png</Format>
</ExternalGraphic>
<Size>25</Size>
<Rotation>0</Rotation>
</Graphic>
<Priority>100000</Priority>
<VendorOption name="spaceAround">13</VendorOption>
<VendorOption name="group">no</VendorOption>
<VendorOption name="repeat">300</VendorOption>
<VendorOption name="partials">true</VendorOption>
</TextSymbolizer>
Esto crea un icono de 25pixel de altura/ancho como etiqueta de una línea usando el código de atributo/propiedad de la característica servida por GeoServer (2.7 en mi caso), con un spaceAround de un poco más de la mitad del tamaño del icono y sin agrupación.
El <VendorOption name="partials">true</VendorOption>
le dice a GeoServer que dibuje sólo una etiqueta (sin importar cuántos mosaicos se necesiten para mostrar la característica). (Tenga en cuenta que esto es muy similar a un <PointSymbolizer>
en lugar de un <TextSymbolizer>
pero para una línea curva la etiqueta se coloca directamente en la línea y pas en el centroide de la línea, que puede estar a un lado de la misma). Y <VendorOption name="repeat">300</VendorOption>
entonces hace casi lo mismo que si no se usan parciales (por defecto es falso), ya que el icono se dibuja en cada baldosa, pero en conjunción con parciales=verdadero el icono se repite cada 300 píxeles (a poco más de una baldosa por defecto de 256 ) sin ningún recorte de iconos en los bordes de las baldosas.
Yo tuve el mismo problema y la solución que me funcionó fue esta: https://gis.stackexchange.com/a/198663/93019
He incrementado el parámetro del buffer en WMS.
I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.