geoarrow_geojson/encoder/
wkb.rs1use arrow_array::OffsetSizeTrait;
2use arrow_json::Encoder;
3use geoarrow_array::GeoArrowArrayAccessor;
4use geoarrow_array::array::{GenericWkbArray, WkbViewArray};
5
6use crate::encoder::geometry::encode_geometry;
7
8pub struct GenericWkbEncoder<O: OffsetSizeTrait>(GenericWkbArray<O>);
10
11impl<O: OffsetSizeTrait> GenericWkbEncoder<O> {
12 pub fn new(array: GenericWkbArray<O>) -> Self {
13 Self(array)
14 }
15}
16
17impl<O: OffsetSizeTrait> Encoder for GenericWkbEncoder<O> {
18 fn encode(&mut self, idx: usize, out: &mut Vec<u8>) {
19 let geom = self.0.value(idx).unwrap();
20 encode_geometry(&geom, out);
21 }
22}
23
24pub struct WkbViewEncoder(WkbViewArray);
26
27impl WkbViewEncoder {
28 pub fn new(array: WkbViewArray) -> Self {
29 Self(array)
30 }
31}
32
33impl Encoder for WkbViewEncoder {
34 fn encode(&mut self, idx: usize, out: &mut Vec<u8>) {
35 let geom = self.0.value(idx).unwrap();
36 encode_geometry(&geom, out);
37 }
38}