I think this is possible with either using browser-native `gdal` or a custom Rust algorithm compiled to WASM. From the user's perspective the worst part is potentially having to download a few hundred MBs of raw elevation data.