summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Graham <timograham@gmail.com>2015-04-29 08:57:50 -0400
committerTim Graham <timograham@gmail.com>2015-05-01 15:47:34 -0400
commit3c4fca271bd6850d252c4b637871e597484804d1 (patch)
treeb5ec777fb4374f1efc7a7bc9645b9f6637e5a32a
parent2c3ce26beb254101f12fa69cc341ba9aeae62029 (diff)
Fixed #24724 -- Fixed GIS initialization crash on Windows.
-rw-r--r--django/contrib/gis/gdal/prototypes/raster.py78
-rw-r--r--docs/releases/1.8.1.txt3
2 files changed, 43 insertions, 38 deletions
diff --git a/django/contrib/gis/gdal/prototypes/raster.py b/django/contrib/gis/gdal/prototypes/raster.py
index a79e2a9db3..8ede45f532 100644
--- a/django/contrib/gis/gdal/prototypes/raster.py
+++ b/django/contrib/gis/gdal/prototypes/raster.py
@@ -5,7 +5,7 @@ related data structures.
from ctypes import POINTER, c_char_p, c_double, c_int, c_void_p
from functools import partial
-from django.contrib.gis.gdal.libgdal import lgdal
+from django.contrib.gis.gdal.libgdal import std_call
from django.contrib.gis.gdal.prototypes.generation import (
const_string_output, double_output, int_output, void_output,
voidptr_output,
@@ -21,46 +21,48 @@ const_string_output = partial(const_string_output, cpl=True)
double_output = partial(double_output, cpl=True)
# Raster Driver Routines
-register_all = void_output(lgdal.GDALAllRegister, [])
-get_driver = voidptr_output(lgdal.GDALGetDriver, [c_int])
-get_driver_by_name = voidptr_output(lgdal.GDALGetDriverByName, [c_char_p], errcheck=False)
-get_driver_count = int_output(lgdal.GDALGetDriverCount, [])
-get_driver_description = const_string_output(lgdal.GDALGetDescription, [c_void_p])
+register_all = void_output(std_call('GDALAllRegister'), [])
+get_driver = voidptr_output(std_call('GDALGetDriver'), [c_int])
+get_driver_by_name = voidptr_output(std_call('GDALGetDriverByName'), [c_char_p], errcheck=False)
+get_driver_count = int_output(std_call('GDALGetDriverCount'), [])
+get_driver_description = const_string_output(std_call('GDALGetDescription'), [c_void_p])
# Raster Data Source Routines
-create_ds = voidptr_output(lgdal.GDALCreate, [c_void_p, c_char_p, c_int, c_int, c_int, c_int])
-open_ds = voidptr_output(lgdal.GDALOpen, [c_char_p, c_int])
-close_ds = void_output(lgdal.GDALClose, [c_void_p])
-flush_ds = int_output(lgdal.GDALFlushCache, [c_void_p])
-copy_ds = voidptr_output(lgdal.GDALCreateCopy, [c_void_p, c_char_p, c_void_p, c_int,
- POINTER(c_char_p), c_void_p, c_void_p])
-add_band_ds = void_output(lgdal.GDALAddBand, [c_void_p, c_int])
-get_ds_description = const_string_output(lgdal.GDALGetDescription, [])
-get_ds_driver = voidptr_output(lgdal.GDALGetDatasetDriver, [c_void_p])
-get_ds_xsize = int_output(lgdal.GDALGetRasterXSize, [c_void_p])
-get_ds_ysize = int_output(lgdal.GDALGetRasterYSize, [c_void_p])
-get_ds_raster_count = int_output(lgdal.GDALGetRasterCount, [c_void_p])
-get_ds_raster_band = voidptr_output(lgdal.GDALGetRasterBand, [c_void_p, c_int])
-get_ds_projection_ref = const_string_output(lgdal.GDALGetProjectionRef, [c_void_p])
-set_ds_projection_ref = void_output(lgdal.GDALSetProjection, [c_void_p, c_char_p])
-get_ds_geotransform = void_output(lgdal.GDALGetGeoTransform, [c_void_p, POINTER(c_double * 6)], errcheck=False)
-set_ds_geotransform = void_output(lgdal.GDALSetGeoTransform, [c_void_p, POINTER(c_double * 6)])
+create_ds = voidptr_output(std_call('GDALCreate'), [c_void_p, c_char_p, c_int, c_int, c_int, c_int, c_void_p])
+open_ds = voidptr_output(std_call('GDALOpen'), [c_char_p, c_int])
+close_ds = void_output(std_call('GDALClose'), [c_void_p])
+flush_ds = int_output(std_call('GDALFlushCache'), [c_void_p])
+copy_ds = voidptr_output(std_call('GDALCreateCopy'),
+ [c_void_p, c_char_p, c_void_p, c_int, POINTER(c_char_p), c_void_p, c_void_p]
+)
+add_band_ds = void_output(std_call('GDALAddBand'), [c_void_p, c_int])
+get_ds_description = const_string_output(std_call('GDALGetDescription'), [c_void_p])
+get_ds_driver = voidptr_output(std_call('GDALGetDatasetDriver'), [c_void_p])
+get_ds_xsize = int_output(std_call('GDALGetRasterXSize'), [c_void_p])
+get_ds_ysize = int_output(std_call('GDALGetRasterYSize'), [c_void_p])
+get_ds_raster_count = int_output(std_call('GDALGetRasterCount'), [c_void_p])
+get_ds_raster_band = voidptr_output(std_call('GDALGetRasterBand'), [c_void_p, c_int])
+get_ds_projection_ref = const_string_output(std_call('GDALGetProjectionRef'), [c_void_p])
+set_ds_projection_ref = void_output(std_call('GDALSetProjection'), [c_void_p, c_char_p])
+get_ds_geotransform = void_output(std_call('GDALGetGeoTransform'), [c_void_p, POINTER(c_double * 6)], errcheck=False)
+set_ds_geotransform = void_output(std_call('GDALSetGeoTransform'), [c_void_p, POINTER(c_double * 6)])
# Raster Band Routines
-band_io = void_output(lgdal.GDALRasterIO, [c_void_p, c_int, c_int, c_int, c_int, c_int,
- c_void_p, c_int, c_int, c_int, c_int, c_int])
-get_band_xsize = int_output(lgdal.GDALGetRasterBandXSize, [c_void_p])
-get_band_ysize = int_output(lgdal.GDALGetRasterBandYSize, [c_void_p])
-get_band_index = int_output(lgdal.GDALGetBandNumber, [c_void_p])
-get_band_description = const_string_output(lgdal.GDALGetDescription, [c_void_p])
-get_band_ds = voidptr_output(lgdal.GDALGetBandDataset, [c_void_p])
-get_band_datatype = int_output(lgdal.GDALGetRasterDataType, [c_void_p])
-get_band_nodata_value = double_output(lgdal.GDALGetRasterNoDataValue, [c_void_p, POINTER(c_int)])
-set_band_nodata_value = void_output(lgdal.GDALSetRasterNoDataValue, [c_void_p, c_double])
-get_band_minimum = double_output(lgdal.GDALGetRasterMinimum, [c_void_p, POINTER(c_int)])
-get_band_maximum = double_output(lgdal.GDALGetRasterMaximum, [c_void_p, POINTER(c_int)])
+band_io = void_output(std_call('GDALRasterIO'),
+ [c_void_p, c_int, c_int, c_int, c_int, c_int, c_void_p, c_int, c_int, c_int, c_int, c_int]
+)
+get_band_xsize = int_output(std_call('GDALGetRasterBandXSize'), [c_void_p])
+get_band_ysize = int_output(std_call('GDALGetRasterBandYSize'), [c_void_p])
+get_band_index = int_output(std_call('GDALGetBandNumber'), [c_void_p])
+get_band_description = const_string_output(std_call('GDALGetDescription'), [c_void_p])
+get_band_ds = voidptr_output(std_call('GDALGetBandDataset'), [c_void_p])
+get_band_datatype = int_output(std_call('GDALGetRasterDataType'), [c_void_p])
+get_band_nodata_value = double_output(std_call('GDALGetRasterNoDataValue'), [c_void_p, POINTER(c_int)])
+set_band_nodata_value = void_output(std_call('GDALSetRasterNoDataValue'), [c_void_p, c_double])
+get_band_minimum = double_output(std_call('GDALGetRasterMinimum'), [c_void_p, POINTER(c_int)])
+get_band_maximum = double_output(std_call('GDALGetRasterMaximum'), [c_void_p, POINTER(c_int)])
# Reprojection routine
-reproject_image = void_output(lgdal.GDALReprojectImage, [c_void_p, c_char_p, c_void_p, c_char_p,
- c_int, c_double, c_double,
- c_void_p, c_void_p, c_void_p])
+reproject_image = void_output(std_call('GDALReprojectImage'),
+ [c_void_p, c_char_p, c_void_p, c_char_p, c_int, c_double, c_double, c_void_p, c_void_p, c_void_p]
+)
diff --git a/docs/releases/1.8.1.txt b/docs/releases/1.8.1.txt
index 59e19a4704..ef1e0bb636 100644
--- a/docs/releases/1.8.1.txt
+++ b/docs/releases/1.8.1.txt
@@ -84,6 +84,9 @@ Bugfixes
``ModelAdmin.filter_horizontal`` and ``filter_vertical`` options
(:ticket:`24676`).
+* Fixed `AttributeError: function 'GDALAllRegister' not found` error when
+ initializing ``contrib.gis`` on Windows.
+
Optimizations
=============