#tiff #image #geospatial #raster #accessing #pixel

georaster

Rust library for accessing geospatial raster images

2 unstable releases

0.2.0 Jan 11, 2025
0.1.0 Feb 9, 2024

#127 in Geospatial

Download history 12/week @ 2024-09-29 16/week @ 2024-10-13 8/week @ 2024-10-20 4/week @ 2024-10-27 10/week @ 2024-11-03 1/week @ 2024-11-17 7/week @ 2024-12-08 8/week @ 2024-12-15 73/week @ 2025-01-05 122/week @ 2025-01-12

195 downloads per month

MIT/Apache

36KB
514 lines

georaster

crates.io version docs.rs docs

Rust library for accessing geospatial raster images.

Usage examples

Read pixel value from GeoTIFF:

let img_file = BufReader::new(File::open("N265E425.tif").unwrap());
let mut tiff = GeoTiffReader::open(img_file).unwrap();
match tiff.read_pixel(x, y) {
    RasterValue::U16(v) => println!("Height: {v}"),
    _ => println!("Unexpected pixel type"),
};

Extract part of GeoTIFF into a PNG:

let img_file = BufReader::new(File::open("N265E425.tif").unwrap());
let mut tiff = GeoTiffReader::open(img_file).unwrap();
let (x0, y0, w, h) = (2500, 3000, 100, 100);
let mut img = ImageBuffer::new(w, h);
for (x, y, pixel) in tiff.pixels(x0, y0, w, h) {
    if let RasterValue::U16(v) = pixel {
        img.put_pixel(x - x0, y - y0, image::Luma([v]));
    }
}
img.save("dtm.png").unwrap();

Running the examples

Download test data:

cd data
make
cargo run --example info data/tiff/N265E425.tif

cargo run --example pixel data/tiff/N265E425.tif 2550 3050

cargo run --example crop data/tiff/N265E425.tif 100x100+2500+3000 dtm.png

cargo run --example img2ascii data/tiff/sat.tif

cargo run --example http_dtm

Dependencies

~2.5–4.5MB
~43K SLoC