[WIP] feat: use rust-warp instead of pyproj + numpy for reprojection#58
[WIP] feat: use rust-warp instead of pyproj + numpy for reprojection#58hrodmn wants to merge 7 commits into
Conversation
Benchmark ComparisonEnd-to-end benchmarks
New benchmarks in PR
|
|
I wonder if we could have some internal protocols that we use for "generic" warping, so that we don't over-index on the rust-warp API specifically? |
|
Very cool to see this btw, had no expectation this would go anywhere. Assume you've got some correctness checks in here @hrodmn? Lmk if you need anything added/removed, it was very much tied to my usecase of odc-geobox based reprojects. |
Yes! I added some tests to compare the lazycogs reprojection to rasterio in test_rasterio_parity.py, those tests got updated to compare against the rust-warp approach in this PR and things are looking good.
Yeah this is just what I could whip up yesterday to test out the idea of swapping out our python warping approach with a rust warping approach. My take is that the rust approach is a lot faster and more efficient than the python approach. I did some more integration testing and performance improved quite a bit for some cases so it is definitely worth pursuing further. The benchmark results above ^ reflect the potential improvement (in a non-network-bound scenario). We should not merge this as-is. I would want to wait to finalize the structure until there is an actual release of rust-warp (or some other package)! I'll probably close this PR for now while we come up with a plan for rust-based warping in the broader ecosystem - I know there are several other projects where this is of interest so we will want to spend some time considering the right API design. warp-rust seems like a great start though! |
I just wanted to test this out to see how much faster the rust-based resampling approach would be for lazycogs.
cc @jakenotjay @sharkinsspatial