1
0
mirror of https://github.com/django/django.git synced 2024-12-23 01:25:58 +00:00

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
This commit is contained in:
David Smith 2023-12-23 16:26:22 +00:00 committed by GitHub
parent 7045661069
commit 623597c786
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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,8 +52,17 @@ gety = pnt_func(lgdal.OGR_G_GetY)
getz = pnt_func(lgdal.OGR_G_GetZ)
# Geometry creation routines.
if GDAL_VERSION >= (3, 3):
from_wkb = geom_output(
lgdal.OGR_G_CreateFromWkb, [c_char_p, c_void_p, POINTER(c_void_p), c_int], offset=-2
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,
@ -88,6 +97,9 @@ to_wkt = string_output(
to_gml = string_output(
lgdal.OGR_G_ExportToGML, [c_void_p], str_result=True, decoding="ascii"
)
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.