Opened 3 weeks ago

Last modified 20 hours ago

#37173 assigned New feature

Support for curved geometry types

Reported by: Matthias Kuhn Owned by: Matthias Kuhn
Component: GIS Version: dev
Severity: Normal Keywords:
Cc: Triage Stage: Accepted
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

GeoDjango has support for various geometry types (Point, Line, Polygon and their Multi types), the gdal component also supports curves but geos and the db mapping do not yet have support for curved types.

Support for the following types should be added for supporting curved types:

CircularString,
CompoundCurve,
CurvePolygon,
MultiCurve,
MultiSurface

We have been working on libgeos to introduce basic support for curves in version 3.13 https://github.com/libgeos/geos/releases/tag/3.13.0, the support is gradually improved in the algorithms in 3.14 and upcoming 3.15.

Postgis allows for storing curved types for a long time already.

We will be happy to work on support for this.

Change History (2)

comment:1 by David Smith, 3 weeks ago

Owner: set to Matthias Kuhn
Status: newassigned
Triage Stage: UnreviewedAccepted

Thanks for the ticket. Adding support for curved geometries to GEOS / database would be a good next step in this area. #34406 was the ticket that resulted in GDAL support for curved geometries being added.

#36849 was a sidequest from when I speculatively looked at this (Nov-2024). GEOS raised many error messages (or at least 3.13 did) as many functions did not support curved geometries. Django currently crashes with an unintuitive GEOSException in this scenario with the underlying GEOS message not easily visible. That ticket/patch aim to improve that.

A patch would be very welcome. I'll set yourself as the owner of the ticket.

comment:2 by Matthias Kuhn, 20 hours ago

Thanks for the additional information.

Note: 3.15 also comes with the possibility to automatically segmentize curves if the underlying operations do not support curves, this would avoid exceptions at the expense of potentially lossy operations.

https://github.com/libgeos/geos/pull/1382

Note: See TracTickets for help on using tickets.
Back to Top