Thanks to the good folk developing Open Street Map (OSM), we have a fantastic mapping resource that is completely free. Coverage is quickly expanding, as well as detail, and its these advancements that provide an opportunity to create gis layers that we would otherwise struggle to find in the public domain.
My first need of this was when I needed a shapefile of all the open/green spaces in london, and after many hours trying to locate this resource without paying a high fee or waiting several weeks, I decided to look into OSM.
OSM contributors provide a tag for every object they map, and this provides the basis for extracting objects of interest.
Firstly, we need some data! Probably the easiest place to collect this is from geofabrik. Here you can download maps at various different geographical scales in both .shp and .osm format. If you want to just extract general attributes e.g. landuse, leisure, natural etc. then downloading the shapefile can provide this straightaway. If you want to go deeper then you will need the .osm file. After the data was collected, I used two different methods to extract data.
Osmosis is a command line interface that allows extraction based on the key:value tag provided by the contributor e.g. landuse would be the main tag, with agriculture being a specific key under that tag. Osmosis can be easily installed on windows with instructions here.
There were two main commands I used to for extraction: Firstly to extract nodes (i.e. any object represented by a point; like a bus stop):
osmosis --rbf layer_name.osm.pbf -–node-key-value keyValueList=”key.value” -–wx outputfile.osm
Secondly, the following was used for extracting ways (i.e. polygons):
osmosis --read-xml layer_name.osm –-way-key-value keyValueList = “key.value” –-used-node –-wx outputfile.osm
Note: Make sure you are in the directory where your map is stored.