pub struct Netelement {
pub id: String,
pub geometry: LineString<f64>,
pub crs: String,
}Expand description
Represents a railway track segment (netelement)
A Netelement is a portion of railway track represented as a LineString geometry.
The geometry defines the track centerline, and GNSS positions are projected onto
the closest point on this centerline.
§Validation
- ID must be non-empty
- Geometry must have at least 2 points
- LineString coordinates must be valid
§Examples
use tp_core::Netelement;
use geo::LineString;
let geometry = LineString::from(vec![
(4.35, 50.85), // (lon, lat) coordinates
(4.36, 50.86),
]);
let netelement = Netelement::new(
"NE001".to_string(),
geometry,
"EPSG:4326".to_string(),
)?;
assert_eq!(netelement.id, "NE001");
assert_eq!(netelement.geometry.coords().count(), 2);Fields§
§id: StringUnique identifier for the netelement
geometry: LineString<f64>LineString geometry representing the track centerline
crs: StringCoordinate Reference System (e.g., “EPSG:4326” for WGS84)
Implementations§
Source§impl Netelement
impl Netelement
Sourcepub fn new(
id: String,
geometry: LineString<f64>,
crs: String,
) -> Result<Self, ProjectionError>
pub fn new( id: String, geometry: LineString<f64>, crs: String, ) -> Result<Self, ProjectionError>
Create a new netelement with validation
Sourcepub fn validate_id(&self) -> Result<(), ProjectionError>
pub fn validate_id(&self) -> Result<(), ProjectionError>
Validate netelement ID is non-empty
Sourcepub fn validate_geometry(&self) -> Result<(), ProjectionError>
pub fn validate_geometry(&self) -> Result<(), ProjectionError>
Validate geometry has at least 2 points
Trait Implementations§
Source§impl Clone for Netelement
impl Clone for Netelement
Source§fn clone(&self) -> Netelement
fn clone(&self) -> Netelement
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for Netelement
impl Debug for Netelement
Source§impl<'de> Deserialize<'de> for Netelement
impl<'de> Deserialize<'de> for Netelement
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations§
impl Freeze for Netelement
impl RefUnwindSafe for Netelement
impl Send for Netelement
impl Sync for Netelement
impl Unpin for Netelement
impl UnwindSafe for Netelement
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more