Create Vector Tiles from OpenStreetMap
CC Attribution 3.0 Germany:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Roth, Manuel (HSR University of Applied Science Rapperswil Switzerland)
Martinelli, Lukas (HSR University of Applied Sciences Rapperswil Switzerland)
Pridal, Petr (Klokan Technologies GmbH)
The OSM2VectorTiles project offers free downloadable vector tiles ready to use by people interested in hosting custom base maps on their own infrastructure. The whole world fits on a USB stick and can be served from an ordinary web hosting and styled and enriched to make beautiful and fast maps for web and mobile applications. The advantages of vector tiles over traditional raster tiles are well known. There are already a handful of vector tile provider present, but they may not always serve your use case optimally. After this talk you will know how to create your own custom vector tiles based on OpenStreetMap and will know the tools and processes you need to use. The talk will cover how to import OpenStreetMap data into PostGIS and then shows how to generate vector tiles using Tilelive and Mapnik. We will present the open source workflow we use at OSM2VectorTiles to prerender global vector tiles and instruct you how to adapt the workflow to create custom vector tiles. Thanks to Docker and tools such as Mapnik, PostGIS, Tilelive and Mapbox Studio Classic the process is straightforward and repeatable. Manuel Roth (HSR University of Applied Science Rapperswil Switzerland) Lukas Martinelli (HSR University of Applied Sciences Rapperswil Switzerland) Petr Pridal
 All right. Hello, everybody. I'd like to welcome you to our talk about creating vector tiles from OpenStreetMap. It's great to be here. We enjoyed this conference very much. We were here for the first time. And now we hope that we have something interesting for you this afternoon. So a bit about us. This is Lukas Martinelli and I'm Manuel Ott. We are both computer science graduates from the University of Applied Science, Rapposville, in Switzerland. And for the past year, we worked on a project called OSM2 vector tiles. So what you will know after this talk. So we'll talk about what vector tiles are and what are their advantages over traditional raster tiles like a little bit we heard before. But the purpose of the OSM2 vector tile project is and how you can use it in your project as well. And in general, how you can turn OpenStreetMap data into vector tiles and what you need to look out for. And especially how you can create your own vector tileset. And just to add to what we heard before, it's important. The biggest advantage of tiles is that they always cover the same area. And this means we can pre-compute it. We can cache it very easily. You shouldn't forget that. That's the biggest advantage. And vector tiles are very similar and I'm very glad Boundless made a great explanation how that works. And vector tiles, it's even better than with Raster. We can just create them once for a purpose, like for the purpose of a base map. And everyone can use them and apply their custom styling. So we hope there is no need for you to go through all this work. We will show you to create your own map. Use our vector tiles and really keep that in mind. You only need to create them once and other people can use them. And I really hope that you see more open vector tile layers in the future. So the goal of those into vector tiles project was to build a place where you can download these vector tiles like the entire planet. We have over 200 countries and more than 600 cities to really give you a starting point where you can download these vector tiles and use them. And secondly, the target was to build a workflow based on Docker, which should be very straightforward to go from raw open street map data to vector tiles. And third, like most important one, we want to empower everyone to create their custom base map. So now I give a little demo of our website. I hope it's over there. Yeah. This is our website. It's called awesome to vector tiles.org. You can go in it and there is a map section. You can choose between three predefined styles. There is the bright style, the liberty style and the basic style. And under the map, you can see a HTML sheet where you can just copy and you got full screen map, but which uses the CDN for hosting the vector tiles from us. But what we actually think is the way to go is like go to the download section, download the vector tiles and serve them yourself so that you can be independent. So in the download section, we provide vector tiles for the whole planet, for many countries, more than 200 and more than 600 cities. And now I'm going to demo how you can do that. So because we are in Bonn, we're searching for Bonn in Germany. We can just copy the link, go into command line. I hope you can see that. Download disambitized file. And disambitized file is basically just an SQLite DB with all the vector tiles in them. So we see we downloaded it. And then we can use a tile server. In this case, I use tile server glite, which will be presented after our talk. You can just give the argument like this. And then we have a tile server in part 8080. And here on the bottom, you get the next reviewer, which shows you what's inside these vector tiles. So you get really a basic view. You can hover over certain features. And on the right-hand side, you can see the attributes. So you can really just play around, see what's in them, what you can actually style afterwards also if you want to create your own style. But this is really the place to get started with the vector tiles. So now back to the presentation. And in the rest of the presentation, we really want to focus how you can create the vector tiles and what you need to look out for. So creating static vector tiles is not a talk. And I will show you an example how to do that with Mapbox Studio Classic. We are always talking about vector tiles in the Mapbox vector tile specification now. And there are other options, as we've seen before. And a very easy way to get started is with the traditional shapefile. So for OpenStripMap, you can download a shapefile from Metro Extracts. And so we download that, and we unzip it. And now we're going to choose the admin boundaries, so the admin shapefile. And we're going to create a new source project in Mapbox Studio. So we are opening it, creating a new source project, and we will add a new layer that will reference the shapefile. So we browse it and reference the previously downloaded shapefile, admin. Voila, we have it here. We can click on the data, and we see the metadata. And we can zoom around. And now we already started with creating our own vector tiles. Now exporting them as MBitiles format is easy. With the graphical user interface, you can just go to export, and it will dump a SQL lite file for you. So it's not scary. It is easy to do. However, if you do it on a bigger scale, that no longer works, and we don't recommend that you download shapefiles for OpenStripMap and turn it into vector tiles, you really find that using a database like PostJS gives you the most power, because you're going to want to integrate auto data, whereas there is not enough like natural earth, and you want to generalize, you want to calculate labels, and all the power that PostJS gives you. So we built a workflow around this, and if you build maps with MAPNIC, you will know this stack. And it's essentially the same. You import it with a tool like OSM2P2S, import your auto data, and then there's just these encode steps that turns the SQL queries into vector tiles. And that's what you're going to show next. So now we are going through each. Oh, yeah. Okay. So we dockerize this entire process, so it's very easy for you to use, and we use Docker compose to orchestrate the containers, so you don't need to install anything. You just need Docker and Docker run, and then you can do this entire thing yourself. You put in an OSMPB file, and in the end you get the vector tiles and the tiles. So now we talk a little bit about each step. So first is importing the OpenStreetMap data into PostJS. There are two options, basically, OSM2P2S SQL and in Pozm3. We decided to choose in Pozm3 because it's very fast, and it has this nice configuration where you can define which OpenStreetMap tags get imported into which database table. So on the right-hand side, we can see an example of this configuration. There is defined a database table called Buildings, which all OpenStreetMap tags with the key building get imported. We found that it's very important to only import the OpenStreetMap data, which we actually want inside the vector tiles, and leave out all the rest. So this is very convenient way to do this. What also was very helpful for us or important is pre-process as much as you can. Do heavy stuff like generalization, heavy functions like calculating centrites for the labels, or splitting large polygons. Do that before so that you don't have to calculate these things at the time where you are generating the vector tiles, so this part keeps very fast. So here's the demo of how the workflow works. There is a Docker Compose command, which starts the Postgres database. Now it's started. We download a PBF. In this case, it's Switzerland. It's Zurich. It's a city in Switzerland. And in the next step, we are going to import this OpenStreetMap extract to run the command import OSM. And it will read this file, import it with in POSM3. And after this, it will do generalization, splitting big polygons, calculating the centrites for the label placement. So we did all this work for you, basically. So now everything is in the database. All the data is there. We want to have in the vector tiles afterwards. Now we are ready to create the vector tiles. But before we can do that, we actually need to define how should this data be aligned inside the vector tiles. For this, we need to know a little bit more what actually is inside a vector tile. So a single vector tile consists of a named set of layers. This could be a building layer, a road layer, a water layer, whatever you want. And each of these layers contain the geometric features and their metadata. So a description is used to define all of this layer and where to get this data from. In our case, this is an SQL query, which queries our Postgres database. But this could also be a shapefile or a geochasen file. So here we can see in an example on the right-hand side, again, we have this description of the layer for the building layer and the corresponding SQL query. So if you want to render vector tiles for the entire world until Sumo level 14, these are around 350 million tiles. And for each and all of these tiles, this query runs. So we really need to be focused on making this query very fast. So this should keep this in mind. And what's also interesting in this query is on the bottom, we can see this term, Bbox. So this limits the data only to the extent of the current vector tile. So we only query this data. And the query is also specific to the Sumo level. So the scale denominator defines that in this example on Sumo level 13, only building with an area greater than 1,700 square meters should show up. And on Sumo level 14, all the other buildings. And on Sumo level 12 and below, no buildings will appear. So this is how you define what's inside your vector tiles. So you put all these layers there, where to get the data from. And because there is a nicer way to do this, then do this by hand. We used Mapbox Studio Classic for this. So you can there easily create a source project, add all these layers, add your SQL query. And on the left hand side, it graphically shows up what you actually queried. You can hover over the point or the geometric features and see what attributes are there. And when you save it, it will automatically generate this description for you. So now you're ready to create the vector tiles. So we saw how we do it with the graphical user interface. We can just use this command under the hood. It uses tile life all over the place. So if tile life copy, we can just say copy this bounding box, the data in this bounding box from Sumo level zero in this case down to Sumo level 14. We use our project we created before and we put it into a destination. And in this case, it is an mbtiles, it could also be S3 or for example, it could be just a file system. And now I will show you how that works in our workflow with Docker compose. And that's very simple. We just run Docker compose, export vector tiles and give it the bounding box. In this case of Zurich. And we will shortly see how it starts rendering these vector tiles. You see it's mapping the job and on the right you see the size. So afterwards in the data directory we have our OSM.mb tiles with the vector tiles because it's just a SQLite database. We can look into it. We can count the tiles. It will be 70. And now we have that file. We can serve it. We can unpack it. We can throw it to S3. We no longer need a complicated server and that's the power of it. And we already saw other projects. Geo server, map server starts working on this and there are other folks for G guys that are working like on T-rex or tegola that just turn post-GIS into vector tiles. So you might want to look into those if our workflow doesn't please you. Now we want to pre-compute the vector tiles for the entire planet so that we can create extracts and everyone can put it on a USB stick or on their mobile phone. And to do that we cannot use a single machine. So we do our import into the post-GIS database at first. We have a post-GIS database and then what we do is we just clone the physical bytes. We just clone the disk and we create clones like for example 16 machines in our data center and each one of them has their separate post-GIS database. And so we create workers that everyone queries their own database. And this makes it very fast. Otherwise the database would be the bottleneck if we fire these billions of queries. And now we just divide the entire planet into a grid divided in 64,000 jobs. Each job is a bounding box you need to render and the job will take the bounding box, render all tiles within it, store it in a SQLite database and send it back. And in the end we just take all these SQLite databases, combine them and we have a single file with the entire planet. So it's a MapReduce workflow, we just map the job description to the SQLite and reduce it. And so some statistics, if you run it on a single server with 50 gig RAM and only one CPU this uses 128 days. So you need to scale it horizontally and we can bring it down to three days with 16 machines. So we run 16 machines with eight cores, actually only 30 gigs of memory. And so if you have money you can make that as fast as possible. And then you have the entire planet pre-rendered. So serving performance won't be a problem for you anymore. But we already did that for you. So now updates. We can't provide real-time updates but like weekly or daily updates are still possible. And to do that we just detect the change features, so what geometry changed. And then we have all these geometries over the planet and we just find the minimal set of tiles that cover these. And then we just apply this entire process to these tiles. And in the end we again get a database with just the tiles that changed. And now we can just div these tiles into our planet from previously and we have to update the database and conserve it again. And this way once you have rendered the planet it's not such a huge investment. You can have a single machine and then can keep OpenStreetMap up to date. And you also see here these patterns like the boundaries. If an attribute changes in a boundary all of those tiles that contain that boundary have to be re-rendered. So what can you do with this workflow? If you just want a nice base map, for example you have a visualization, you want to create a light base map or probably highlight something else, perhaps you can use our tiles. Please check them out. You don't need to do this work of rendering it, spend that money. It's very easy, you can just copy our tiles and serve them yourself. You no longer need us, you're independent. And if you just need like an overlay you have your five features. We have OpenStreetMap for example that display marine features like boys or other things. And then you can just use our Docker template that we prepared here to create a thin vector tile overlay. And you can still combine that with the base map. And that's actually the power of vector tiles that we can, every one of us can create their own set of vector tiles that we can in the end combine. And you really need something complicated with OSM and you don't like what we did. Then you can just fork our project, adapt it, merge your own data and use that distributed process. And other people are doing this as well. So yeah, this was basically it. Please check out our website. Really would love to see if you go there, we have tutorials, check everything out, go and get up, have a look at our code, run through the process. If you find issues, we are happy. If you file an issue or hit us up on Twitter. And we hope that we could give you something interesting and get you motivated to work with vector tiles. So we hope that there are getting like more and more open vector tiles sets out there so we can all have fun with vector tiles. Okay, thank you. So thank you for your presentation. Please speak in the microphone because actually it's supposed to be recorded. Are the open street map source hosted on S3 or are they hosted in public location that is accessible? Clock and tech provides us with a CDN so you can access that but if you don't want to use CDN, please download them and just throw them on S3. You have immediate, fast. Yeah, it's not that much money. What's the disk space requirement for an entire global coverage? The entire planet file, the SQLite file is 54 gigs. I mean the vector tiles when they've been produced. 54 gigabytes. So it fits on a USB stick, a bigger one. First of all, I have to say I'm sorry I'm going to ask an inconvenient question. You're probably already guessing which one. Yeah. Okay, could you please comment on the current status of the dispute with Mapbox about this IP claims on cartography? Because I love your project very much and I'm a little bit worried if good guys like you and them are struggling a little bit. So I fear this would come. Please read the issue if you really want to do more. I want to make up your opinion, make your own opinion. We don't think there are legal issues on our side. However, we are just so Mapbox fanboys as you've seen before so we want to work together with them that they are happy because without them it wouldn't even be possible. So we are talking with them to make these problems go away. So you can expect collaboration from us. I don't see currently any more questions but please correct me if I'm wrong. So we're doing extremely well on time. So it's still 10 minutes left. So basically if there are no more questions I suggest that everybody can get out and have a coffee because 10 minutes that's quite a good time. Or you can stay here however you like. Once again thank you for your presentation and your insight.
 All right.  Hello, everybody.  I'd like to welcome you to our talk about creating vector tiles from OpenStreetMap.  It's great to be here.  We enjoyed this conference very much.  We were here for the first time.  And now we hope that we have something interesting for you this afternoon.  So a bit about us.  This is Lukas Martinelli and I'm Manuel Ott.  We are both computer science graduates from the University of Applied Science, Rapposville,  in Switzerland.  And for the past year, we worked on a project called OSM2 vector tiles.  So what you will know after this talk.  So we'll talk about what vector tiles are and what are their advantages over traditional  raster tiles like a little bit we heard before.  But the purpose of the OSM2 vector tile project is and how you can use it in your project  as well.  And in general, how you can turn OpenStreetMap data into vector tiles and what you need to  look out for.  And especially how you can create your own vector tileset.  And just to add to what we heard before, it's important.  The biggest advantage of tiles is that they always cover the same area.  And this means we can pre-compute it.  We can cache it very easily.  You shouldn't forget that.  That's the biggest advantage.  And vector tiles are very similar and I'm very glad Boundless made a great explanation  how that works.  And vector tiles, it's even better than with Raster.  We can just create them once for a purpose, like for the purpose of a base map.  And everyone can use them and apply their custom styling.  So we hope there is no need for you to go through all this work.  We will show you to create your own map.  Use our vector tiles and really keep that in mind.  You only need to create them once and other people can use them.  And I really hope that you see more open vector tile layers in the future.  So the goal of those into vector tiles project was to build a place where you can download  these vector tiles like the entire planet.  We have over 200 countries and more than 600 cities to really give you a starting point  where you can download these vector tiles and use them.  And secondly, the target was to build a workflow based on Docker, which should be very straightforward  to go from raw open street map data to vector tiles.  And third, like most important one, we want to empower everyone to create their custom  base map.  So now I give a little demo of our website.  I hope it's over there.  Yeah.  This is our website.  It's called awesome to vector tiles.org.  You can go in it and there is a map section.  You can choose between three predefined styles.  There is the bright style, the liberty style and the basic style.  And under the map, you can see a HTML sheet where you can just copy and you got full screen  map, but which uses the CDN for hosting the vector tiles from us.  But what we actually think is the way to go is like go to the download section, download  the vector tiles and serve them yourself so that you can be independent.  So in the download section, we provide vector tiles for the whole planet, for many countries,  more than 200 and more than 600 cities.  And now I'm going to demo how you can do that.  So because we are in Bonn, we're searching for Bonn in Germany.  We can just copy the link, go into command line.  I hope you can see that.  Download disambitized file.  And disambitized file is basically just an SQLite DB with all the vector tiles in them.  So we see we downloaded it.  And then we can use a tile server.  In this case, I use tile server glite, which will be presented after our talk.  You can just give the argument like this.  And then we have a tile server in part 8080.  And here on the bottom, you get the next reviewer, which shows you what's inside these vector  tiles.  So you get really a basic view.  You can hover over certain features.  And on the right-hand side, you can see the attributes.  So you can really just play around, see what's in them, what you can actually style afterwards  also if you want to create your own style.  But this is really the place to get started with the vector tiles.  So now back to the presentation.  And in the rest of the presentation, we really want to focus how you can create the vector  tiles and what you need to look out for.  So creating static vector tiles is not a talk.  And I will show you an example how to do that with Mapbox Studio Classic.  We are always talking about vector tiles in the Mapbox vector tile specification now.  And there are other options, as we've seen before.  And a very easy way to get started is with the traditional shapefile.  So for OpenStripMap, you can download a shapefile from Metro Extracts.  And so we download that, and we unzip it.  And now we're going to choose the admin boundaries, so the admin shapefile.  And we're going to create a new source project in Mapbox Studio.  So we are opening it, creating a new source project, and we will add a new layer that  will reference the shapefile.  So we browse it and reference the previously downloaded shapefile, admin.  Voila, we have it here.  We can click on the data, and we see the metadata.  And we can zoom around.  And now we already started with creating our own vector tiles.  Now exporting them as MBitiles format is easy.  With the graphical user interface, you can just go to export, and it will dump a SQL  lite file for you.  So it's not scary.  It is easy to do.  However, if you do it on a bigger scale, that no longer works, and we don't recommend  that you download shapefiles for OpenStripMap and turn it into vector tiles, you really  find that using a database like PostJS gives you the most power, because you're going to  want to integrate auto data, whereas there is not enough like natural earth, and you  want to generalize, you want to calculate labels, and all the power that PostJS gives  you.  So we built a workflow around this, and if you build maps with MAPNIC, you will know  this stack.  And it's essentially the same.  You import it with a tool like OSM2P2S, import your auto data, and then there's just these  encode steps that turns the SQL queries into vector tiles.  And that's what you're going to show next.  So now we are going through each.  Oh, yeah.  Okay.  So we dockerize this entire process, so it's very easy for you to use, and we use Docker  compose to orchestrate the containers, so you don't need to install anything.  You just need Docker and Docker run, and then you can do this entire thing yourself.  You put in an OSMPB file, and in the end you get the vector tiles and the tiles.  So now we talk a little bit about each step.  So first is importing the OpenStreetMap data into PostJS.  There are two options, basically, OSM2P2S SQL and in Pozm3.  We decided to choose in Pozm3 because it's very fast, and it has this nice configuration  where you can define which OpenStreetMap tags get imported into which database table.  So on the right-hand side, we can see an example of this configuration.  There is defined a database table called Buildings, which all OpenStreetMap tags with the key  building get imported.  We found that it's very important to only import the OpenStreetMap data, which we actually  want inside the vector tiles, and leave out all the rest.  So this is very convenient way to do this.  What also was very helpful for us or important is pre-process as much as you can.  Do heavy stuff like generalization, heavy functions like calculating centrites for the  labels, or splitting large polygons.  Do that before so that you don't have to calculate these things at the time where you are generating  the vector tiles, so this part keeps very fast.  So here's the demo of how the workflow works.  There is a Docker Compose command, which starts the Postgres database.  Now it's started.  We download a PBF.  In this case, it's Switzerland.  It's Zurich.  It's a city in Switzerland.  And in the next step, we are going to import this OpenStreetMap extract to run the command  import OSM.  And it will read this file, import it with in POSM3.  And after this, it will do generalization, splitting big polygons, calculating the centrites  for the label placement.  So we did all this work for you, basically.  So now everything is in the database.  All the data is there.  We want to have in the vector tiles afterwards.  Now we are ready to create the vector tiles.  But before we can do that, we actually need to define how should this data be aligned  inside the vector tiles.  For this, we need to know a little bit more what actually is inside a vector tile.  So a single vector tile consists of a named set of layers.  This could be a building layer, a road layer, a water layer, whatever you want.  And each of these layers contain the geometric features and their metadata.  So a description is used to define all of this layer and where to get this data from.  In our case, this is an SQL query, which queries our Postgres database.  But this could also be a shapefile or a geochasen file.  So here we can see in an example on the right-hand side, again, we have this description of the  layer for the building layer and the corresponding SQL query.  So if you want to render vector tiles for the entire world until Sumo level 14, these  are around 350 million tiles.  And for each and all of these tiles, this query runs.  So we really need to be focused on making this query very fast.  So this should keep this in mind.  And what's also interesting in this query is on the bottom, we can see this term, Bbox.  So this limits the data only to the extent of the current vector tile.  So we only query this data.  And the query is also specific to the Sumo level.  So the scale denominator defines that in this example on Sumo level 13, only building with  an area greater than 1,700 square meters should show up.  And on Sumo level 14, all the other buildings.  And on Sumo level 12 and below, no buildings will appear.  So this is how you define what's inside your vector tiles.  So you put all these layers there, where to get the data from.  And because there is a nicer way to do this, then do this by hand.  We used Mapbox Studio Classic for this.  So you can there easily create a source project, add all these layers, add your SQL query.  And on the left hand side, it graphically shows up what you actually queried.  You can hover over the point or the geometric features and see what attributes are there.  And when you save it, it will automatically generate this description for you.  So now you're ready to create the vector tiles.  So we saw how we do it with the graphical user interface.  We can just use this command under the hood.  It uses tile life all over the place.  So if tile life copy, we can just say copy this bounding box, the data in this bounding  box from Sumo level zero in this case down to Sumo level 14.  We use our project we created before and we put it into a destination.  And in this case, it is an mbtiles, it could also be S3 or for example, it could be just  a file system.  And now I will show you how that works in our workflow with Docker compose.  And that's very simple.  We just run Docker compose, export vector tiles and give it the bounding box.  In this case of Zurich.  And we will shortly see how it starts rendering these vector tiles.  You see it's mapping the job and on the right you see the size.  So afterwards in the data directory we have our OSM.mb tiles with the vector tiles because  it's just a SQLite database.  We can look into it.  We can count the tiles.  It will be 70.  And now we have that file.  We can serve it.  We can unpack it.  We can throw it to S3.  We no longer need a complicated server and that's the power of it.  And we already saw other projects.  Geo server, map server starts working on this and there are other folks for G guys that  are working like on T-rex or tegola that just turn post-GIS into vector tiles.  So you might want to look into those if our workflow doesn't please you.  Now we want to pre-compute the vector tiles for the entire planet so that we can create  extracts and everyone can put it on a USB stick or on their mobile phone.  And to do that we cannot use a single machine.  So we do our import into the post-GIS database at first.  We have a post-GIS database and then what we do is we just clone the physical bytes.  We just clone the disk and we create clones like for example 16 machines in our data center  and each one of them has their separate post-GIS database.  And so we create workers that everyone queries their own database.  And this makes it very fast.  Otherwise the database would be the bottleneck if we fire these billions of queries.  And now we just divide the entire planet into a grid divided in 64,000 jobs.  Each job is a bounding box you need to render and the job will take the bounding box, render  all tiles within it, store it in a SQLite database and send it back.  And in the end we just take all these SQLite databases, combine them and we have a single  file with the entire planet.  So it's a MapReduce workflow, we just map the job description to the SQLite and reduce  it.  And so some statistics, if you run it on a single server with 50 gig RAM and only one  CPU this uses 128 days.  So you need to scale it horizontally and we can bring it down to three days with 16 machines.  So we run 16 machines with eight cores, actually only 30 gigs of memory.  And so if you have money you can make that as fast as possible.  And then you have the entire planet pre-rendered.  So serving performance won't be a problem for you anymore.  But we already did that for you.  So now updates.  We can't provide real-time updates but like weekly or daily updates are still possible.  And to do that we just detect the change features, so what geometry changed.  And then we have all these geometries over the planet and we just find the minimal set  of tiles that cover these.  And then we just apply this entire process to these tiles.  And in the end we again get a database with just the tiles that changed.  And now we can just div these tiles into our planet from previously and we have to update  the database and conserve it again.  And this way once you have rendered the planet it's not such a huge investment.  You can have a single machine and then can keep OpenStreetMap up to date.  And you also see here these patterns like the boundaries.  If an attribute changes in a boundary all of those tiles that contain that boundary  have to be re-rendered.  So what can you do with this workflow?  If you just want a nice base map, for example you have a visualization, you want to create  a light base map or probably highlight something else, perhaps you can use our tiles.  Please check them out.  You don't need to do this work of rendering it, spend that money.  It's very easy, you can just copy our tiles and serve them yourself.  You no longer need us, you're independent.  And if you just need like an overlay you have your five features.  We have OpenStreetMap for example that display marine features like boys or other things.  And then you can just use our Docker template that we prepared here to create a thin vector  tile overlay.  And you can still combine that with the base map.  And that's actually the power of vector tiles that we can, every one of us can create their  own set of vector tiles that we can in the end combine.  And you really need something complicated with OSM and you don't like what we did.  Then you can just fork our project, adapt it, merge your own data and use that distributed  process.  And other people are doing this as well.  So yeah, this was basically it.  Please check out our website.  Really would love to see if you go there, we have tutorials, check everything out, go  and get up, have a look at our code, run through the process.  If you find issues, we are happy.  If you file an issue or hit us up on Twitter.  And we hope that we could give you something interesting and get you motivated to work  with vector tiles.  So we hope that there are getting like more and more open vector tiles sets out there so  we can all have fun with vector tiles.  Okay, thank you.  So thank you for your presentation.  Please speak in the microphone because actually it's supposed to be recorded.  Are the open street map source hosted on S3 or are they hosted in public location that  is accessible?  Clock and tech provides us with a CDN so you can access that but if you don't want to use  CDN, please download them and just throw them on S3.  You have immediate, fast.  Yeah, it's not that much money.  What's the disk space requirement for an entire global coverage?  The entire planet file, the SQLite file is 54 gigs.  I mean the vector tiles when they've been produced.  54 gigabytes.  So it fits on a USB stick, a bigger one.  First of all, I have to say I'm sorry I'm going to ask an inconvenient question.  You're probably already guessing which one.  Yeah.  Okay, could you please comment on the current status of the dispute with Mapbox about this  IP claims on cartography?  Because I love your project very much and I'm a little bit worried if good guys like  you and them are struggling a little bit.  So I fear this would come.  Please read the issue if you really want to do more.  I want to make up your opinion, make your own opinion.  We don't think there are legal issues on our side.  However, we are just so Mapbox fanboys as you've seen before so we want to work together  with them that they are happy because without them it wouldn't even be possible.  So we are talking with them to make these problems go away.  So you can expect collaboration from us.  I don't see currently any more questions but please correct me if I'm wrong.  So we're doing extremely well on time.  So it's still 10 minutes left.  So basically if there are no more questions I suggest that everybody can get out and have  a coffee because 10 minutes that's quite a good time.  Or you can stay here however you like.  Once again thank you for your presentation and your insight.
