[postgis-users] Quick/unobstrusive way to determine if a geometry has curve elements?

Nicolas Ribot nicolas.ribot at gmail.com
Tue May 5 02:35:45 PDT 2015


Hi Andrea,

You could use a PLPGSQL function to catch error for curved geometries and
return the geometry itself in case of error.

Then, either you put all your generic code in this function, or you just
write a wrapper around st_simplify and call it from your SQL code,
according to your needs.

Nicolas

On 5 May 2015 at 10:52, Andrea Aime <andrea.aime at geo-solutions.it> wrote:

> Hi,
> I have some generic build of code that are building queries to postgis
> includingthe st_simplify function, e.g:
>
> select st_simplify(geometry, tolerance) from mytable where ...
>
> This is done to optimize data transfer and overall performance when doing
> map rendering, we just get the
> geometries as "complex" as we need them to.
>
> However, I've found out that the function does not support curved
> geometries, all will throw an error if it
> encounters one of them, e.g.:
>
> > select st_simplify(geometry, 0.1) from curves;
> ERROR:  lwgeom_simplify: unsupported geometry type: CircularString
>
> Curved geometries are often representing a small percentage of the
> geometries, so I would like
> to keep on simplifying the geometries made of straight segments, while
> skipping simplification
> on the curved ones, so I'm looking for a way to quickly and unobstrusively
> check if geometry
> has curved portions inside of it.
>
> So far I've come up with this, but it's not simple, unobstrusive, probably
> not so fast due to string
> comparisons, and not general (what if I stumble into a geometry collection
> that does contain
> curve elements for example?):
>
> select case geometrytype(geometry) when 'CIRCULARSTRING' then geometry
>          when 'COMPOUNDCURVE' then geometry
>          when 'CURVEPOLYGON' then geometry
>          when 'MULTISURFACE' then geometry
>          when 'MULTICURVE' then geometry
>          else st_simplify(geometry,0.1)
>          end
> from curves;
>
> Can anybody suggest a better way, that would not require us to have the
> end user tell
> us if a table mixes in curve bits, or not?
>
> Cheers
> Andrea
>
> --
> ==
> GeoServer Professional Services from the experts! Visit
> http://goo.gl/NWWaa2 for more information.
> ==
>
> Ing. Andrea Aime
> @geowolf
> Technical Lead
>
> GeoSolutions S.A.S.
> Via Poggio alle Viti 1187
> 55054  Massarosa (LU)
> Italy
> phone: +39 0584 962313
> fax: +39 0584 1660272
> mob: +39  339 8844549
>
> http://www.geo-solutions.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.
>
> -------------------------------------------------------
>
> _______________________________________________
> postgis-users mailing list
> postgis-users at lists.osgeo.org
> http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20150505/f1188755/attachment.html>


More information about the postgis-users mailing list