Opened 2 years ago

Closed 2 years ago

#33787 closed Bug (invalid)

GeosGeometry doesn't support empty 3d points

Reported by: Nicolas Noé Owned by: nobody
Component: GIS Version: 4.0
Severity: Normal Keywords:
Cc: Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description (last modified by Nicolas Noé)

I need to create an empty 3d point using GeosGeometry, but it appears the z dimension gets lost in the process:

In [1]: from django.contrib.gis.geos import GEOSGeometry

In [2]: g = GEOSGeometry('POINT Z EMPTY', srid=4326)

In [3]: g.ewkt
Out[3]: 'SRID=4326;POINT EMPTY'

In [4]: g.hasz
Out[4]: False

I'd expect g.ewkt to be 'SRID=4326;POINT Z EMPTY' and g.hasz to be True. As a consequence, I can't assign it to a 3d model field.

I see the correct behavior if I use a non empty 3d point:

In [13]: g_non_empty = GEOSGeometry('POINT Z (1 1 1)', srid=4326)

In [14]: g_non_empty.hasz
Out[14]: True

In [15]: g_non_empty.ewkt
Out[15]: 'SRID=4326;POINT Z (1 1 1)'

I also tried creating the same feature using EWKB (0x0101000080000000000000F87F000000000000F87F000000000000F87F is a 3D empty point), but the third dimension is also lost here, just like in the first example.

Change History (2)

comment:1 by Nicolas Noé, 2 years ago

Description: modified (diff)

comment:2 by Mariusz Felisiak, 2 years ago

Resolution: invalid
Status: newclosed

Thanks for the report, however, this looks like an issue in GEOS not in Django itself (see e.g. https://trac.osgeo.org/geos/ticket/1005). Django doesn't do anything special with the WKT. I'd try to report/discuss this in GEOS bug tracker.

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