geotiff_rs/
geotiff.rs

1use std::path::Path;
2
3use super::{TiffFile, TiffParserError};
4
5#[derive(Debug)]
6pub struct GeoTiff {
7    tiff: TiffFile,
8}
9
10impl GeoTiff {
11    pub fn from_file<P: AsRef<Path>>(name: P) -> Result<Self, TiffParserError> {
12        let tiff = TiffFile::from_file(name)?;
13
14        Ok(Self { tiff })
15    }
16
17    pub fn get_pixel(&self, lon: usize, lat: usize) -> i32 {
18        let ifd = &self.tiff.ifds[0];
19        let width = ifd.image_width().unwrap() as usize;
20        let length = ifd.image_length().unwrap() as usize;
21        ifd.data[(length - 1 - lat) * width + lon]
22    }
23}