[Geoserver-users] WMS layer with Labels does not render when using "interiorPoint" function

Hello,

I’ve been using Leaflet + Geoserver 2.9.0 to represent WMS layers with labels. Since Leaflet only works in tiled mode I came to the problem that labels would appear once per tile. To correct this problem I tried to put labels to show up at the geometry’s centroid, even if this meant that some labels would not appear. This worked okay but since some centroids are outside of the geometry it lead to some visual errors to the users. So I started to use the “interiorPoint” function which appeared to solve my problem.

I have noticed, however, that under certain zoom levels the tiles simply do not show up. I get this error (I attached the full stack trace):

“Rendering process failed found non-noded intersection between LINESTRING ( -8.9883 38.7852, -8.979700000000001 38.7778 ) and LINESTRING ( -8.983 38.773, -8.9778 38.784600000000005 ) [ (-8.980528645833335, 38.77851302083334, NaN) ]”

I have searched a lot but didn’t find much information about this error, it all seemed to lead to geometry issues. I checked if the geometry contained any issues but it seems to be okay. I do not have any errors with no labels or using the centroid function instead. I will revert to use the centroid function but would appreciate some feedback as to why the interiorPoint function fails, what can I do about it or maybe a different strategy to solve the tiled labeling problem.

I have attached the SLD I am using and the stack trace that I found in the log file.

Thank you very much.

Cosme Benito

error.txt (37.9 KB)

sld.xml (1.48 KB)

Hello,

I’ve been using Leaflet + Geoserver 2.9.0 to represent WMS layers with labels. Since Leaflet only works in tiled mode I came to the problem that labels would appear once per tile. To correct this problem I tried to put labels to show up at the geometry’s centroid, even if this meant that some labels would not appear. This worked okay but since some centroids are outside of the geometry it lead to some visual errors to the users. So I started to use the “interiorPoint” function which appeared to solve my problem.

I have noticed, however, that under certain zoom levels the tiles simply do not show up. I get this error (I attached the full stack trace):

“Rendering process failed found non-noded intersection between LINESTRING ( -8.9883 38.7852, -8.979700000000001 38.7778 ) and LINESTRING ( -8.983 38.773, -8.9778 38.784600000000005 ) [ (-8.980528645833335, 38.77851302083334, NaN) ]”

I have searched a lot but didn’t find much information about this error, it all seemed to lead to geometry issues. I checked if the geometry contained any issues but it seems to be okay. I do not have any errors with no labels or using the centroid function instead. I will revert to use the centroid function but would appreciate some feedback as to why the interiorPoint function fails, what can I do about it or maybe a different strategy to solve the tiled labeling problem.

I have attached the SLD I am using and the stack trace that I found in the log file.

Thank you very much.

Cosme Benito

Thanks for pointing it out but I do appreciate the tiled advantages over the single tile approach. I’d much rather solve this at GeoServer’s end, if possible.

Cosme Benito

From: Nuno Oliveira [mailto:nuno.oliveira@anonymised.com]
Sent: quarta-feira, 6 de Julho de 2016 17:48
To: Cosme Benito cosme.benito@anonymised.com; geoserver-users@anonymised.comts.sourceforge.net
Subject: Re: [Geoserver-users] WMS layer with Labels does not render when using “interiorPoint” function

Hi,

There is a plugin for leaflet that allows you to have a non tiled mode:

http://leafletjs.com/plugins.html#basemap-formats the plugin name is leaflet.wms.

I never tried it (mainly because it requires leaflet master) but it may be useful.

There is also this one in https://www.npmjs.com/package/leaflet.nontiledlayer I manage to

make it work in leaflet 0.7.3 the only problem I had with it was that at big zoom levels the

map is not repeated.

Regards,

Nuno Oliveira

Le mercredi 06 juillet 2016 à 17:57 +0200, Cosme Benito a écrit :

Hello,

I’ve been using Leaflet + Geoserver 2.9.0 to represent WMS layers with labels. Since Leaflet only works in tiled mode I came to the problem that labels would appear once per tile. To correct this problem I tried to put labels to show up at the geometry’s centroid, even if this meant that some labels would not appear. This worked okay but since some centroids are outside of the geometry it lead to some visual errors to the users. So I started to use the “interiorPoint” function which appeared to solve my problem.

I have noticed, however, that under certain zoom levels the tiles simply do not show up. I get this error (I attached the full stack trace):

“Rendering process failed found non-noded intersection between LINESTRING ( -8.9883 38.7852, -8.979700000000001 38.7778 ) and LINESTRING ( -8.983 38.773, -8.9778 38.784600000000005 ) [ (-8.980528645833335, 38.77851302083334, NaN) ]”

