Sign inSign up

lukasmartinelli/osm-noise-pollution

By lukasmartinelli

Updated almost 9 years ago

Approximate global noise pollution with OSM data and very simple noise model

Image
0

50K+

lukasmartinelli/osm-noise-pollution repository overview

osm-noise-pollution stability-deprecated Build Status

:warning: This repository is no longer actively maintained by Lukas Martinelli.

Checkout the global noise pollution map online

Approximate global noise pollution with OSM data and very simple noise model. Using global street, landuse and building data from OpenStreetMap we can approximate where noise pollution might happen. We use a very simple noise model inspired by noise pollution concept of Cities Skylines.

Noise map of Zurich

In the model we add a buffer to noisy objects. This is the area that is probably affected by noise. Very noisy objects get a high buffer and less noisy objects a smaller buffer.

In order for this to work we make several assumptions:

  1. Highways, trunks, primary and secondary roads are noisy. Normal street or service roads are not
  2. Railways are noisy
  3. Retail and industrial zones always have a noisy base limit
  4. All shops and food places (especially restaurants) are noisy
  5. Most party and event buildings are noisy (except some shady places)
  6. Most leisure buildings are noisy
  7. Some sport buildings are noisy
  8. Some tourism buildings are noisy

For OSM features that match this criterias we assign a buffer and remove the overlapping parts which results in a simple approximation of noise pollution.

Noise Levels

The noise pollution areas are divided into three noise level.

ZonedB
L1≥ 65
L255 - 64.9
L345 - 54.9

Each OSM feature emits a custom buffer for each noise level. You are very welcome to suggest different values, they are only educated guesses derived from the Swiss sonBASE noise map. Of course this approximation does not include damping through buildings, traffic volume and all the other fancy stuff - but it is simple enough to be applied globally.

Roads
TagL1L2L3
highway=motorway60m220m500m
highway=trunk50m190m400m
highway=primary35m160m300m
highway=secondary80m125m
highway=tertiary35m65m
Railways
TagL1L2L3
rail=[rail,narrow_gauge,..]30m60m100m
rail=[light_rail,tram,..]30m60m
Industrial and Retail Zones
TagL1L2L3
landuse=industrial50m100m
landuse=retail70m180m
Shops and Food
TagL1L2L3
shop=[any]30m65m
amenity=[bar,bbq,cafe,..]35m75m
Party
TagL1L2L3
amenity=[cinema,casino,nightclub,..]40m70m150m
Leisure
TagL1L2L3
leisure=[beach_resort,zoo,..]35m55m75m
Sport
TagL1L2L3
sporty=[baseball,soccer,..]40m60m80m

These values are implemented in the vector tile data source in src/vector-datasource/data.yml.

Develop

We use the Docker Compose based workflow we developed at osm2vectortiles to create an ETL workflow to get data in and out of PostGIS. The Mapbox GL stylesheet used for the map can be found in src/mapbox-gl/style.json.

Get Started

You need a complete OSM PBF data dump either from a country extract or of the entire world. In this example we will work with my beloved Switzerland. Download the data and put it into the data directory. You can use Docker compose directly with the prebuilt images. If you want to develop on osm-noise-pollution you can build the images yourself running make.

wget --directory-prefix=./data http://download.geofabrik.de/europe/switzerland-latest.osm.pbf

Now we need to set up the database and import the data using the import-osm Docker container.

# This will automatically initialize the database
docker-compose up -d postgres

# Import the OSM data dump from the ./data folder
docker-compose run import-osm

We can now export vector tiles containing the noise pollution geometries ready to use for map visualizations with Mapnik or Mapbox GL. If you want to change the export bounding box from Switzerland to a different country you need to modify the BBOX env var in docker-compose.yml for the export-vectortiles container.

docker-compose run export-vectortiles

And now we have all the data and code in place. Let's look at it visually. Start Mapbox Studio and visit the port 3000 on your Docker host.

docker-compose up mapbox-studio

Login and open the source project via Browse mounted at /projects. You should see vector-datasource.tm2source. Open this project and navigate to the location of your extract to check the noise pollution visualized in the vector data editor.

Components

The different components that attach to the postgres container are all located in the src directory.

ComponentDescription
postgresPostGIS data store for OSM data and to perform noise analysis
import-osmImposm3 based import tool with custom mapping to import selective OSM into the database and reconstruct it as GIS geometries
vector-datasourceMapbox Studio Source project to generate vector tiles from the noise pollution geometries.
export-vectortilesProduce vector tiles for the noise pollution geometries from the vector-datasource using tilelive
mapbox-studioMapbox Studio in a Docker container with the mounted vector-datasource to interactively work with the vector tile project.

Tag summary

Content type

Image

Digest

Size

315.2 MB

Last updated

almost 9 years ago

docker pull lukasmartinelli/osm-noise-pollution:export-vectortiles