pub struct GeoTransform {
pub origin_x: f64,
pub pixel_width: f64,
pub skew_x: f64,
pub origin_y: f64,
pub skew_y: f64,
pub pixel_height: f64,
}Expand description
An affine geo-transform mapping pixel (col, row) to map (x, y).
Follows the GDAL convention:
x = origin_x + col * pixel_width + row * skew_x
y = origin_y + col * skew_y + row * pixel_heightFor north-up images, skew_x and skew_y are 0 and pixel_height is negative.
Fields§
§origin_x: f64§pixel_width: f64§skew_x: f64§origin_y: f64§skew_y: f64§pixel_height: f64Implementations§
Source§impl GeoTransform
impl GeoTransform
Sourcepub fn from_tiepoint_and_scale(
tiepoint: &[f64; 6],
pixel_scale: &[f64; 3],
) -> GeoTransform
pub fn from_tiepoint_and_scale( tiepoint: &[f64; 6], pixel_scale: &[f64; 3], ) -> GeoTransform
Build from ModelTiepoint (tag 33922) and ModelPixelScale (tag 33550).
Sourcepub fn from_tiepoint_and_scale_with_raster_type(
tiepoint: &[f64; 6],
pixel_scale: &[f64; 3],
raster_type: RasterType,
) -> GeoTransform
pub fn from_tiepoint_and_scale_with_raster_type( tiepoint: &[f64; 6], pixel_scale: &[f64; 3], raster_type: RasterType, ) -> GeoTransform
Build from ModelTiepoint and ModelPixelScale using the GeoTIFF raster type.
The returned transform is normalized to a corner-based affine transform so bounds and pixel-space math stay consistent for both PixelIsArea and PixelIsPoint rasters.
Sourcepub fn from_transformation_matrix(matrix: &[f64; 16]) -> GeoTransform
pub fn from_transformation_matrix(matrix: &[f64; 16]) -> GeoTransform
Build from a 4x4 ModelTransformation matrix (tag 34264), row-major.
Sourcepub fn from_origin_and_pixel_size(
origin_x: f64,
origin_y: f64,
pixel_width: f64,
pixel_height: f64,
) -> GeoTransform
pub fn from_origin_and_pixel_size( origin_x: f64, origin_y: f64, pixel_width: f64, pixel_height: f64, ) -> GeoTransform
Create from origin + pixel size (north-up, no skew).
Sourcepub fn pixel_to_geo(&self, col: f64, row: f64) -> (f64, f64)
pub fn pixel_to_geo(&self, col: f64, row: f64) -> (f64, f64)
Convert pixel coordinates (col, row) to map coordinates (x, y).
Sourcepub fn geo_to_pixel(&self, x: f64, y: f64) -> Option<(f64, f64)>
pub fn geo_to_pixel(&self, x: f64, y: f64) -> Option<(f64, f64)>
Convert map coordinates (x, y) to pixel coordinates (col, row).
Returns None if the transform is degenerate (zero determinant).
Sourcepub fn bounds(&self, width: u32, height: u32) -> [f64; 4]
pub fn bounds(&self, width: u32, height: u32) -> [f64; 4]
Returns the geographic bounds (min_x, min_y, max_x, max_y) for an image of the given width and height.
Sourcepub fn to_tiepoint_and_scale(&self) -> Option<([f64; 6], [f64; 3])>
pub fn to_tiepoint_and_scale(&self) -> Option<([f64; 6], [f64; 3])>
Serialize to a tiepoint + pixel_scale pair (for north-up, no-skew images).
Returns None if there is skew (use to_transformation_matrix instead).
Sourcepub fn to_transformation_matrix(&self) -> [f64; 16]
pub fn to_transformation_matrix(&self) -> [f64; 16]
Serialize to a 4x4 transformation matrix (row-major).
Trait Implementations§
Source§impl Clone for GeoTransform
impl Clone for GeoTransform
Source§fn clone(&self) -> GeoTransform
fn clone(&self) -> GeoTransform
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for GeoTransform
impl Debug for GeoTransform
impl Copy for GeoTransform
Auto Trait Implementations§
impl Freeze for GeoTransform
impl RefUnwindSafe for GeoTransform
impl Send for GeoTransform
impl Sync for GeoTransform
impl Unpin for GeoTransform
impl UnsafeUnpin for GeoTransform
impl UnwindSafe for GeoTransform
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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>
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>
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