Come applicare una funzione spaziale a un vettore importato
Come applicare una funzione spaziale a un vettore importato in duckDB.
A cura di
Totò Fiandaca
| issue
#256
| guida/e
Totò Fiandaca
Andrea Borruso
Caso d’uso
Interrogare uno shapefile collegato a duckdb ed estrarre info anche tramite funzioni spaziali come ST_Centroid().
soluzione
In duckDB la geometry di un vettore è convertita automaticamente nel formato WKB e il nome della colonna geometrica sarà wkb_geometry
, pertanto, per richiamare la geometry in una funzione spaziale occorre necessariamente convertirla usando la funzione ST_GeomFromWKB()
, quindi la query deve essere così:
SELECT ST_Centroid(ST_GeomFromWKB(a.wkb_geometry)) AS centroid
FROM ST_Read("shapefile.shp") a;
Nota bene: duckDB non supporta tutti le tipologie di geometrie, ma solo quelle 2D, per esempio non supporta (attualmente) tutti le tipologie con Z o M.
dati
Riferimenti utili
Ultima modifica 02/09/2023: add prima ricetta su duckdb (7bfdee3)