underpass is a data mining tool inspired by overpass turbo, aiming to implement extra processing/filtering
the implementation differs highly from overpass-turbo's, as underpass performs the fetching and filtering steps on a backend, instead of directly on the user's browser
underpass required rust
, cargo
, node
, and npm
to be installed, and optionally the just command runner
frontend is built by running either npm run build
(for development), npm run watch
(with hot reloading), or npm run prod
(for production).
typescript can be typechecked by running npm run typecheck
rust can be built and run by cargo run
, and cargo run --release
for production
remember to build the frontend first, as it gets included into the rust binary during compilation
just run
: build and run for developmentjust release
: build a binary for releasejust test
: run js and rust tests, typecheck typescriptjust get-data
: fetch required datasets
underpass needs two datasets: taginfo and elevation.
these are not included in this repo, and have to be generated before running underpass.
they can be fetched with just get-data
.
these datasets are optional, and underpass will run without them. in the case of missing elevation data, all points will be considered as having elevation 0. in the case of missing taginfo, no information about tags will be used.
first and foremost, node popups include a link to google maps and a link to copy coordinates for the node. this helps smooth the workflow of reviewing results
the code editor implements an overpass ql parser, which enables better syntax highlighting and smarter autocomplete
it also adds some features that are common in more fully featured, such as Ctrl+F
to find/replace, and Ctrl+D
to select next find match
read docs/overpass-ql-extensions.md
underpass implements a node editor that allows for powerful filtering that cannot be simply with the overpass API. it can be used to set up advanced filters, such as filtering roads by their bearing. not many filters have been implemented yet, but more are comming soon
the map is implemented using the maplibre gl library, which has a better performance when dealing with larger amounts of nodes