Django

Code

Ticket #10380 (closed: fixed)

Opened 1 year ago

Last modified 1 year ago

gdal Envelope should allow min_x == max_x and/or min_y == max_y

Reported by: psmith Assigned to: jbronn
Milestone: 1.1 Component: GIS
Version: 1.0 Keywords: envelope extent gdal
Cc: Triage Stage: Accepted
Has patch: 1 Needs documentation: 0
Needs tests: 0 Patch needs improvement: 0

Description

When initializing a new django.contrib.gis.gdal.Envelope object, an OGRException is raised if the min_x value is less than or equal to max_x, and if the min_y value is less than or equal to max_y. It would be better if the exception was raised on in the case that min_x was greater than max_x and/or if min_y greater than max_y.

The reason that it is often useful to create an Envelope from a point initially, say from the extent of a django.contrib.gis.geos.Point object, where the min_x and min_y will equal the max_x and max_y, respectively. For example, to find the extent of a set or list of points, it is convenient to iterate over the collection, creating the Envelope initially with the first point from the iteration, then expanding it with each successive point. (Perhaps using the expand_to_include method proposed in #10368.)

Example:

>>> from django.contrib.gis.geos import Point
>>> from django.contrib.gis.gdal import Envelope
>>> env = None
>>> for pt in [Point(5, 10), Point(-1, 3), Point(9, -2)]:
...     if env is None:
...         env = Envelope(pt.extent)
...     else:
...         env.expand_to_include(pt.extent)
>>> env.tuple
(-1, -2, 9, 10)

Making this change should have no impact on the semantics of the Envelope class: indeed, the OGREnvelope class in ogr_core.h from which it is derived does not enforce or check for the ordering of the min and max values.

Attachments

gis_envelope_min_max.diff (1.6 kB) - added by psmith on 02/28/09 17:24:09.
Patch to envelope.py with unit test

Change History

02/28/09 17:24:09 changed by psmith

  • attachment gis_envelope_min_max.diff added.

Patch to envelope.py with unit test

03/07/09 12:27:43 changed by jbronn

  • status changed from new to assigned.
  • needs_better_patch changed.
  • needs_tests changed.
  • owner changed from nobody to jbronn.
  • needs_docs changed.
  • has_patch set to 1.
  • stage changed from Unreviewed to Accepted.

03/07/09 17:02:48 changed by jbronn

  • status changed from assigned to closed.
  • resolution set to fixed.

(In [9985]) Maintenance refactor of the GDAL (OGR) ctypes interface. Changes include:

* All C API method explictly called from their prototype module, no longer imported via *. * Applied DRY to C pointer management, classes that do so subclass from GDALBase. * OGRGeometry: Added from_bbox class method (patch from Christopher Schmidt) and kml property. * SpatialReference: Now initialize with SetFromUserInput (initialization is now more simple and flexible); removed duplicate methods. * Envelope: Added expand_to_include method and now allow same coordinates for lower left and upper right points. Thanks to Paul Smith for tickets and patches. * OGRGeomType: Now treat OGC 'Geometry' type as 'Unknown'.

Fixed #9855, #10368, #10380. Refs #9806.

03/09/09 18:39:25 changed by jbronn

  • milestone set to 1.1.

Add/Change #10380 (gdal Envelope should allow min_x == max_x and/or min_y == max_y)




Change Properties
Action