foss4g-2016-1144-create_vector_tiles_from_openstreetmap-hd_0_215.png foss4g-2016-1144-create_vector_tiles_from_openstreetmap-hd_216_683.png foss4g-2016-1144-create_vector_tiles_from_openstreetmap-hd_684_3995.png foss4g-2016-1144-create_vector_tiles_from_openstreetmap-hd_3996_4067.png foss4g-2016-1144-create_vector_tiles_from_openstreetmap-hd_4068_4259.png foss4g-2016-1144-create_vector_tiles_from_openstreetmap-hd_4260_4955.png foss4g-2016-1144-create_vector_tiles_from_openstreetmap-hd_4956_5111.png foss4g-2016-1144-create_vector_tiles_from_openstreetmap-hd_5112_6539.png foss4g-2016-1144-create_vector_tiles_from_openstreetmap-hd_6540_7187.png foss4g-2016-1144-create_vector_tiles_from_openstreetmap-hd_7188_7235.png foss4g-2016-1144-create_vector_tiles_from_openstreetmap-hd_7236_7907.png foss4g-2016-1144-create_vector_tiles_from_openstreetmap-hd_7908_8303.png foss4g-2016-1144-create_vector_tiles_from_openstreetmap-hd_8304_8435.png foss4g-2016-1144-create_vector_tiles_from_openstreetmap-hd_8436_9107.png foss4g-2016-1144-create_vector_tiles_from_openstreetmap-hd_9108_9227.png foss4g-2016-1144-create_vector_tiles_from_openstreetmap-hd_9228_17759.png foss4g-2016-1144-create_vector_tiles_from_openstreetmap-hd_17760_18371.png foss4g-2016-1144-create_vector_tiles_from_openstreetmap-hd_18372_18467.png foss4g-2016-1144-create_vector_tiles_from_openstreetmap-hd_18468_18527.png foss4g-2016-1144-create_vector_tiles_from_openstreetmap-hd_18528_27527.png foss4g-2016-1144-create_vector_tiles_from_openstreetmap-hd_27528_28379.png foss4g-2016-1144-create_vector_tiles_from_openstreetmap-hd_28380_28727.png foss4g-2016-1144-create_vector_tiles_from_openstreetmap-hd_28728_28979.png foss4g-2016-1144-create_vector_tiles_from_openstreetmap-hd_28980_29699.png foss4g-2016-1144-create_vector_tiles_from_openstreetmap-hd_29700_30239.png foss4g-2016-1144-create_vector_tiles_from_openstreetmap-hd_30240_30635.png foss4g-2016-1144-create_vector_tiles_from_openstreetmap-hd_30636_30755.png foss4g-2016-1144-create_vector_tiles_from_openstreetmap-hd_30756_30923.png foss4g-2016-1144-create_vector_tiles_from_openstreetmap-hd_30924_30983.png foss4g-2016-1144-create_vector_tiles_from_openstreetmap-hd_30984_31727.png foss4g-2016-1144-create_vector_tiles_from_openstreetmap-hd_31728_31880.png