geoarrow_array/test/
multipoint.rs

1use geo_types::{MultiPoint, point};
2use geoarrow_schema::{CoordType, Dimension, MultiPointType};
3use geoarrow_test::raw;
4
5use crate::array::MultiPointArray;
6use crate::builder::MultiPointBuilder;
7
8pub(crate) fn mp0() -> MultiPoint {
9    MultiPoint::new(vec![
10        point!(
11            x: 0., y: 1.
12        ),
13        point!(
14            x: 1., y: 2.
15        ),
16    ])
17}
18
19pub(crate) fn mp1() -> MultiPoint {
20    MultiPoint::new(vec![
21        point!(
22            x: 3., y: 4.
23        ),
24        point!(
25            x: 5., y: 6.
26        ),
27    ])
28}
29
30pub(crate) fn mp_array(coord_type: CoordType) -> MultiPointArray {
31    let geoms = vec![Some(mp0()), None, Some(mp1()), None];
32    let typ = MultiPointType::new(Dimension::XY, Default::default()).with_coord_type(coord_type);
33    MultiPointBuilder::from_nullable_multi_points(&geoms, typ).finish()
34}
35
36pub fn array(coord_type: CoordType, dim: Dimension) -> MultiPointArray {
37    let typ = MultiPointType::new(dim, Default::default()).with_coord_type(coord_type);
38    let geoms = match dim {
39        Dimension::XY => raw::multipoint::xy::geoms(),
40        Dimension::XYZ => raw::multipoint::xyz::geoms(),
41        Dimension::XYM => raw::multipoint::xym::geoms(),
42        Dimension::XYZM => raw::multipoint::xyzm::geoms(),
43    };
44    MultiPointBuilder::from_nullable_multi_points(&geoms, typ).finish()
45}