Dropped support for GDAL < 1.5
GDAL 1.5 has been released in December 2007.
This commit is contained in:
parent
34340517fc
commit
cdcdd131da
|
@ -37,12 +37,12 @@
|
|||
try:
|
||||
from django.contrib.gis.gdal.driver import Driver
|
||||
from django.contrib.gis.gdal.datasource import DataSource
|
||||
from django.contrib.gis.gdal.libgdal import gdal_version, gdal_full_version, gdal_release_date, GEOJSON, GDAL_VERSION
|
||||
from django.contrib.gis.gdal.libgdal import gdal_version, gdal_full_version, gdal_release_date, GDAL_VERSION
|
||||
from django.contrib.gis.gdal.srs import SpatialReference, CoordTransform
|
||||
from django.contrib.gis.gdal.geometries import OGRGeometry
|
||||
HAS_GDAL = True
|
||||
except:
|
||||
HAS_GDAL, GEOJSON = False, False
|
||||
HAS_GDAL = False
|
||||
|
||||
try:
|
||||
from django.contrib.gis.gdal.envelope import Envelope
|
||||
|
|
|
@ -48,7 +48,7 @@ from django.contrib.gis.gdal.base import GDALBase
|
|||
from django.contrib.gis.gdal.envelope import Envelope, OGREnvelope
|
||||
from django.contrib.gis.gdal.error import OGRException, OGRIndexError, SRSException
|
||||
from django.contrib.gis.gdal.geomtype import OGRGeomType
|
||||
from django.contrib.gis.gdal.libgdal import GEOJSON, GDAL_VERSION
|
||||
from django.contrib.gis.gdal.libgdal import GDAL_VERSION
|
||||
from django.contrib.gis.gdal.srs import SpatialReference, CoordTransform
|
||||
|
||||
# Getting the ctypes prototype functions that interface w/the GDAL C library.
|
||||
|
@ -97,10 +97,7 @@ class OGRGeometry(GDALBase):
|
|||
else:
|
||||
g = capi.from_wkt(byref(c_char_p(wkt_m.group('wkt'))), None, byref(c_void_p()))
|
||||
elif json_m:
|
||||
if GEOJSON:
|
||||
g = capi.from_json(geom_input)
|
||||
else:
|
||||
raise NotImplementedError('GeoJSON input only supported on GDAL 1.5+.')
|
||||
else:
|
||||
# Seeing if the input is a valid short-hand string
|
||||
# (e.g., 'Point', 'POLYGON').
|
||||
|
@ -328,22 +325,15 @@ class OGRGeometry(GDALBase):
|
|||
@property
|
||||
def json(self):
|
||||
"""
|
||||
Returns the GeoJSON representation of this Geometry (requires
|
||||
GDAL 1.5+).
|
||||
Returns the GeoJSON representation of this Geometry.
|
||||
"""
|
||||
if GEOJSON:
|
||||
return capi.to_json(self.ptr)
|
||||
else:
|
||||
raise NotImplementedError('GeoJSON output only supported on GDAL 1.5+.')
|
||||
geojson = json
|
||||
|
||||
@property
|
||||
def kml(self):
|
||||
"Returns the KML representation of the Geometry."
|
||||
if GEOJSON:
|
||||
return capi.to_kml(self.ptr, None)
|
||||
else:
|
||||
raise NotImplementedError('KML output only supported on GDAL 1.5+.')
|
||||
|
||||
@property
|
||||
def wkb_size(self):
|
||||
|
|
|
@ -19,7 +19,7 @@ elif os.name == 'nt':
|
|||
elif os.name == 'posix':
|
||||
# *NIX library names.
|
||||
lib_names = ['gdal', 'GDAL', 'gdal1.9.0', 'gdal1.8.0', 'gdal1.7.0',
|
||||
'gdal1.6.0', 'gdal1.5.0', 'gdal1.4.0']
|
||||
'gdal1.6.0', 'gdal1.5.0']
|
||||
else:
|
||||
raise OGRException('Unsupported OS "%s"' % os.name)
|
||||
|
||||
|
@ -97,10 +97,3 @@ GDAL_MINOR_VERSION = int(_verinfo['minor'])
|
|||
GDAL_SUBMINOR_VERSION = _verinfo['subminor'] and int(_verinfo['subminor'])
|
||||
GDAL_VERSION = (GDAL_MAJOR_VERSION, GDAL_MINOR_VERSION, GDAL_SUBMINOR_VERSION)
|
||||
del _verinfo
|
||||
|
||||
# GeoJSON support is available only in GDAL 1.5+.
|
||||
if GDAL_VERSION >= (1, 5):
|
||||
GEOJSON = True
|
||||
else:
|
||||
GEOJSON = False
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
from ctypes import c_char_p, c_double, c_int, c_void_p, POINTER
|
||||
from django.contrib.gis.gdal.envelope import OGREnvelope
|
||||
from django.contrib.gis.gdal.libgdal import lgdal, GEOJSON
|
||||
from django.contrib.gis.gdal.libgdal import lgdal
|
||||
from django.contrib.gis.gdal.prototypes.errcheck import check_bool, check_envelope
|
||||
from django.contrib.gis.gdal.prototypes.generation import (const_string_output,
|
||||
double_output, geom_output, int_output, srs_output, string_output, void_output)
|
||||
|
@ -25,15 +25,10 @@ def topology_func(f):
|
|||
|
||||
### OGR_G ctypes function prototypes ###
|
||||
|
||||
# GeoJSON routines, if supported.
|
||||
if GEOJSON:
|
||||
from_json = geom_output(lgdal.OGR_G_CreateGeometryFromJson, [c_char_p])
|
||||
to_json = string_output(lgdal.OGR_G_ExportToJson, [c_void_p], str_result=True)
|
||||
to_kml = string_output(lgdal.OGR_G_ExportToKML, [c_void_p, c_char_p], str_result=True)
|
||||
else:
|
||||
from_json = False
|
||||
to_json = False
|
||||
to_kml = False
|
||||
# GeoJSON routines.
|
||||
from_json = geom_output(lgdal.OGR_G_CreateGeometryFromJson, [c_char_p])
|
||||
to_json = string_output(lgdal.OGR_G_ExportToJson, [c_void_p], str_result=True)
|
||||
to_kml = string_output(lgdal.OGR_G_ExportToKML, [c_void_p, c_char_p], str_result=True)
|
||||
|
||||
# GetX, GetY, GetZ all return doubles.
|
||||
getx = pnt_func(lgdal.OGR_G_GetX)
|
||||
|
|
|
@ -6,7 +6,6 @@ except ImportError:
|
|||
|
||||
from django.contrib.gis.gdal import (OGRGeometry, OGRGeomType, OGRException,
|
||||
OGRIndexError, SpatialReference, CoordTransform, GDAL_VERSION)
|
||||
from django.contrib.gis.gdal.prototypes.geom import GEOJSON
|
||||
from django.contrib.gis.geometry.test_data import TestDataMixin
|
||||
from django.utils import unittest
|
||||
|
||||
|
@ -108,7 +107,6 @@ class OGRGeomTest(unittest.TestCase, TestDataMixin):
|
|||
|
||||
def test01e_json(self):
|
||||
"Testing GeoJSON input/output."
|
||||
if not GEOJSON: return
|
||||
for g in self.geometries.json_geoms:
|
||||
geom = OGRGeometry(g.wkt)
|
||||
if not hasattr(g, 'not_equal'):
|
||||
|
@ -244,9 +242,6 @@ class OGRGeomTest(unittest.TestCase, TestDataMixin):
|
|||
self.fail('Should have raised an OGRException!')
|
||||
print("\nEND - expecting IllegalArgumentException; safe to ignore.\n")
|
||||
|
||||
# Closing the rings -- doesn't work on GDAL versions 1.4.1 and below:
|
||||
# http://trac.osgeo.org/gdal/ticket/1673
|
||||
if GDAL_VERSION <= (1, 4, 1): return
|
||||
poly.close_rings()
|
||||
self.assertEqual(10, poly.point_count) # Two closing points should've been added
|
||||
self.assertEqual(OGRGeometry('POINT(2.5 2.5)'), poly.centroid)
|
||||
|
|
|
@ -10,7 +10,6 @@ except ImportError:
|
|||
# A 'dummy' gdal module.
|
||||
class GDALInfo(object):
|
||||
HAS_GDAL = False
|
||||
GEOJSON = False
|
||||
gdal = GDALInfo()
|
||||
|
||||
# NumPy supported?
|
||||
|
|
|
@ -65,7 +65,7 @@ class GEOSGeometry(GEOSBase, ListMixin):
|
|||
elif hex_regex.match(geo_input):
|
||||
# Handling HEXEWKB input.
|
||||
g = wkb_r().read(geo_input)
|
||||
elif gdal.GEOJSON and json_regex.match(geo_input):
|
||||
elif gdal.HAS_GDAL and json_regex.match(geo_input):
|
||||
# Handling GeoJSON input.
|
||||
g = wkb_r().read(gdal.OGRGeometry(geo_input).wkb)
|
||||
else:
|
||||
|
@ -409,13 +409,12 @@ class GEOSGeometry(GEOSBase, ListMixin):
|
|||
@property
|
||||
def json(self):
|
||||
"""
|
||||
Returns GeoJSON representation of this Geometry if GDAL 1.5+
|
||||
is installed.
|
||||
Returns GeoJSON representation of this Geometry if GDAL is installed.
|
||||
"""
|
||||
if gdal.GEOJSON:
|
||||
if gdal.HAS_GDAL:
|
||||
return self.ogr.json
|
||||
else:
|
||||
raise GEOSException('GeoJSON output only supported on GDAL 1.5+.')
|
||||
raise GEOSException('GeoJSON output only supported when GDAL is installed.')
|
||||
geojson = json
|
||||
|
||||
@property
|
||||
|
|
|
@ -196,7 +196,7 @@ class GEOSTest(unittest.TestCase, TestDataMixin):
|
|||
self.assertEqual(srid, poly.shell.srid)
|
||||
self.assertEqual(srid, fromstr(poly.ewkt).srid) # Checking export
|
||||
|
||||
@unittest.skipUnless(gdal.HAS_GDAL and gdal.GEOJSON, "gdal >= 1.5 is required")
|
||||
@unittest.skipUnless(gdal.HAS_GDAL, "gdal is required")
|
||||
def test_json(self):
|
||||
"Testing GeoJSON input/output (via GDAL)."
|
||||
for g in self.geometries.json_geoms:
|
||||
|
|
|
@ -71,6 +71,7 @@ class GeometryFieldTest(unittest.TestCase):
|
|||
for wkt in ('POINT(5 23)', 'MULTIPOLYGON(((0 0, 0 1, 1 1, 1 0, 0 0)))', 'LINESTRING(0 0, 1 1)'):
|
||||
self.assertEqual(GEOSGeometry(wkt), fld.to_python(wkt))
|
||||
# but raises a ValidationError for any other string
|
||||
import pdb; pdb.set_trace()
|
||||
for wkt in ('POINT(5)', 'MULTI POLYGON(((0 0, 0 1, 1 1, 1 0, 0 0)))', 'BLAH(0 0, 1 1)'):
|
||||
self.assertRaises(forms.ValidationError, fld.to_python, wkt)
|
||||
|
||||
|
|
|
@ -447,7 +447,7 @@ systems and coordinate transformation::
|
|||
|
||||
This object is a wrapper for the `OGR Geometry`__ class.
|
||||
These objects are instantiated directly from the given ``geom_input``
|
||||
parameter, which may be a string containing WKT or HEX, a ``buffer``
|
||||
parameter, which may be a string containing WKT, HEX, GeoJSON, a ``buffer``
|
||||
containing WKB data, or an :class:`OGRGeomType` object. These objects
|
||||
are also returned from the :class:`Feature.geom` attribute, when
|
||||
reading vector data from :class:`Layer` (which is in turn a part of
|
||||
|
|
|
@ -81,7 +81,7 @@ Program Description Required
|
|||
======================== ==================================== ================================ ==========================
|
||||
:ref:`GEOS <ref-geos>` Geometry Engine Open Source Yes 3.3, 3.2, 3.1, 3.0
|
||||
`PROJ.4`_ Cartographic Projections library Yes (PostgreSQL and SQLite only) 4.7, 4.6, 4.5, 4.4
|
||||
:ref:`GDAL <ref-gdal>` Geospatial Data Abstraction Library No (but, required for SQLite) 1.8, 1.7, 1.6, 1.5, 1.4
|
||||
:ref:`GDAL <ref-gdal>` Geospatial Data Abstraction Library No (but, required for SQLite) 1.9, 1.8, 1.7, 1.6, 1.5
|
||||
:ref:`GeoIP <ref-geoip>` IP-based geolocation library No 1.4
|
||||
`PostGIS`__ Spatial extensions for PostgreSQL Yes (PostgreSQL only) 1.5, 1.4, 1.3
|
||||
`SpatiaLite`__ Spatial extensions for SQLite Yes (SQLite only) 3.0, 2.4, 2.3
|
||||
|
@ -270,9 +270,9 @@ supports :ref:`GDAL's vector data <ref-gdal>` capabilities [#]_.
|
|||
|
||||
First download the latest GDAL release version and untar the archive::
|
||||
|
||||
$ wget http://download.osgeo.org/gdal/gdal-1.8.1.tar.gz
|
||||
$ tar xzf gdal-1.8.1.tar.gz
|
||||
$ cd gdal-1.8.1
|
||||
$ wget http://download.osgeo.org/gdal/gdal-1.9.1.tar.gz
|
||||
$ tar xzf gdal-1.9.1.tar.gz
|
||||
$ cd gdal-1.9.1
|
||||
|
||||
Configure, make and install::
|
||||
|
||||
|
|
|
@ -177,6 +177,11 @@ autocommit behavior was never restored. This bug is now fixed in 1.5. While
|
|||
this is only a bug fix, it is worth checking your applications behavior if
|
||||
you are using PostgreSQL together with the autocommit option.
|
||||
|
||||
Miscellaneous
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
* GeoDjango dropped support for GDAL < 1.5
|
||||
|
||||
Features deprecated in 1.5
|
||||
==========================
|
||||
|
||||
|
|
Loading…
Reference in New Issue