summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Wiesmann <daniel.wiesmann@gmail.com>2014-12-01 16:32:40 +0100
committerClaude Paroz <claude@2xlibre.net>2014-12-02 19:56:35 +0100
commit4df3a3e0e9bfcd64a3e2eb85e0d4449d7b8f4f6e (patch)
tree65e4373ccaa4f0f2745b091ef6816c52136dd855
parentbba545345f46f09245799f7ae0a22177a84eba71 (diff)
Added GDAL prototypes for raster support
Refs #23804.
-rw-r--r--AUTHORS1
-rw-r--r--django/contrib/gis/gdal/prototypes/generation.py5
-rw-r--r--django/contrib/gis/gdal/prototypes/raster.py56
3 files changed, 60 insertions, 2 deletions
diff --git a/AUTHORS b/AUTHORS
index e9e2a597b3..6bd44281c7 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -168,6 +168,7 @@ answer newbie questions, and generally made Django that much better:
Daniel Poelzleithner <http://poelzi.org/>
Daniel Pyrathon <pirosb3@gmail.com>
Daniel Roseman <http://roseman.org.uk/>
+ Daniel Wiesmann <daniel.wiesmann@gmail.com>
Danilo Bargen
Dan Johnson <danj.py@gmail.com>
Dan Poirier <poirier@pobox.com>
diff --git a/django/contrib/gis/gdal/prototypes/generation.py b/django/contrib/gis/gdal/prototypes/generation.py
index 3d2e3046c8..69477ba044 100644
--- a/django/contrib/gis/gdal/prototypes/generation.py
+++ b/django/contrib/gis/gdal/prototypes/generation.py
@@ -130,9 +130,10 @@ def void_output(func, argtypes, errcheck=True):
return func
-def voidptr_output(func, argtypes):
+def voidptr_output(func, argtypes, errcheck=True):
"For functions that return c_void_p."
func.argtypes = argtypes
func.restype = c_void_p
- func.errcheck = check_pointer
+ if errcheck:
+ func.errcheck = check_pointer
return func
diff --git a/django/contrib/gis/gdal/prototypes/raster.py b/django/contrib/gis/gdal/prototypes/raster.py
new file mode 100644
index 0000000000..991e3c6ef0
--- /dev/null
+++ b/django/contrib/gis/gdal/prototypes/raster.py
@@ -0,0 +1,56 @@
+"""
+This module houses the ctypes function prototypes for GDAL DataSource (raster)
+related data structures.
+"""
+from ctypes import c_char_p, c_double, c_int, c_void_p, POINTER
+from django.contrib.gis.gdal.libgdal import lgdal
+from django.contrib.gis.gdal.prototypes.generation import (const_string_output,
+ double_output, int_output, void_output, voidptr_output)
+
+# For more detail about c function names and definitions see
+# http://gdal.org/gdal_8h.html
+# http://gdal.org/gdalwarper_8h.html
+
+### 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])
+
+### 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])
+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)])
+
+### 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])
+get_band_maximum = double_output(lgdal.GDALGetRasterMaximum, [c_void_p])
+
+### 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])