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}