Skip to content

Commit

Permalink
Refs #35058 -- Added support for WKB > 2GB with GDAL 3.3+.
Browse files Browse the repository at this point in the history
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
  • Loading branch information
smithdc1 authored Dec 23, 2023
1 parent 7045661 commit 623597c
Showing 1 changed file with 17 additions and 5 deletions.
22 changes: 17 additions & 5 deletions django/contrib/gis/gdal/prototypes/geom.py
Original file line number Diff line number Diff line change
@@ -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,
Expand Down Expand Up @@ -52,9 +52,18 @@ def topology_func(f):
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)],
Expand Down Expand Up @@ -88,7 +97,10 @@ def topology_func(f):
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(
Expand Down

0 comments on commit 623597c

Please sign in to comment.