Opened 2 years ago

Last modified 13 months ago

#25342 new Bug

Altitude of Point object for equality check

Reported by: Bhargav Kowshik Owned by: nobody
Component: GIS Version: master
Severity: Normal Keywords: geodjango, equality
Cc: olivier.tabone@… Triage Stage: Accepted
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description (last modified by Bhargav Kowshik)

Checking equality of two django.contrib.gis.geos.Point objects does not take into consideration the altitude of the point.

from django.contrib.gis.geos import Point

p1 = Point(x=1, y=1, z=1, srid=4326)
print p1 == p1  # True

p2 = Point(x=1.1, y=1, z=1, srid=4326)
print p1 == p2  # False

p3 = Point(x=1, y=1, z=2, srid=4326)
print p1 == p3  # True. Is this a bug?

Change History (4)

comment:1 Changed 2 years ago by Bhargav Kowshik

Description: modified (diff)

comment:2 Changed 2 years ago by Bhargav Kowshik

I began by checking if the Point object had the magic method __eq__.
https://github.com/django/django/blob/master/django/contrib/gis/geos/point.py#L10

The Point objects inherits GEOSGeometry which in-turn has the magic method __eq__.
https://github.com/django/django/blob/master/django/contrib/gis/geos/geometry.py#L166

This in-turn calls equals_exact of GEOSGeometry.
https://github.com/django/django/blob/master/django/contrib/gis/geos/geometry.py#L317

This calls geos_equalsexact on the page below.
https://github.com/django/django/blob/8047e3666b0b50bb04e6f16c2a4fb21ddfd5713f/django/contrib/gis/geos/prototypes/predicates.py#L36

I don't understand what happens after this.

comment:3 Changed 2 years ago by Claude Paroz

Triage Stage: UnreviewedAccepted
Version: 1.7master

This is most probably a GEOS issue, where the Z dimension support is rather new.
Keeping open until we find where the problem really lies.

Here is some interesting GEOS code:
https://svn.osgeo.org/geos/trunk/src/geom/

comment:4 Changed 13 months ago by Olivier Tabone

Cc: olivier.tabone@… added
Note: See TracTickets for help on using tickets.
Back to Top