Projects
All my projects are available at Github.
Python
Lonboard
Python TypeScript SourceA Python library for fast, interactive geospatial vector data visualization in Jupyter.
Building on cutting-edge technologies like GeoArrow and GeoParquet in conjunction with GPU-based map rendering, Lonboard aims to enable visualizing large geospatial datasets interactively through a simple interface.
geoarrow-rust
Python Rust SourcePython bindings to the core geoarrow-rs
library implementing the GeoArrow specification with efficient spatial operations.
GeoPolars
Rust Python JavaScript SourceGeoPolars extends the Polars DataFrame library for use with geospatial data.
suncalc-py
Python SourceA fast, vectorized Python implementation of suncalc.js
for calculating sun position and sunlight phases (times for sunrise, sunset, dusk, etc.) for the given location and time.
pymartini
Cython Python SourceA Cython port of Martini for fast RTIN terrain mesh generation, 2-3x faster than Martini in Node.
This was my first time using Cython and I was thrilled with its ease of use and performance. Upon first porting the original JavaScript Martini code to pure Python, it was taking around 5 seconds to generate one tile. After converting to Cython, it's within 50 milliseconds.
pydelatin
Python SourcePython bindings to hmm
for fast terrain mesh generation. I figured out just enough C++ to connect hmm
to pybind11.
quantized-mesh-encoder
A fast Python Quantized Mesh encoder. Encodes a mesh with 100k coordinates and 180k triangles in 20ms.
With judicious use of vectorized Numpy functions, I was able to achieve speeds of at least 100x faster than an existing Python library.
nst-guide/terrain
Python Bash SourceScripts to generate contours, hillshade, Terrain RGB, and slope-angle shading tiles from Digital Elevation Model (DEM) data.
nst-guide/naip
Python SourceScripts to generate high-resolution aerial imagery tiles from USDA National Agriculture Imagery Program (NAIP) data.
nst-guide/fstopo
Python SourceScripts to generate map tiles from US Forest Service Topo quadrangle maps.
nst-guide/contours
Python Bash SourceScripts to generate vector tile contours from USGS contour data.
naip-cogeo-mosaic
Serverless high-resolution NAIP map tiles from Cloud-Optimized GeoTIFFs for the lower 48 U.S. states.
The server was shut off after a very large AWS bill.
usgs-topo-tiler & usgs-topo-mosaic
usgs-topo-tiler
is a Python package to read Web Mercator map tiles from USGS
Historical Topographic Maps. usgs-topo-mosaic
is a fork of
cogeo-mosaic-tiler to serve USGS Historical Topographic
map tiles on demand. Together, they enable serving map tiles on demand from the
USGS's public collection of 181,000 historical topographic maps.
The server was shut off after a very large AWS bill.
demquery
Python Source
Python library and command line interface to quickly and easily query elevation values on Digital Elevation Models. The command line interface can add elevations to a provided GeoJSON FeatureCollection.
keplergl_cli
Python Source
Python library and command line interface to quickly and interactively visualize geospatial data with Kepler.gl. Since I work with GIS data in Python, I use this whenever I need to see my data on a map.
JavaScript & TypeScript
parquet-wasm
Rust SourceRust-based WebAssembly bindings to read and write Apache Parquet data
@geoarrow/deck.gl-layers
TypeScript Source
deck.gl layers for rendering GeoArrow data.
arrow-js-ffi
TypeScript SourceZero-copy reading of Arrow data from WebAssembly.
deck.gl-raster
JavaScript GLSL Sourcedeck.gl layers and WebGL modules for client-side satellite imagery analysis.
snap-to-tin
TypeScript SourceSnap vector features to the faces of a triangulated irregular network (TIN)
Rust
geoarrow-rs
Rust SourceA Rust implementation of the GeoArrow specification and bindings to GeoRust algorithms for efficient spatial operations on GeoArrow memory.
geopolars
Rust SourceGeospatial extensions for the Polars DataFrame library.
geo-index
Rust SourceA Rust crate for packed, static, zero-copy spatial indexes.
arrow-wasm
Rust SourceBuilding block library for using Apache Arrow in Rust WebAssembly modules.
Websites
National Scenic Trails Guide
An open-source project for exploring and navigating U.S. National Scenic Trails, starting with the Pacific Crest Trail.
The website is designed to bring together most information hikers want: data overlays exist for land management boundaries, current and historical wildfires, public transit options near the trail or trail towns, current air quality, photography, and Wikipedia articles. All units, including peak elevations and contour lines, can be switched between Imperial and Metric.
Essentially all data generation is automated, to allow for the possibility of expanding to other National Scenic Trails in the future.
OSM Liberty Topo
SourceA free topographic Mapbox GL basemap style with complete liberty to use and self host. This is a fork of OSM Liberty and combines vector tiles in the schema of OpenMapTiles with contour lines and hillshading to create a beautiful topographic vector map.
OSM Liberty
SourceOSM Liberty is one of the best free Mapbox GL basemap styles for general use. I contributed styling for river names and glacier land cover.
All Transit
A visualization of all public transit in the world (or at least what exists in the Transitland database). Zoom into a city in the U.S. to see an animation of transit vehicles moving along their routes.
I use Python, jq
, and sqlite
to download
and analyze the source data. I use Gatsby and React for the website structure. I
use React Map GL/Mapbox GL JS and Deck.gl for the map rendering; the former for
the route geometries and the latter for the schedule animation. I use d3
to
generate a high-resolution static image of transit in the continental U.S.
Jupyter
Stata Jupyter Kernel
Python SourceConnects the Stata statistical package to the Jupyter ecosystem, enabling researchers to use a modern data science toolkit with Stata.
Jupyter Notebooks permit sharing of code and results together, with simple reproducible modifications in a web-based computational environment. Alternative front-ends like Hydrogen allow for rich HTML output even from computations on a remote server.
As of February 2020, it has been downloaded nearly 90,000 times.
Hydrogen
JavaScript SourceThe Hydrogen project is a front-end for the Jupyter project, enabling interactive coding and rich output formats inside the Atom text editor. I contributed code that allowed Jupyter Notebook files to be imported and exported as regular Python files.
Stata
While working as an economics research assistant, I built a number of open-source tools that interface with the Stata statistical package to improve research reproducibility and increase productivity.
stata-exec
JavaScript Source
Send code to the Stata window from the Atom text editor. This is a more primitive version of running Stata code from Atom than the Jupyter kernel above.
language-stata
Python Source
Syntax highlighting for Stata for the Atom text editor.
stataParquet
Java Source
A prototype Java implementation of reading Parquet files into Stata. My first Java project, I was able to successfully read Parquet files into Stata's memory, but it ended up being less performant than my friend Mauricio Caceres' C++ implementation.
Miscellaneous
medicare-documentation
Python Source
While working with Medicare data, I was frustrated with the fragmented state of public documentation regarding the data I was working with.
I scraped the ResDAC documentation website and joined it with public NBER documentation to create my own beautiful, responsive documentation website to help me search documentation faster. I used MkDocs as the static site generator and Material for MkDocs as the theming.
Meta
kylebarron.dev
JavaScript SourceThis website is built with GatsbyJS, starting from
the
gatsby-starter-minimal-blog
template.