Struct GeometryBuilder

Source
pub struct GeometryBuilder { /* private fields */ }
Expand description

The GeoArrow equivalent to a Vec<Option<Geometry>>: a mutable collection of Geometries.

Each Geometry can have a different dimension. All geometries must have the same coordinate type.

This currently has the caveat that these geometries must be a primitive geometry type. This does not currently support nested GeometryCollection objects.

Converting an GeometryBuilder into a GeometryArray is O(1).

§Invariants

  • All arrays must have the same coordinate layout (interleaved or separated)

Implementations§

Source§

impl<'a> GeometryBuilder

Source

pub fn new(typ: GeometryType) -> Self

Creates a new empty GeometryBuilder.

Source

pub fn with_capacity(typ: GeometryType, capacity: GeometryCapacity) -> Self

Creates a new GeometryBuilder with given capacity and no validity.

Source

pub fn with_prefer_multi(self, prefer_multi: bool) -> Self

Change whether to prefer multi or single arrays for new single-part geometries.

If true, a new Point will be added to the MultiPointBuilder child array, a new LineString will be added to the MultiLineStringBuilder child array, and a new Polygon will be added to the MultiPolygonBuilder child array.

This can be desired when the user wants to downcast the array to a single geometry array later, as casting to a, say, MultiPointArray from a GeometryArray could be done zero-copy.

Note that only geometries added after this method is called will be affected.

Source

pub fn reserve(&mut self, capacity: GeometryCapacity)

Reserves capacity for at least additional more geometries.

The collection may reserve more space to speculatively avoid frequent reallocations. After calling reserve, capacity will be greater than or equal to self.len() + additional. Does nothing if capacity is already sufficient.

Source

pub fn reserve_exact(&mut self, capacity: GeometryCapacity)

Reserves the minimum capacity for at least additional more Geometries.

Unlike reserve, this will not deliberately over-allocate to speculatively avoid frequent allocations. After calling reserve_exact, capacity will be greater than or equal to self.len() + additional. Does nothing if the capacity is already sufficient.

Note that the allocator may give the collection more space than it requests. Therefore, capacity can not be relied upon to be precisely minimal. Prefer reserve if future insertions are expected.

Source

pub fn finish(self) -> GeometryArray

Consume the builder and convert to an immutable GeometryArray

Source

pub fn push_geometry( &mut self, value: Option<&'a impl GeometryTrait<T = f64>>, ) -> GeoArrowResult<()>

Add a new geometry to this builder

Source

pub fn push_null(&mut self)

Push a null to this builder.

Adding null values to a union array is tricky, because you don’t want to add a null to a child that would otherwise be totally empty. Ideally, as few children as possible exist and are non-empty.

We handle that by pushing nulls to the first non-empty child we find. If no underlying arrays are non-empty, we add to an internal counter instead. Once the first non-empty geometry is pushed, then we flush all the “deferred nulls” to that child.

Source

pub fn extend_from_iter( &mut self, geoms: impl Iterator<Item = Option<&'a (impl GeometryTrait<T = f64> + 'a)>>, )

Extend this builder with the given geometries

Source

pub fn from_nullable_geometries( geoms: &[Option<impl GeometryTrait<T = f64>>], typ: GeometryType, ) -> GeoArrowResult<Self>

Create this builder from a slice of nullable Geometries.

Trait Implementations§

Source§

impl Debug for GeometryBuilder

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<O: OffsetSizeTrait> TryFrom<(GenericWkbArray<O>, GeometryType)> for GeometryBuilder

Source§

type Error = GeoArrowError

The type returned in the event of a conversion error.
Source§

fn try_from( (value, typ): (GenericWkbArray<O>, GeometryType), ) -> GeoArrowResult<Self>

Performs the conversion.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> Allocation for T
where T: RefUnwindSafe + Send + Sync,