OpenStreetMap logo OpenStreetMap

n42k's Diary

Recent diary entries

3D models in OSM?! 3D Model Repository has just launched!

Posted by n42k on 21 March 2018 in English. Last updated on 22 March 2018.

It is with great pleasure that I announce the launch of the 3D Model Repository, available at!

The main aim of the project is to enable a better 3D rendering of OSM data, placing 3D models at everything from landmarks, such as the Eiffel Tower, to benches on the street.

Starting off from my Google Summer of Code project, over the past few months, along with my mentors, Jan and Tobias, I have been working hard on setting up the infrastructure required for the launch, namely a web server and the domain, which have been warmly provided by FOSSGIS. Along with this, some new features and bugfixes were added to the repository, including a PR by dkiselev. Finally, the last few miscellaneous issues before the launch have been resolved, and a few sample models were added to the repository.

On the renderer side, -karlos- has been making great progress with OSM go, having provided us with an easy way to show off the features of the repository. An example rendering can be seen here or in the picture below.

Screenshot of OSM go showing the benches in Viana


Contributions are always welcome, in any form! There’s several ways to contribute to the repository, such as modelling or developing. If you know how to use Blender or SketchUp, you can get started right away modelling features of your town, consult the wiki for more information. Otherwise, if you’d rather develop, you can implement the repository in a 3D renderer (more information available on the wiki and the API documentation), or add new features to the repository itself (a Gitlab repository is available). Other than that, if you have any other idea, make sure to get in contact.

Hope to see your additions!

Call for 3d model repository API users

Posted by n42k on 18 December 2017 in English.

As we’re nearing the launch of the 3d model repository, we now have a test server set up. This means that if you have a tool that could benefit from the use of this repository, you can start live testing it against our API, to support our repository earlier. As this is a closed server meant for testing and only able to handle a small load, I decided against sharing the IP address publicly. If you have an interest in using our API, feel free to send me a private message here to get it!

Additionally, we have decided the 2 licenses we will be allowing users to pick when uploading their models: “Creative Commons CC0 1.0 Universal Public Domain Dedication” and “Creative Commons Attribution 4.0 International“, and are working on acquiring a server for the upcoming launch.

GSoC Diary: Conclusion

Posted by n42k on 25 September 2017 in English.

Google Summer of Code is over, and the 3D model repository was successfully completed, with great results: all the requirements are accounted for, and there were a few extra features implemented.

In August, many crucial features were added: model uploading, map, nightlies, administration of the models, comments and users, and finishing both documenting and implementing the API. I’ve also done lots of polishing, namely in the documentation, caching the models, layout improvements and fixed lots of issues in general, from bugs to simple color changes. The extra features that were added are model editing and revising, letting users alter the submitted models.

Screenshot of the model upload page The model uploading page, allowing users to add new models to the repository, and specify their metadata, including title, description, their coordinates (which they can pick on a Leaflet map), license and transformations.

Screenshot of the model page, showing map view The most noticeable feature here is the marker map, showing the position of the model, as well as the models around it. This is also available as a full page in the ‘Map’ page. The revising feature allows users to upload a new revision of a model they own, keeping its metadata, and the editing feature allows them to edit the model’s metadata. Admins can hide/unhide models. Hidden models are still viewable by other admins. Comments can be hidden in the same way as models. There is also a ‘3D View’ tab, which is displayed by default, which has been the subject of the previous diary entry.

Screenshot of an excerpt of the API docs page An excerpt of the API docs, showing the live testing of the full search endpoint, so that anyone using the API can test the most complex features right in their browser, speeding up development time.

Stay tuned for the next diary entry for the upcoming launch!

GSoC Diary: Backend and the Live Preview

Posted by n42k on 18 July 2017 in English.

With the front end design of the repository complete, I’ve been working on the backend. So far, most of the pages have been implemented, namely the homepage and the model information and search results pages.

Screenshot of the search results page The search page. Note that there’s a single result per page, for testing.

The user page has also begun to be implemented.

