Edges

Enum Edges 

Source
pub enum Edges {
    Andoyer,
    Karney,
    Spherical,
    Thomas,
    Vincenty,
}
Expand description

The edge interpretation between explicitly defined vertices.

This does not affect format conversions (e.g., parsing geoarrow.wkb as geoarrow.linestring), but does affect distance, intersection, bounding, overlay, length, and area calculations. The edges key must be omitted to indicate planar/linear edges or be one of:

If the edges key is omitted, edges will be interpreted following the language of Simple features access:

simple feature feature with all geometric attributes described piecewise by straight line or planar interpolation between sets of points (Section 4.19).

If an implementation only has support for a single edge interpretation (e.g., a library with only planar edge support), an array with a different edge type may be imported without losing information if the geometries in the array do not contain edges (e.g., geoarrow.point, geoarrow.multipoint, a geoarrow.wkb/geoarrow.wkt that only contains points and multipoints, or any array that only contains empty geometries). For arrays that contain edges, the error introduced by ignoring the original edge interpretation is similar to the error introduced by applying a coordinate transformation to vertices (which is usually small but may be large or create invalid geometries, particularly if vertices are not closely spaced). Ignoring the original edge interpretation will silently introduce invalid and/or misinterpreted geometries for any edge that crosses the antimeridian (i.e., longitude 180/-180) when translating from non-planar to planar edges.

Implementations may implicitly import arrays with an unsupported edge type if the arrays do not contain edges. Implementations may otherwise import arrays with an unsupported edge type with an explicit opt-in from a user or if accompanied by a prominent warning.

Variants§

§

Andoyer

Edges in the longitude-latitude dimensions follow a path calculated by the fomula in Thomas, Paul D. Mathematical models for navigation systems. US Naval Oceanographic Office, 1965 using the ellipsoid specified by the "crs".

§

Karney

Edges in the longitude-latitude dimensions follow a path calculated by the fomula in Karney, Charles FF. “Algorithms for geodesics.” Journal of Geodesy 87 (2013): 43-55 and GeographicLib using the ellipsoid specified by the "crs". GeographicLib available via modern versions of PROJ.

§

Spherical

Edges in the longitude-latitude dimensions follow the shortest distance between vertices approximated as the shortest distance between the vertices on a perfect sphere. This edge interpretation is used by BigQuery Geography, and Snowflake Geography.

A common library for interpreting edges in this way is Google’s s2geometry; a common formula for calculating distances along this trajectory is the Haversine Formula.

§

Thomas

Edges in the longitude-latitude dimensions follow a path calculated by the fomula in Thomas, Paul D. Spheroidal geodesics, reference systems, & local geometry. US Naval Oceanographic Office, 1970 using the ellipsoid specified by the "crs".

§

Vincenty

Edges in the longitude-latitude dimensions follow a path calculated using Vincenty’s formula and the ellipsoid specified by the "crs".

Trait Implementations§

Source§

impl Clone for Edges

Source§

fn clone(&self) -> Edges

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Edges

Source§

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

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

impl<'de> Deserialize<'de> for Edges

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Hash for Edges

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for Edges

Source§

fn eq(&self, other: &Edges) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Serialize for Edges

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl Copy for Edges

Source§

impl Eq for Edges

Source§

impl StructuralPartialEq for Edges

Auto Trait Implementations§

§

impl Freeze for Edges

§

impl RefUnwindSafe for Edges

§

impl Send for Edges

§

impl Sync for Edges

§

impl Unpin for Edges

§

impl UnwindSafe for Edges

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,