I have searched a lot but didn’t find much information about this error, it all seemed to lead to geometry issues. I checked if the geometry contained any issues but it seems to be okay. I do not have any errors with no labels or using the centroid function instead. I will revert to use the centroid function but would appreciate some feedback as to why the interiorPoint function fails, what can I do about it or maybe a different strategy to solve the tiled labeling problem.

I have attached the SLD I am using and the stack trace that I found in the log file.

Thank you very much.

Cosme Benito

------------------------------------------------------------------------------
Attend Shape: An AT&T Tech Expo July 15-16. Meet us at AT&T Park in San
Francisco, CA to explore cutting-edge tech and listen to tech luminaries
present their vision of the future. This family event has something for
everyone, including kids. Get more information and register today.
[http://sdm.link/attshape](http://sdm.link/attshape)
_______________________________________________
Geoserver-users mailing list
[Geoserver-users@anonymised.comourceforge.net](mailto:Geoserver-users@lists.sourceforge.net)
[https://lists.sourceforge.net/lists/listinfo/geoserver-users](https://lists.sourceforge.net/lists/listinfo/geoserver-users)
-- 
==
GeoServer Professional Services from the experts! 
Visit [http://goo.gl/it488V](http://goo.gl/it488V) for more information.
==
Nuno Miguel Carvalho Oliveira
@nmcoliveira
Software Engineer

GeoSolutions S.A.S.
Via di Montramito 3/A
55054  Massarosa (LU)
Italy

phone: +39 0584 962313
fax:   +39 0584 1660272
mob:   +39  333 8128928

[http://www.geo-solutions.it](http://www.geo-solutions.it)
[http://twitter.com/geosolutions_it](http://twitter.com/geosolutions_it)

-------------------------------------------------------

AVVERTENZE AI SENSI DEL D.Lgs. 196/2003
Le informazioni contenute in questo messaggio di posta elettronica e/o nel/i file/s allegato/i sono
da considerarsi strettamente riservate. Il loro utilizzo è consentito esclusivamente al destinatario del messaggio, per le finalità indicate
nel messaggio stesso. Qualora riceviate questo messaggio senza esserne il destinatario, Vi preghiamo cortesemente di darcene notizia via e
-mail e di procedere alla distruzione del messaggio stesso, cancellandolo dal Vostro sistema. Conservare il messaggio stesso, divulgarlo
anche in parte, distribuirlo ad altri soggetti, copiarlo, od utilizzarlo per finalità diverse, costituisce comportamento contrario ai
principi dettati dal D.Lgs. 196/2003.
 
The information in this message and/or attachments, is intended solely for the attention and use of
the named addressee(s) and may be confidential or proprietary in nature or covered by the provisions of privacy act (Legislative Decree
June, 30 2003, no.196 - Italy's New Data Protection Code).Any use not in accord with its purpose, any disclosure, reproduction, copying,
distribution, or either dissemination, either whole or partial, is strictly forbidden except previous formal approval of the named
addressee(s). If you are not the intended recipient, please contact immediately the sender by telephone, fax or e-mail and delete the
information in this message that has been received in error. The sender does not give any warranty or accept liability as the content,
accuracy or completeness of sent messages and accepts no responsibility  for changes made after they were sent or for other risks which
arise as a result of e-mail transmission, viruses, etc.

Hi Cosme,

How did you check out the geometries were ok? Did you run an actual
validity check like ST_IsValid or did you inspect them visually? It
might be that the "interiorPoint" algorithm uncovered something odd that
is not evident to the eye.

From what you have written, the problem is probably elsewhere, but I
would try fiddling with the geometries just to be sure (a test
environment should be used for that). I had success in the past with
postgis' ST_SnapToGrid with a very fine grid followed by
ST_SimplifyPreserveTopology with a very low "tolerance" field to get rid
of redundant vertices and small topology errors. See my FOSS4g 2014
'Crazy Data' presentation on Vimeo for more aggressive geometry cleanup.

Best,
--Daniel

Em 06/07/2016 12:57, Cosme Benito escreveu:

Hello,

I’ve been using Leaflet + Geoserver 2.9.0 to represent WMS layers with
labels. Since Leaflet only works in tiled mode I came to the problem
that labels would appear once per tile. To correct this problem I
tried to put labels to show up at the geometry’s centroid, even if
this meant that some labels would not appear. This worked okay but
since some centroids are outside of the geometry it lead to some
visual errors to the users. So I started to use the “interiorPoint”
function which appeared to solve my problem.

I have noticed, however, that under certain zoom levels the tiles
simply do not show up. I get this error (I attached the full stack trace):

“Rendering process failed found non-noded intersection between
LINESTRING ( -8.9883 38.7852, -8.979700000000001 38.7778 ) and
LINESTRING ( -8.983 38.773, -8.9778 38.784600000000005 ) [
(-8.980528645833335, 38.77851302083334, NaN) ]”

I have searched a lot but didn’t find much information about this
error, it all seemed to lead to geometry issues. I checked if the
geometry contained any issues but it seems to be okay. I do not have
any errors with no labels or using the centroid function instead. I
will revert to use the centroid function but would appreciate some
feedback as to why the interiorPoint function fails, what can I do
about it or maybe a different strategy to solve the tiled labeling
problem.

I have attached the SLD I am using and the stack trace that I found in
the log file.

Thank you very much.

Cosme Benito

------------------------------------------------------------------------------
Attend Shape: An AT&T Tech Expo July 15-16. Meet us at AT&T Park in San
Francisco, CA to explore cutting-edge tech and listen to tech luminaries
present their vision of the future. This family event has something for
everyone, including kids. Get more information and register today.
http://sdm.link/attshape

_______________________________________________
Geoserver-users mailing list
Geoserver-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-users

Hi Daniel,

I have checked the validity with the ST_IsValid. I also tried the SnapToGrid method you described and a similar approach based on buffers, both net the same result.

I'll check your presentation, maybe I can find a way to figure this out.

Thanks,
Cosme Benito

-----Original Message-----
From: Daniel Araujo Miranda [mailto:miranda.dam@anonymised.com]
Sent: quarta-feira, 6 de Julho de 2016 18:04
To: geoserver-users@lists.sourceforge.net
Subject: Re: [Geoserver-users] WMS layer with Labels does not render when using "interiorPoint" function

Hi Cosme,

How did you check out the geometries were ok? Did you run an actual validity check like ST_IsValid or did you inspect them visually? It might be that the "interiorPoint" algorithm uncovered something odd that is not evident to the eye.

From what you have written, the problem is probably elsewhere, but I would try fiddling with the geometries just to be sure (a test environment should be used for that). I had success in the past with postgis' ST_SnapToGrid with a very fine grid followed by ST_SimplifyPreserveTopology with a very low "tolerance" field to get rid of redundant vertices and small topology errors. See my FOSS4g 2014 'Crazy Data' presentation on Vimeo for more aggressive geometry cleanup.

Best,
--Daniel

Em 06/07/2016 12:57, Cosme Benito escreveu:

Hello,

I’ve been using Leaflet + Geoserver 2.9.0 to represent WMS layers with
labels. Since Leaflet only works in tiled mode I came to the problem
that labels would appear once per tile. To correct this problem I
tried to put labels to show up at the geometry’s centroid, even if
this meant that some labels would not appear. This worked okay but
since some centroids are outside of the geometry it lead to some
visual errors to the users. So I started to use the “interiorPoint”
function which appeared to solve my problem.

I have noticed, however, that under certain zoom levels the tiles
simply do not show up. I get this error (I attached the full stack trace):

“Rendering process failed found non-noded intersection between
LINESTRING ( -8.9883 38.7852, -8.979700000000001 38.7778 ) and
LINESTRING ( -8.983 38.773, -8.9778 38.784600000000005 ) [
(-8.980528645833335, 38.77851302083334, NaN) ]”

I have searched a lot but didn’t find much information about this
error, it all seemed to lead to geometry issues. I checked if the
geometry contained any issues but it seems to be okay. I do not have
any errors with no labels or using the centroid function instead. I
will revert to use the centroid function but would appreciate some
feedback as to why the interiorPoint function fails, what can I do
about it or maybe a different strategy to solve the tiled labeling
problem.

I have attached the SLD I am using and the stack trace that I found in
the log file.

Thank you very much.

Cosme Benito

----------------------------------------------------------------------
-------- Attend Shape: An AT&T Tech Expo July 15-16. Meet us at AT&T
Park in San Francisco, CA to explore cutting-edge tech and listen to
tech luminaries present their vision of the future. This family event
has something for everyone, including kids. Get more information and
register today.
http://sdm.link/attshape

_______________________________________________
Geoserver-users mailing list
Geoserver-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-users

------------------------------------------------------------------------------
Attend Shape: An AT&T Tech Expo July 15-16. Meet us at AT&T Park in San Francisco, CA to explore cutting-edge tech and listen to tech luminaries present their vision of the future. This family event has something for everyone, including kids. Get more information and register today.
http://sdm.link/attshape
_______________________________________________
Geoserver-users mailing list
Geoserver-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-users