Skip to main content

vortex_geo/
lib.rs

1// SPDX-License-Identifier: Apache-2.0
2// SPDX-FileCopyrightText: Copyright the Vortex contributors
3
4use std::sync::Arc;
5
6use vortex_array::arrow::ArrowSessionExt;
7use vortex_array::dtype::session::DTypeSessionExt;
8use vortex_array::scalar_fn::session::ScalarFnSessionExt;
9use vortex_session::VortexSession;
10
11use crate::extension::Point;
12use crate::extension::Polygon;
13use crate::extension::WellKnownBinary;
14use crate::scalar_fn::distance::GeoDistance;
15
16pub mod extension;
17pub mod scalar_fn;
18#[cfg(test)]
19mod test_harness;
20#[cfg(test)]
21mod tests;
22
23/// Set up a session with support for geospatial extension types, encodings and layouts.
24pub fn initialize(session: &VortexSession) {
25    // Register the geospatial extension types.
26    session.dtypes().register(WellKnownBinary);
27    session.arrow().register_exporter(Arc::new(WellKnownBinary));
28    session.arrow().register_importer(Arc::new(WellKnownBinary));
29    session.dtypes().register(Point);
30    session.arrow().register_exporter(Arc::new(Point));
31    session.arrow().register_importer(Arc::new(Point));
32    session.dtypes().register(Polygon);
33    session.arrow().register_exporter(Arc::new(Polygon));
34    session.arrow().register_importer(Arc::new(Polygon));
35
36    // Register the geometry scalar functions.
37    session.scalar_fns().register(GeoDistance);
38}