Opened 3 years ago
Last modified 3 years ago
#33787 closed Bug
GeosGeometry doesn't support empty 3d points — at Version 1
| 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 )
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.