kylebarron
Another seemingly extremely similar project released in the last few days: https://github.com/raulcd/datanomy
How to Build High-Speed Rail on the Northeast Corridor
Making performant Python bindings to compiled code
I wrote a small vscode extension that builds upon this to automatically infer code blocks via indentation, so that you don't have to select them manually: [0]
Obstore: Efficient streaming object store operations in Python
Literate Flatbush: Understanding a fast, elegant RTree implementation
[0]: https://developmentseed.org/lonboard/latest/
[1]: https://developmentseed.org/lonboard/latest/how-it-works/
Arrow is especially powerful across the WASM <--> JS boundary! In fact, I wrote a library to interpret Arrow from Wasm memory into JS without any copies [0]. (Motivating blog post [1])
[0]: https://github.com/kylebarron/arrow-js-ffi
[1]: https://observablehq.com/@kylebarron/zero-copy-apache-arrow-...
Parquet-WASM: Rust-based WebAssembly bindings to read and write Parquet data
Try using `GeoDataFrame.to_parquet` and `GeoPandas.read_parquet`
You need to use pyogrio [1], its vectorized counterpart, instead. Make sure you use `engine="pyogrio"` when calling `to_file` [2]. Fiona does a loop in Python, while pyogrio is exclusively compiled. So pyogrio is usually about 10-15x faster than fiona. Soon, in pyogrio version 0.8, it will be another ~2-4x faster than pyogrio is now [3].
[0]: https://github.com/Toblerity/Fiona
[1]: https://github.com/geopandas/pyogrio
[2]: https://geopandas.org/en/stable/docs/reference/api/geopandas...
A quick benchmark [0] shows that saving to GeoPackage, FlatGeobuf, and GeoParquet are roughly 10x faster than saving to CSV. Additionally, the CSV is much larger than any other format.
[0]: https://gist.github.com/kylebarron/f632bbf95dbb81c571e4e64cd...
As for the fastest way to serialize data to Pandas data to the browser, you should use Parquet; it's the fastest to write on the Python side and read on the JS side, while also being compressed. See https://github.com/kylebarron/parquet-wasm (full disclosure, I wrote this)
This is implemented in an nvidia geospatial library call cuspatial: https://docs.rapids.ai/api/cuspatial/legacy/api_docs/spatial...
[0]: https://docs.rs/geo/latest/geo/#algorithms
[1]: https://observablehq.com/@kylebarron/prototyping-georust-geo...
[2]: https://github.com/chrispahm/geos-wasm
[3]: https://observablehq.com/@kylebarron/zero-copy-apache-arrow-...
DuckDB for Swift
(This is easy to tell if you look at the page source. The map at the bottom is an embed from a static HTML kepler.gl map [2]). Disclaimer: I've contributed to deck.gl
[0]: https://kepler.gl/
[1]: https://deck.gl/
[2]: https://senseable.mit.edu/bike-trafficking/assets/kepler.htm...
In terms of self hosted maps for outdoors use, I have some open source repos from a few years ago that may help with that. [0] is a style based on the openmaptiles vector tile schema for outdoors purposes. I believe that readme has some overall instructions, plus other repos in the org are for making data. (Nowadays planetiler is probably the best way to make OSM vector tiles though)