We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

An OSM-based 3D Street Map of the Earth

00:00

Formal Metadata

Title
An OSM-based 3D Street Map of the Earth
Title of Series
Number of Parts
295
Author
Contributors
License
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.
Identifiers
Publisher
Release Date
Language

Content Metadata

Subject Area
Genre
Abstract
OSM has long since established itself as the leading global street database. Interactive multi-resolution 3D-globe-streaming technology has been around for quite some time. Yet little effort has been made so far to create a global OSM-based 3D street map. In this talk we will show how OSM, vector tiles and VTS Geospatial can work together to create a global 3D street map based purely on open data and on open-source technology. The crucial steps of data provisioning, 3D map design and visual styling will be elaborated.
Keywords
129
131
137
139
Thumbnail
28:17
Operations researchDisk read-and-write headTwitterElectric generatorMoment (mathematics)Level (video gaming)Presentation of a group
SoftwareTexture mappingHexagonMotion captureMachine visionData fusionVirtual realityArtistic renderingSimulationSoftwareMachine visionMappingNeuroinformatikProjective planeDirection (geometry)Mobile appDebuggerCartesian coordinate systemGroup actionWeb browserState of matterVirtual machineComputing platform1 (number)Client (computing)Goodness of fitOpen setBitWeb applicationSemantics (computer science)Ocean currentWindowGeometryMereologyVirtualizationPlug-in (computing)Physical systemWeb pageOpen sourceBuildingLevel (video gaming)Streaming mediaFile formatData fusionVector spaceForm factor (electronics)Axialer VektorDigital photographyMetric systemHypermediaSoftware frameworkInteractive televisionEndliche ModelltheorieGame theoryContext awarenessEngineering physicsExecution unitGastropod shellComputer simulationLecture/ConferenceComputer animation
HexagonLevel (video gaming)ImplementationLimit (category theory)Computer animation
Source codeGoogle MapsTexture mappingMultiplicationInteractive televisionImage resolutionOpen sourceDiscrete element methodTesselationMappingLevel (video gaming)Closed setInteractive televisionComputing platformSource codeOpen setSatelliteService (economics)BitVisualization (computer graphics)Projective planeInformationDatabaseMereologyDialectGoogolSoftware developerZoom lensLocal ringStreaming mediaHydraulic motorForcing (mathematics)Online help
Hydraulic jumpZoom lens
Forcing (mathematics)Level (video gaming)Boss Corporation
Discrete element methodPoint cloudMean value theoremProxy serverConfiguration spaceSurfaceLevel (video gaming)System callMean value theoremService (economics)Single-precision floating-point formatUsabilityOperator (mathematics)Raster graphicsOpen setSoftwareFront and back endsServer (computing)TesselationWeb 2.0Proxy serverQuicksortVector spaceMedical imagingPolygon meshReal numberProcess (computing)HypermediaMultiplication signPoint cloudVideoconferencingComputer animation
Server (computing)Vector spaceSurfaceFreewareObservational studyVideoconferencingLecture/Conference
Discrete element methodProxy serverMean value theoremConfiguration spaceSurfaceClient (computing)Electronic visual displayView (database)Level (video gaming)Configuration spaceRepository (publishing)Web browserComputer fileCartesian coordinate systemCASE <Informatik>Sampling (statistics)Software repositoryEndliche ModelltheorieWeb 2.0VideoconferencingClient (computing)Online helpComputer animation
Software repositorySampling (statistics)Multiplication signComputer fileComputer animation
Function (mathematics)Formal languageRepository (publishing)Line (geometry)Electronic visual displayInheritance (object-oriented programming)HierarchySoftware repositoryDemo (music)Source codeInformationMultiplication signMereologyRepetitionTheoryLine (geometry)Inheritance (object-oriented programming)Visualization (computer graphics)Repository (publishing)Demo (music)Functional (mathematics)MathematicsHierarchyOffice suiteDialectCASE <Informatik>Category of beingStylus (computing)Computer animation
SineDemo (music)Source codeInformationGamma functionSoftware repositoryDiscrete element methodWeb pageExecution unitSet (mathematics)Repository (publishing)IRIS-TPhysical lawMenu (computing)Vector spaceDirectory serviceChi-squared distributionInstance (computer science)Physical systemState transition systemPlastikkarteNormed vector spaceOrdinary differential equationInstance (computer science)Software repositoryRepository (publishing)Configuration spaceWebsiteHypermediaComputer fileFront and back endsComputer animationSource codeXML
Web browserPhysical lawDifferent (Kate Ryan album)Software repositoryFunctional (mathematics)Dynamical systemKeyboard shortcutSampling (statistics)Stylus (computing)Text editorShape (magazine)InternetworkingProfil (magazine)Computer animationProgram flowchart
Domain nameSoftware repositoryMUDWindowLine (geometry)Computer animation
Web browserLine (geometry)Electronic visual displayServer (computing)State of matter
Special linear groupMenu (computing)Repository (publishing)Software repositoryVector spaceSet (mathematics)Web pageTunisAsynchronous Transfer ModeInstance (computer science)Maß <Mathematik>Physical systemDiscrete element methodMassChi-squared distributionVenn diagramInclusion mapVoltmeterTask (computing)Computer fontNormed vector spaceDampingMusical ensembleRepository (publishing)Source codeComputer animation
Line (geometry)DivisorCondition numberBuffer solutionSocial classElectronic visual displayGroup actionTransportation theory (mathematics)Graph coloringSubject indexingHeat transferBit
Normed vector spaceMaxima and minimaDemo (music)Source codeInformationMetreInheritance (object-oriented programming)Line (geometry)Parameter (computer programming)Stylus (computing)Multiplication signPerimeterComputer animation
Vector spaceCASE <Informatik>Cartesian coordinate systemTesselationService (economics)Cache (computing)Web browserRaw image formatPlanningPoint (geometry)Server (computing)Open sourceProxy serverRoundness (object)QuicksortFile formatCuboidLevel (video gaming)InformationDrop (liquid)CodeGeometryStructural loadFunctional (mathematics)Drag (physics)Discrete element methodControl flowMean value theoremNormal (geometry)DatabaseCloningSimilarity (geometry)Translation (relic)Process (computing)Multiplication signForm (programming)Shape (magazine)Software bugArithmetic progressionDebuggerOpen setStreaming mediaArithmetic meanMeeting/Interview
Transcript: English(auto-generated)
And as we all know that every moment is priceless, and we want to cherish everything. With no further presentation, Ladislaw Horki with an OSM-based 3D strip map of Earth presentation.
Hello, good to have you all here. So I'm going to talk about how to make an OSM-based 3D strip map of Earth using some FOSS technology. Okay, so I'm from Melon Technologies, which is a company, basically we develop software
in 3D mapping business. We have one main project, which is our computer vision and deep learning-driven reality capture, called Vatstena, which basically takes aerial imagery, transforms them using classical photogrammetry
to some, say, geometric reality, and increasingly we use more and more machine learning to transform this geometric reality into semantic reality. So if you've been to this earlier talk this day here about the 3D buildings in Netherlands, so that might be something similar,
just with different approach. And we have a complementary project. This one is closed source, this is our main business. And we have a complementary open source project, which is VTS Geospatial, and it's basically a framework or a system for 3D data fusion and virtual landscape
streaming and rendering. Basically it takes all these 3D models, much more DEMs, orthophotos, vector data, which will be the theme of this talk. You all put this all into the VTS Geospatial, which manages the data, fuses them together, and streams them to various clients
across form factors and platforms. We have also, basically we have WebGL-based, or JavaScript WebGL-based web client. We have C++ client for desktop. We have also a very nice plugin for Unity, which is gaining some speed lately.
Yeah, so that's basically VTS Geospatial. And with just a short stop with the buildings, so probably we'll implement some very interesting new format to basically stream the semantic buildings to the front end. So that's somehow an outlook where,
in which direction we are going. So what are the applications of the VTS Geospatial? So it's VR and AR, so imagine you can write an app when you look out of this very window with your mobile phone, you will see like the street names or important buildings and so on. So that's one of the apps you can write
with VTS, for example. It's good for interactive simulations, gaming, that's the Unity plugin, for example. And of course, 3D Geospatial and 3D Geospatial mapping. So what we are going to talk about now,
we'll take a look at current state of global 3D maps. So what's the status now? How to set up an open OSM-based 3D street map using VTS Geospatial. And we will take a glimpse on how to style your 3D street map.
If you find the last part a bit over the top, don't worry, everything is on GitHub, you just need to fork a repo, you'll get the whole webpage and web application running with just one fork. So it's pretty easy to do. So yeah, I'll just wait a minute so the people can sit down and...
It was the group photo, wasn't it? Cool. Yeah, so you basically just missed everything important. So let's take a look at current state
of global 3D street map. So basically you all know this. There's a good chance you use it every day. So that's probably the only true vector, true 3D street map you may know apart from, I don't know if there are any more implementations.
So this is basically what you know with Google Maps. When you use it, you probably also know the downsides or the limitations or the issues. So Google Maps is mainly navigation service basically. So the map data in there, it's basically a roadmap, there are not many topographic features and so on.
It's proprietary data, you don't get access to them, it's based on closed source technology so you don't even get access to the engine and it can be a bit underwhelming in some regions. If you were to last year's Phosphorgy in Dar es Salm,
you may remember there was some projects regarding this particular village. So this is Zese village in rural Tanzania, depicted on Google Maps base map which is great. You can see nothing basically. So there's no useful map information whatsoever
but when you look at the same place on the open street map, it's pretty rich. So you get streets, you get features, street names and so on. And so yeah, why doesn't Google use open street map? Basically, when will Google mirror this information?
We have no way to push it basically. It's all Google's matter so we need some open source approach when we want to visualize these kind of data. The consequences of basically this approach is you have many mapping projects around the world that rely on FOSS technology
and open data to achieve their goals. For example, the mentioned Crowd2 maps that maps rural Tanzania with some high goals like helping to end female genital mutilation and to aid community development. So these are pretty nice goals.
So as usual, the FOSS and open data are the answer. Basically, now we have all the ingredients we need for fully FOSS 3D street map. We have the open street map, that's the database.
We have FOSS tools to tile or take care of this data, open map tiles. We have global DEMs. We have global satellite mosaic, e.g. Sentinel cloudless imagery. And we have VTS Geospatial,
which is an interactive multi-resolution 3D globe streaming platform which can take care of the visualization part. So this is how kind of Google-ish look, style may look like in VTS. So you see the zoom in, you see the streets or the highways appear first.
Nice, soft, soft styling. You can see the streets appear. When we zoom in, you see more labels, you see street labels finally. And as I said, you can even add your own 3D to the map. And if you look carefully, you may guess
where FOSS 4G North America took place this year. So yeah, that's basically what you can get. Plus, we have solved all these crossing issues already, so this is kind of obsolete. So how to set up an OSM-based 3D street map using the VTS Geospatial.
So we have two basic ingredients, this is data and software. So for the data, we will need global DEM, either like all are kind of open. Esther, SRTM, we picked the viewfinder Pronoramas, which is the most global and most complete data set
crafted by Jonathan De Ferrante, I think. Yeah, Jonathan De Ferrante. I don't know the nationality of the guy. British, British geographer. So he made hell of a job, it's a very nice data set. We'll need global imagery. With the VTS Geospatial, you can use bulk imagery locally,
or you can use imagery provided by TMS, WMS, WMTS. Here we used the Sentinel-2 Cloudless, bulk imagery by the EOX. And we will, of course, need the OSM data, specifically an MVT service on top of OSM data,
where we used the map tile, or MVT, MVT service from map tile cloud. And regarding software, you will need the VTS Geospatial, which is VTS backend. It's nicely installable using single DBN package,
so it's very easy to start with. There are many tutorials on the web how you can basically make it running. It consists mainly of two servers. One is VTS Map Proxy. Just to note, there is an extra talk
just on this very nice server tomorrow, I think, at 11. Andrei is having it in operator room. Basically, Map Proxy is sort of the Map Proxy you may know, but it's just the VTS Map Proxy. It takes the raster data, or the vector data,
and dynamically converts them into resources usable in VTS, which are called surfaces for terrains, and meshes, and so on, bound layers for imagery, and free layers, basically, here, for vectors. So it's a very nice server.
If you want to know more about it tomorrow, talk. Maybe you may want to reserve a spot for that. And then we have the VTS VTS VTSD, which basically serves all the static data. So if you have 3D models in your configuration,
it will serve those. In our case here, when we have just the globe and the vectors, it will just serve the map configuration. It's basically a configuration file you write, where you specify which layers should be displayed, how should they be displayed together. And, of course, you don't only need the backend,
you also need the frontend, where you can choose between the VTS Browser JS, which is the web client, written in JavaScript, and using the WebGL, which we will use, and which is used in GitHub, if you fork the repo. Or you can go for VTS Browser CPP,
that works for desktop. There's some sample application written for that already. So the easiest way, as I said, is just fork this repository on GitHub. We'll probably have some time to have a look how it looks.
It's very simple. Basically, you can fork it, and then you can just, everything is explained there. There are some sample files. You can try your styling or base, like your further work in styling of those files. Like, you can piggy-hag on them.
So, let's have a look at the repo, probably. So how the style, first is how the styling works, basically, some theory. So, we use some Carto CSS, or Mapbox-inspired styling language, that was widely expanded for the purposes of 3D.
The styles are stored as a JSON. It's property-driven styling. So, for example, you can make the style change based on, like, pig height, or something like that. And there's lots of Cartography-oriented functionality. As I said, the repository contains some predefined styles,
which you can start with. So, the predefined files, or styles, basically show how to display lines, how to do some filtering in the OSM data, how to draw lines without lines, that there are some functions you can use,
that you can use inheritance in the styles, how to display labels, and there is some short mention of visual hierarchies. So, let's have a look at the live demo. I'll probably just browse it. I'm not sure how much time I have left.
Seven minutes, that's cool. Yeah. So, that's pretty cool. So, if we go to the GitHub. So, this is the repository. You have, like, a nice tutorial, how to work with the repo, or how to set up your own VTS backend instance,
what configuration file to put where, and so on. So, this is pretty straightforward tutorial, and here you have basically self-contained website running on GitHub pages, where it's like the last full-fledged style. I already zoomed to Bucharest in different tabs,
so let's see how it looks. So, for example, now we already have those very nice, like, dynamic street labels. So, you can see the street, the labels actually crawl on the streets,
follow their shape, which is kind of nice functionality. So, yes, and if you are going to play with styles, there's also some, like, magic keyboard shortcuts how to edit the style. They are described in the repo. So, we can try how some of the sample files
look like when you, like, use this style, so. I'm going to open the style editor, yeah, which is here, and I'm going to open one of the sample styles. So, let's look at some simple one, if the internet allows.
Yep. So, let's just have a look how to display, basically, all lines. So, it's very simple, of course, because it's very simple. So, just copy this and put it into the style editor,
and update the style. Basically, it only says I'll use, like, one layer. These, basically, are arbitrary names. It says just display. If it's line feature, display it, and somehow make it slightly visible through the terrain if it's hidden by the terrain.
So, now we get all the lines that are coming from the server. So, you see on the lower LODs is just state borders. When you get closer, it's like the major roads. When you get much more closer, it's much more roads.
And basically, you can start to build on top of that. There is a whole documentation how the styling works, which is, I don't know, which is here.
Basically, there's a styling reference linked to another GitHub repository. We can have a look at some more styles, I think. So, there is some, like, how some basic filtering works.
Let's put it in there. So, basically, it just says, again, let all the lines display just for context, and add some extra layer, which is motorway. And basically, it says display only,
features that match the following filter. It's all it has, basically, the group equals, the group is transportation, and the class is in motorway. And all those conditions have to be fulfilled.
So, it's kind of, if you know the buffer-like syntax for conditions, so this is similar approach. And again, if it's line, display it, make it a little bit wider, and yellowish color. So, let's see how it looks like. And we should see some highways, yeah.
We got some highways here. So, basically, yeah, you can work from that. I can look into some more styles. Here's how we can draw outlines.
Basically, you draw the line two times with some different parameters. You may notice that many of the parameters are the same. So, there is think, you can do inheritance in the styles, so you can make motorway base,
and then motorway outline, which inherits the base, and just changes a few parameters. So, yeah. That's about it. And it gets more and more complicated, as you basically wish and depending on what you want to achieve.
Yeah, I think I can turn this on again. Okay, and I think I'm pretty much finished. So, if there are any questions. Thank you very much. Let's have a round of applause for Vladislav. Thank you.
Five minutes of questions, so don't be shy. Since I beat them to ground with all the technical stuff in the end, as usual. Okay.
Where is the OpenStreetMap saved? It's PostgreSQL database as usual, or where are the vector data saved? So, the question was where the OSM data are kept, in this case. In this case, yeah, thank you. So, in this case, we are not using
the raw OpenStreetMap data. We are using already a service built on top of them, the Mapbox vector tile service, which is streamed from MapTiler, in this case. But otherwise, yeah, basically, so far you need the MBT service, but there are open source tools,
so you can basically build it on top of your own clone of OSM database with open source tools. So, it still counts as open source, I would say. Other questions? Okay.
So, the question was if the data format is JSON or another format, you mean for the vector data? The map proxy can consume shapefile too. Basically, the map proxy, regarding the vector data,
it can consume any OGR readable format. So, you can go with shapefile, with geo package, even with CSV, I think. But what gets streamed actually to the front end, to the browser, it's sort of GeoJSON. Basically, map proxy translates everything
into some sort of GeoJSON that's streamed to the front. No, you would have to write your own application based on that, but yeah.
The data are coming from the server. You have to put them on the server. It's not like drag and drop in the browser. But I think the browser supports, basically, a native GeoJSON, so it has like the, it's not like drag and drop, but the API has a function like load GeoJSON, so you can just, yeah.
You mentioned that the tiling you should do by ourselves. Is there any plans to do some kind of tiling cache or to make them available, same as there is tile for OSM? So, the question was if you can, if we can do our tiling, or.
Instead of each of one of us doing his own tiling, is there a way to get a cache tiling from OSM? Is there a central infrastructure, the similar way you can get 2D tiles from OSM? Basically, it's basically using 2D tiles. So, maybe what wasn't as clear, what map proxy does,
it gets normal map box vector tiles, like 2D vector tiles you would get from any service that supports MVT. And it takes global terrain and basically height codes all the features with the height from the DEM. So, it basically works with usual 2D tile vector data.
So, if this answers your question, we don't do the tiling ourselves, but there are many services that already offer like 2D tiling of vector data. Okay, so 2D tiling plus height information and not 3D tiles. Yeah, yeah, it's not like the cesium 3D tiles.
No, it's just. That's a good point. Yeah, it's just 3D information contained in the tiles. Thank you. So, thank you so much. Thank you Ladislav.
Thank you. And we're gonna have seven minutes of break.