diff options
| author | David Smith <39445562+smithdc1@users.noreply.github.com> | 2023-12-23 16:26:22 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-12-23 17:26:22 +0100 |
| commit | 623597c786e89daae15a52dccfcdded7f808da9f (patch) | |
| tree | 332f4abb4eeac1d535e9f95b58602a9bbd8b8461 | |
| parent | 70456610694d24d07d76c64fd3bc40f664be51ea (diff) | |
Refs #35058 -- Added support for WKB > 2GB with GDAL 3.3+.
GDAL 3.3.0 added OGR_G_WkbSizeEx() and OGR_G_CreateFromWkbEx() to handle
WKB > 2GB. Prefer these new functions when available.
https://github.com/OSGeo/gdal/blob/master/NEWS.md#ogr-330---overview-of-changes
| -rw-r--r-- | django/contrib/gis/gdal/prototypes/geom.py | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/django/contrib/gis/gdal/prototypes/geom.py b/django/contrib/gis/gdal/prototypes/geom.py index 06c2a75f3a..d5fb1a5c99 100644 --- a/django/contrib/gis/gdal/prototypes/geom.py +++ b/django/contrib/gis/gdal/prototypes/geom.py @@ -1,7 +1,7 @@ from ctypes import POINTER, c_char_p, c_double, c_int, c_void_p from django.contrib.gis.gdal.envelope import OGREnvelope -from django.contrib.gis.gdal.libgdal import lgdal +from django.contrib.gis.gdal.libgdal import GDAL_VERSION, lgdal from django.contrib.gis.gdal.prototypes.errcheck import check_envelope from django.contrib.gis.gdal.prototypes.generation import ( const_string_output, @@ -52,9 +52,18 @@ gety = pnt_func(lgdal.OGR_G_GetY) getz = pnt_func(lgdal.OGR_G_GetZ) # Geometry creation routines. -from_wkb = geom_output( - lgdal.OGR_G_CreateFromWkb, [c_char_p, c_void_p, POINTER(c_void_p), c_int], offset=-2 -) +if GDAL_VERSION >= (3, 3): + from_wkb = geom_output( + lgdal.OGR_G_CreateFromWkbEx, + [c_char_p, c_void_p, POINTER(c_void_p), c_int], + offset=-2, + ) +else: + from_wkb = geom_output( + lgdal.OGR_G_CreateFromWkb, + [c_char_p, c_void_p, POINTER(c_void_p), c_int], + offset=-2, + ) from_wkt = geom_output( lgdal.OGR_G_CreateFromWkt, [POINTER(c_char_p), c_void_p, POINTER(c_void_p)], @@ -88,7 +97,10 @@ to_wkt = string_output( to_gml = string_output( lgdal.OGR_G_ExportToGML, [c_void_p], str_result=True, decoding="ascii" ) -get_wkbsize = int_output(lgdal.OGR_G_WkbSize, [c_void_p]) +if GDAL_VERSION >= (3, 3): + get_wkbsize = int_output(lgdal.OGR_G_WkbSizeEx, [c_void_p]) +else: + get_wkbsize = int_output(lgdal.OGR_G_WkbSize, [c_void_p]) # Geometry spatial-reference related routines. assign_srs = void_output( |