Screenshot of the user page The current state of the user page. Notice the presence of my avatar.

It was decided to use the PostgreSQL database, and the Django framework for quickly implementing all these pages. The database schema has also been agreed upon since the last diary entry.

A diagram of the conceptual model for the database The conceptual model that was decided on.

In terms of implementation of this schema into Django models, it was almost a direct conversion, except the tags: we used a HStore field for them, as suggested by pnorman on IRC. The banned_by and banned_date fields were also removed from the user, and a Ban Table was made instead.

Furthermore, since no major issues have come up, I’ve managed to add a commenting feature, so that users can comment on models, and model revisions, to serve as a beginning for editing models. Hopefully this feature will be present at the end of GSoC. I’ve also implemented the live preview, one of the most interesting parts of the project, using THREE.js so that users can see a preview of the model right in the repository, in their browsers, without explicitely downloading a file and opening it themselves. Starting off, it will just support the Wavefront OBJ format.

Screenshot of the model information page The current state of the model information page, showcasing the commenting feature and a model of the Eiffel Tower being displayed in the live preview.

The REST API is also progressing fairly well, most of the endpoints have been implemented, namely the info get and model get endpoints, search by latitude and longitude and the author, category and tag lookups. In the next couple weeks, I will be working on the upload model page, and the administration of the repository.

Copyright note: the Eiffel Tower model was taken from, in OpenCOLLADA format, then converted with Blender to Wavefront OBJ.

The first coding period of the Google Summer of Code has begun! So far, I’ve worked on a draft for the REST API, which you can see here, so that we can iterate on it, and 3D visualizers for OSM can start planning their implementation. I’ve also designed all the web pages that will be used for the 3D Model Repository, using Bootstrap, as can be seen at the end of this entry.

I have also changed how the nightlies were generated from my original proposal, which defined them as a collection of the most important models, to having all the models in the nightlies, so that you can get all files from the repository by downloading all of them. They will be in separate size-limited chunks now, to make it easier to download versus a big file.

Now that my semester is over, the pace should pick up quite a bit, with the full design of the database schema, integration of the web designs into Django and OAuth authentication planned until the end of the month.

Finally, we now have a (possibly temporary) repository on GitLab!

Screenshot of the homepage New design of the homepage, with the new alternative model panel design.

Screenshot of the user page User page design, notice the presence of the user’s description, a list of their models, their latest changes to the repository, and their avatar. The pagination at the bottom was omitted.

Screenshot of the API documentation page API documentation page design.

GSoC Diary: Start of Community Bonding

Posted by n42k on 22 May 2017 in English.

Hi! I’m Pedro Amaro, an undergraduate student from Portugal. Currently, I’m studying Informatics and Computing Engineering at FEUP (Faculty of Engineering of the University of Porto). I will be working on a project for the OSM community for Google Summer of Code 2017. I took a special interest in OSM for my GSoC proposal, as I had used it before multiple times, mostly to know my bearings and also in the FlightGear flight simulator.

One of the most interesting suggested projects, that mixed some of my interests, including 3D graphics and web applications, was the implementation of a 3D Model Repository. This project consists of implementing a repository for 3D models, where users can upload freely licensed models and their metadata to it, so that 3D visualizers can use this data to render beautiful graphics for buildings (such as the Eiffel Tower) or smaller features such as trees. After a lot of back and forth with the project proposal with Tordanik, I submitted it, and around a month later, was accepted.

In my proposal, I had suggested using OpenLayers as the API for drawing maps in the repository, and having the live 3D preview of models be optional. Upon further discussion, we decided to change the API to Leaflet and start working on the preview early in the summer, by June.

To explore both ideas, I built a small demonstration of each, to get acquainted with the tools I will be using, namely Leaflet and Three.js.

Region around the Eiffel Tower, with a popup with a link to the model Leaflet API demo

Interactive Three.js model of the Eiffel Tower Three.js OpenCOLLADA demo

The Eiffel Tower model was made in Sketch Up by joe89v, and exported as an OpenCOLLADA model. The model can be found here.