Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/pka/georaster
Rust library for accessing geospatial raster images
https://github.com/pka/georaster
Last synced: 7 days ago
JSON representation
Rust library for accessing geospatial raster images
- Host: GitHub
- URL: https://github.com/pka/georaster
- Owner: pka
- License: apache-2.0
- Created: 2022-10-29T17:38:43.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-08-29T06:09:44.000Z (2 months ago)
- Last Synced: 2024-10-20T06:15:26.159Z (19 days ago)
- Language: Rust
- Size: 15.9 MB
- Stars: 24
- Watchers: 2
- Forks: 7
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE-APACHE
Awesome Lists containing this project
- awesome-georust - georaster - Rust library for accessing geospatial raster images (GeoTIFF). (Watchlist)
README
# georaster
[![crates.io version](https://img.shields.io/crates/v/georaster.svg)](https://crates.io/crates/georaster)
[![docs.rs docs](https://docs.rs/georaster/badge.svg)](https://docs.rs/georaster)Rust library for accessing geospatial raster images.
## Usage examples
Read pixel value from GeoTIFF:
```rust
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:
```rust
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.tifcargo 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
```