Opened 15 months ago

Closed 7 days ago

#35783 closed New feature (fixed)

Add the ability to natively filter geometries by the number of dimensions used by a Geometry.

Reported by: David Smith Owned by: David Smith
Component: GIS Version: 5.1
Severity: Normal Keywords:
Cc: Triage Stage: Ready for checkin
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

PostGIS and SpatiaLite have a ST_NDims function which returns the number of dimensions a geometry. I propose to add a function similar to what is proposed for GeometryType in #28696.

Support for Oracle should also be possible with its GET_DIMS( ) function see docs . However, I couldn't find a similar function on MySQL/MariaDB.

An implementation for PostGIS/SpatiaLite would look something like this.

class NumDimensions(GeoFunc):
    function = "ST_NDims"
    output_field = IntegerField()
    arity = 1

Which would allow this to be used in QuerySets such as annotating the number of dimensions in a geometry.

Country.objects.annotate(num_dims=functions.NumDimensions("geom"))

I'll prepare a patch if accepted.

Change History (5)

comment:1 by Claude Paroz, 14 months ago

Triage Stage: UnreviewedAccepted

comment:2 by David Smith, 14 months ago

Has patch: set

comment:3 by Natalia Bidart, 14 months ago

Patch needs improvement: set

PR has a an approval from Claude, but I'm setting the flag "patch needs improvement" until we clarify next steps for Oracle and potentially MySQL.

comment:4 by Mariusz Felisiak, 7 days ago

Patch needs improvement: unset
Triage Stage: AcceptedReady for checkin

comment:5 by Mariusz Felisiak <felisiak.mariusz@…>, 7 days ago

Resolution: fixed
Status: assignedclosed

In d86802f:

Fixed #35783 -- Added NumDimensions GIS database function and num_dimensions lookup.

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