#10380 closed (fixed)
gdal Envelope should allow min_x == max_x and/or min_y == max_y
| Reported by: | psmith | Owned by: | jbronn |
|---|---|---|---|
| Component: | GIS | Version: | 1.0 |
| Severity: | Keywords: | envelope extent gdal | |
| Cc: | Triage Stage: | Accepted | |
| Has patch: | yes | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
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 (1)
Change History (5)
by , 17 years ago
| Attachment: | gis_envelope_min_max.diff added |
|---|
comment:1 by , 17 years ago
| Has patch: | set |
|---|---|
| Owner: | changed from to |
| Status: | new → assigned |
| Triage Stage: | Unreviewed → Accepted |
comment:2 by , 17 years ago
| Resolution: | → fixed |
|---|---|
| Status: | assigned → closed |
(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: Addedfrom_bboxclass method (patch from Christopher Schmidt) andkmlproperty.SpatialReference: Now initialize withSetFromUserInput(initialization is now more simple and flexible); removed duplicate methods.Envelope: Addedexpand_to_includemethod 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'.
comment:3 by , 17 years ago
| milestone: | → 1.1 |
|---|
Patch to envelope.py with unit test