Opened 9 years ago
Closed 7 years ago
#25650 closed Cleanup/optimization (wontfix)
`GEOSGeomerty.__eq__` should use `equals` not `equals_exact`
Reported by: | Sergey Fedoseev | Owned by: | Sergey Fedoseev |
---|---|---|---|
Component: | GIS | Version: | dev |
Severity: | Normal | Keywords: | |
Cc: | Triage Stage: | Accepted | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
In [1]: from django.contrib.gis.geos import LineString In [2]: LineString((0, 0), (1, 1)) == LineString((1, 1), (0, 0)) Out[2]: False
in psql
SELECT ST_GeomFromText('LINESTRING(0 0, 1 1)') = ST_GeomFromText('LINESTRING(1 1, 0 0)'); ?column? ---------- t (1 строка)
Using equals
in __eq__
will allow to get rid of some quirks in tests, such as this.
There is related ticket in GEOS trac.
Change History (4)
comment:1 by , 9 years ago
Owner: | changed from | to
---|---|
Status: | new → assigned |
follow-up: 3 comment:2 by , 9 years ago
Triage Stage: | Unreviewed → Accepted |
---|---|
Version: | 1.8 → master |
comment:3 by , 9 years ago
Replying to claudep:
See also the discussion on #25446. The difficulty here is to find an acceptable compatibility path and to take into account backend differences. Feel free to try!
GEOSGeometry
also supports comparison with WKT strings, which works like this:
In [25]: Point(0, 0) == 'POINT (0.0000000000000000 0.0000000000000000)' Out[25]: True In [26]: Point(0, 0) == 'POINT (0 0)' Out[26]: False
I think that it would make behavior more consistent if __eq__
created geometry from WKT string and then used it for comparison, from other hand I think that comparison of different types is not pythonic at all. What do you think about this?
comment:4 by , 7 years ago
Resolution: | → wontfix |
---|---|
Status: | assigned → closed |
After a while I think the current implementation is OK because if we want to compare "spatially" we need to transform both geometries to the SRID which will inevitably lead to computational error.
See also the discussion on #25446. The difficulty here is to find an acceptable compatibility path and to take into account backend differences. Feel free to try!