Mike,

any chance you can provide such sample file? From the logs it uses geoarrow.polygon encoding, which should be fine in theory. My hypothesis would be that in the Django context something registers the geoarrow.polygon extension to libarrow (pyarrow maybe). That said the Parquet driver is supposed to be robust to that, so there must be some subtelty. When rewriting the file, WKB encoding is selected, which works around any potential conflict related to a geoarrow.polygon extension being loaded

Even

Le 14/01/2026 à 01:03, Michael Smith via gdal-dev a écrit :
We use gdal with Django and build gdal from conda and install the parquet 
driver that way. But we have just found an odd issue when a parquet file is 
opened in our Django code vs in a Django shell.


In the shell we get


gf = gdal.OpenEx('/tmp/stac_48069_usgs-3dep_rasters.parquet')
GDAL: On-demand registering 
/home/gridusr/gridpixi/.pixi/envs/default/lib/gdalplugins/ogr_Parquet.so using 
RegisterOGRParquet.
GDAL: GDALOpen(/tmp/stac_48069_usgs-3dep_rasters.parquet, this=0x5626a2e395a0) 
succeeds as Parquet.
PARQUET: Compression (of first column): zstd
ARROW: Memory pool: bytes_allocated = 0
ARROW: Memory pool: max_memory = 0
GDAL: 
GDALClose(/vsis3/grid-dev-publiclidar/stac/testgrid/rasters/stac_48069_usgs-3dep_rasters.parquet,
 this=0x5626a2e38990)


And everything works fine


In the code we get
GDAL: On-demand registering 
/home/gridusr/gridpixi/.pixi/envs/default/lib/gdalplugins/ogr_Parquet.so using 
RegisterOGRParquet.
GDAL: GDALOpen(/tmp/stac_48069_usgs-3dep_rasters.parquet, this=0x7f43945696b0) 
succeeds as Parquet.
PARQUET: Dealing with field GEOMETRY of extension type geoarrow.polygon as list<rings: 
list<vertices: struct<x: double not null, y: double not null> not null> not null>
PARQUET: Compression (of first column): zstd
GDAL: GDALOpen(/tmp/stac_48069_usgs-3dep_rasters.parquet, this=0x7f43945d6760) 
succeeds as Parquet.
OGR: GetLayerCount() = 1


And this line seems to be the issue
PARQUET: Dealing with field GEOMETRY of extension type geoarrow.polygon as list<rings: 
list<vertices: struct<x: double not null, y: double not null> not null> not null>


In this case, the geometry is not recognized.
Calling gdal.VectorInfo(gf) I see


INFO: Open of `/tmp/stac_48069_usgs-3dep_rasters.parquet'
using driver `Parquet' successful.


Layer name: stac_48069_usgs-3dep_rasters
Geometry: None
Feature Count: 109314
Layer SRS WKT:
(unknown)
GEOMETRY: String(JSON) (0.0)


In the django python shell we get
In [7]: print (res)
INFO: Open of `/tmp/stac_48069_usgs-3dep_rasters.parquet'
using driver `Parquet' successful.


Layer name: stac_48069_usgs-3dep_rasters
Geometry: Polygon
Feature Count: 109314
Extent: (-179.001667, -15.001667) - (180.000000, 84.001667)
Layer SRS WKT:
(unknown)
Geometry Column = GEOMETRY


Any ideas?




--
http://www.spatialys.com
My software is free, but my time generally not.

_______________________________________________
gdal-dev mailing list
[email protected]
https://lists.osgeo.org/mailman/listinfo/gdal-dev

Reply via email to