Skip to content
Visualization of all roads within any city
JavaScript Vue HTML Other
Branch: master
Clone or download
Latest commit 3422cfd Jan 24, 2020
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Create FUNDING.yml Jan 19, 2020
build Initial commit Jan 19, 2020
config Initial commit Jan 19, 2020
src added a note about 36e8 Jan 24, 2020
static Initial commit Jan 19, 2020
.babelrc Initial commit Jan 19, 2020
.editorconfig Initial commit Jan 19, 2020
.eslintignore Initial commit Jan 19, 2020
.eslintrc.js Initial commit Jan 19, 2020
.gitignore Initial commit Jan 19, 2020
.postcssrc.js Initial commit Jan 19, 2020
LICENSE clean up Jan 19, 2020
README.md Update README.md Jan 23, 2020
deploy.sh clean up Jan 19, 2020
index.html Initial commit Jan 19, 2020
package-lock.json slow down zoom when shift is pressed Jan 21, 2020
package.json slow down zoom when shift is pressed Jan 21, 2020
place.js Initial commit Jan 19, 2020

README.md

city-roads

Render every single road in any city at once: https://anvaka.github.io/city-roads/

demo

How it is made?

The data is fetched from OpenStreetMap using overpass API. While that API is free (as long as you follow ODbL licenses), it can be rate-limited and sometimes it is slow. After all we are downloading thousands of roads within an area!

To improve the performance of download, I indexed ~3,000 cities with population larger than 100,000 people and stored into a very simple protobuf format. The cities are stored into a cache in this github repository.

The name resolution is done by nominatim - for any query that you type into the search box it returns list of area ids. I check for the area id in my list of cached cities first, and fallback to overpass if area is not present in cache.

Limitations

The rendering of the city is limited by the browser and video card memory capacity. I was able to render Seattle roads without a hiccup on a very old samsung phone, though when I tried Tokyo (with 1.4m segments) the phone was very slow.

Selecting area that has millions of roads (e.g. a Washington state) may cause the page to crash even on a powerful device.

Luckily, most of the cities can be rendered without problems, resulting in a beautiful art.

Support

If you like this work and want to use it in your projects - you are more than welcome to do so!

Please let me know how it goes. You can also sponsor my projects here - your funds will be dedicated to more awesome and free data visualizations.

Local development

# install dependencies
npm install

# serve with hot reload at localhost:8080
npm run dev

# build for production with minification
npm run build

# build for production and view the bundle analyzer report
npm run build --report

License

The source code is licensed under MIT license

You can’t perform that action at this time.