[Geoserver-users] Odd rendering of MultiLineString

I am hitting a problem with the rendering of a MultiLineString (MLS) and hope someone can

1) Determine if it is a bug that should be reported, and

2) Provide any options for getting the desired result

The issue is simple - I have a MLS with three lines - A->B, A->C, and A->D

When rendered with the standard line SLD this manifests as a collection that include A->B, (B->A)**, A->C, (C->A)**, A->D, (D->A)**

where the items tagged with ** are straight lines between these points, and should not really be present in my opinion. Why is the rendering adding these 'end-to-start' connectors? Is there a way to tell it not to?

My current workaround is an overly complex SQL query that splits the MLS into its respective lines - so in this case the result is three rows with the respective individual Lines (and all other columns from the DB the same).

With out seeing the data and the sld it’s hard to say exactly, but it sounds as if you’ve used a PolygonSymbolizer instead of a LineSymbolizer to style the geometry.

Ian

···

Ian Turton

It is using a LineSymbolizer. If needed I can post the SLD, a data sample, and some snapshots of the result.

On 4/29/2022 1:47 AM, Ian Turton wrote:

With out seeing the data and the sld it's hard to say exactly, but it sounds as if you've used a PolygonSymbolizer instead of a LineSymbolizer to style the geometry.

Ian

Given the behavior, I’m guessing you have multi-line string data in a database column
that’s declared to be LineString instead.
GeoServer follows a strict type system (based on its WFS heritage) and
will convert a MLS into a simple linestring in one of the possible ways, connecting the bits.

If that’s not the case, then yes, please do share a minimal data set to reproduce.

Cheers
Andrea

···

Regards,

Andrea Aime

==
GeoServer Professional Services from the experts!

Visit http://bit.ly/gs-services-us for more information.

Ing. Andrea Aime
@geowolf
Technical Lead

GeoSolutions Group
phone: +39 0584 962313

fax: +39 0584 1660272

mob: +39 333 8128928

https://www.geosolutionsgroup.com/

http://twitter.com/geosolutions_it


Con riferimento alla normativa sul trattamento dei dati personali (Reg. UE 2016/679 - Regolamento generale sulla protezione dei dati “GDPR”), si precisa che ogni circostanza inerente alla presente email (il suo contenuto, gli eventuali allegati, etc.) è un dato la cui conoscenza è riservata al/i solo/i destinatario/i indicati dallo scrivente. Se il messaggio Le è giunto per errore, è tenuta/o a cancellarlo, ogni altra operazione è illecita. Le sarei comunque grato se potesse darmene notizia.

This email is intended only for the person or entity to which it is addressed and may contain information that is privileged, confidential or otherwise protected from disclosure. We remind that - as provided by European Regulation 2016/679 “GDPR” - copying, dissemination or use of this e-mail or the information herein by anyone other than the intended recipient is prohibited. If you have received this email by mistake, please notify us immediately by telephone or e-mail

You nailed it (as usual), with one caveat. In the postgres DB the column type is geometry, but when I use the ‘Guess geometry type and srid’ from the SQL view for the layer, it is filling in the type as LineString. This is a bit odd since the table contains a mix of both LineString and MultiLineString entries. If I manually change it to geometry it reverts to rendering as expected.

So now the question is, is this misapplication of data type worthy of a bug report?

···

On 4/29/2022 11:22 PM, Andrea Aime wrote:

Given the behavior, I’m guessing you have multi-line string data in a database column
that’s declared to be LineString instead.
GeoServer follows a strict type system (based on its WFS heritage) and
will convert a MLS into a simple linestring in one of the possible ways, connecting the bits.

If that’s not the case, then yes, please do share a minimal data set to reproduce.

Cheers
Andrea

The guessing happens by loading a single record from the database. I guess it could try to use a few more records, but certainly not all of them (might take minutes or hours on very large tables).
I’d say it’s a possible minor improvement request, which we ask users to report only if they intend to back it with development time or funding (feature requests are otherwise closed after
one year of inactivity).

Cheers
Andrea

···

GeoServer Professional Services from the experts!

Visit http://bit.ly/gs-services-us for more information.

Ing. Andrea Aime
@geowolf
Technical Lead

GeoSolutions Group
phone: +39 0584 962313

fax: +39 0584 1660272

mob: +39 333 8128928

https://www.geosolutionsgroup.com/

http://twitter.com/geosolutions_it


Con riferimento alla normativa sul trattamento dei dati personali (Reg. UE 2016/679 - Regolamento generale sulla protezione dei dati “GDPR”), si precisa che ogni circostanza inerente alla presente email (il suo contenuto, gli eventuali allegati, etc.) è un dato la cui conoscenza è riservata al/i solo/i destinatario/i indicati dallo scrivente. Se il messaggio Le è giunto per errore, è tenuta/o a cancellarlo, ogni altra operazione è illecita. Le sarei comunque grato se potesse darmene notizia.

This email is intended only for the person or entity to which it is addressed and may contain information that is privileged, confidential or otherwise protected from disclosure. We remind that - as provided by European Regulation 2016/679 “GDPR” - copying, dissemination or use of this e-mail or the information herein by anyone other than the intended recipient is prohibited. If you have received this email by mistake, please notify us immediately by telephone or e-mail

Thanks. Not likely to get any support under my current contract. I’m not sure if there is an abstract SQL way to do this, but with postGIS something like

select st_geometryType(the_geom) as gts from xxx group by gts

should be reasonably quick. The good thing is that this is not a run time activity, so mildly slow performance should not be a big issue for most people.

···

On 5/11/2022 3:28 AM, Andrea Aime wrote:

The guessing happens by loading a single record from the database. I guess it could try to use a few more records, but certainly not all of them (might take minutes or hours on very large tables).

I’d say it’s a possible minor improvement request, which we ask users to report only if they intend to back it with development time or funding (feature requests are otherwise closed after
one year of inactivity).