Opened 5 years ago

Last modified 4 years 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 5 years ago by Bhargav Kowshik

Description: modified (diff)

comment:2 Changed 5 years ago by Bhargav Kowshik

I began by checking if the Point object had the magic method __eq__.

The Point objects inherits GEOSGeometry which in-turn has the magic method __eq__.

This in-turn calls equals_exact of GEOSGeometry.

This calls geos_equalsexact on the page below.

I don't understand what happens after this.

comment:3 Changed 5 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:

comment:4 Changed 4 years ago by Olivier Tabone

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