Google Summer of Code/2011/Project Ideas
This is our project ideas page for Google Summer of Code 2011.
For more lists of project ideas see the Student projects, and Things To Do pages.
For ideas, please see similar pages for 2009 and 2010. Start sharing your ideas with OSM community by editing this page in the format mentioned, and start a discussion on the OpenStreetMap Developers Mailing List to seek opinions on your ideas.
Data processing
XAPI Implementation in nodejs
The main part of OpenStreetMap is a huge database containing geo data. One of the ways to access this data is the so called XAPI. The XAPI allows xpath like requests to the database of OSM. Currently the XAPI is implemented in GT.M and maintained by one person. Despite the fact that there is an implementation we as community are in the need of a implementation everybody could maintain and improve. More or less at the same time two groups started a reimplementation of the xapi. I'm part of the second group who started an implementation in nodejs and I would like to continue this work with an application to google's summer of code.
Details The goal of the nodejs implementation is to support if possible all kinds of request defined here XAPI and probably add json and pdf output. The major problem will be to maintain good performance while make all kinds of request possible. As the the current code depends on the postgres database schema developed by the OpenStreetMap community one task could be to evaluate the performance of the database and check if database clustering is an option. If the database is the major bottleneck evaluation of different database systems could be an other task. The actual database schema does not support geometry request on relations. If possible I would like to provide a solution for this problem as well.
Great care will be take on documentation, easy setup, testing and integration into the OpenStreetMap community.
Take a look at the code base on GitHub.
People
Submitter: Philipp (borgers@mi.fu-berlin.de)
Optimization of osm2pgsql
Details
osm2pgsql, a C program that is used to create the Mapnik rendering database for OSM's main map is undergoing some work to use PostgreSQL and PostGIS more efficiently. A student would work with the mentor to find a piece of the optimization suitable for their interests and work to complete it over the Summer.
People
Brian and Ian and David Bitner
Post processing tool to apply national defaults
Tagging schemas are usually optimised to be as easy as possible for human mappers rather than algorithmic data consumers. As such redundant data that can be inferred from a combination of tags and geospacial location is frequently not included. This however makes it harder for all the various data consumers to work with the data. Therefore this project is to write a data post processor that can fill out all the defaults into explicit tagging.
Details
Write a program (possibly an osmosis plugin), that takes a description such as "Apply maxspeed=70 mph to all highway=trunc in england that don't have an explicit maxspeed tagged" in a machine readable form and apply it to an input .osm file. It would first parse the input data to determine the polygon from a way or relation.
Optionally, in an extended version, it could also be used to fill in address data such as is_in or addr:country=*, addr:city=* by automatically filling in these tags for all roads from the administrative boundary relations.
Prepared global Data excepts
OSM has a huge amount of data. Unfortunately till this time it's very time consuming for a single person to get global, prefiltered and homogenised data in the common GIS formats (shapefile, KML, ...). Especially the data concerning country and state borders, topologies of places ("bavaria is a country in Germany in Europe"), routes of all kind, POIs by category...
Details Your aim is it, to create a modular system, that distills this data out of planet.osm and converts it for the corresponding formats.
People Submitted by !i!
A database server returning the contents of any rectangular region at any time t
Currently there are a number of servers capable of returning the most recent contents of any rectangular region. The addition of a time parameter will enable the creating of a lot of new tools. For example, with subtractive rendering, users can see what changed in the region they are interested in. See also Planet.osm/full
You can use any database you like (Postgresql / MySql), or write your own. You don't need any knowledge of tagging.
People User:Nic
Vector data squares containing SVG objects
I maps were rendered on clients (in the browser) instead as tiles on the server, much less data needs to be transferred while much more information could be included. In extreme the full raw data may be used which allows additional functionality. Yet that would mean a kind of vector data per map square is needed. While such square may just contain raw data they might be preprocessed into SVG objects.
Details Assume the whole planet is divided into a grid of aproximate similar sized squares (about 1 km2). Each coordinate is located into just one defined square. Way may be fully inside a square or leaving/entering a square, these have to be specially treaded to allow for appending neigbouring squares. So either border coordinates have to be computed which of course have to be identical in neigbouring squares.
These squares might now be used directly online when displaying a map, or indirectly offline when downloaded to a target computer. When used online special care has to be taken for low zoom levels e.g. larger overview squares with reduced data sets.
If these squares were files distribution via a P2P network is possible further decreasing load on the server.
See also http://forum.openstreetmap.org/viewtopic.php?id=11699
People User:Wyo
related work OSMT
Mapping methods
scanaerial
enhance scanaerial automatic mapping tool
Video based speed limit detector
Routing is quickly becoming an important usecase for OSM data, with many hobby and commercial routers starting to use OSM data for routing. So far the tagging of route related attributes is lagging behind somewhat compared to other taggings. One such attribute where OSM lags behind commercial data sets is maxspeed tagging. When looking at the Mapdust, one can see that there are a large number of bug reports mentioning missing speed limits indicating that it is an important property for users.
This project proposal is to create a piece of software to support mappers in adding this tagging. With this, a mapper would use a front facing video camera and record a stream of video, together with a GPS trace while driving/cycling/walking along. The software would then retrospectively analyse this video and detect speed limit signs.
Details
The basic system would require to train a computer vision algorithm to detect speed limit singes in the video stream and the recognize the value of the limit. It would furthermore correlate the video frame with the GPS trace to determine the position of the speed limit. It would then present the information in a way to make it easy for the mapper to verify its correctness and copy it over into OSM.
On top of this, there are a number of additional and interesting things that can be done.
- map the position of the speed limit directly onto a OSM way.
- look at traffic rules to determine when a speed limit is finished. (e.g. speed limits aren't automatically renewed after intersections)
- Improve accuracy of the position of the speed limit by analyzing the speed of the travel and guessing how far away the sign in the video is from the current position
- extend it to other traffic signs like turn restrictions
A similar project was the automatic street sign detector in 2009 which might help in determining scope and provide hints of how to write the detailed project proposal. See also Video mapping.
People
Automatic Street-Sign Detection and Reading 2 (JOSM)
Detect street signs in geotagged photos and read off street names automatically. This project is a continuation of the 2009 GSoC project Signfinder, which provides a proof of concept in C++. The goal would be to create a JOSM plugin that is not only an academic experiment, but really a time saving for day-to-day mapping.
- Improve the sign detection in Signfinder. Currently it is optimized for one particular test case. In reality, there is a wide variety in sign types (colour, shape, font) and photo quality (exposure, perspective and contrast). It is quite a challenge to do this in an efficient and reliable way. As backup plan one could let the user click on the sign with the mouse.
- Create a user interface and integration in JOSM.
- Reimplement in pure Java; evaluate and use free Java libraries. For OCR, it may be necessary to use a native library with Java API.
People JOSM developer team, please ask on the josm-dev mailing list if you are interested.
Android camera application with triangulation feature
This application allows users to take multiple photos of landmarks and other features and then calculates the exact location (latitude, longitude and height) of the feature. Users must then be allowed to associate OSM tags with landmark. The results can then be opened in an editor (like JOSM) for incorporation into the OSM data and uploading.
Additional features: Allow uploading of the photos to a central server when requested by the user. Download of those photos into the editor. Extend the editor to show the azimuth the camera was pointing at.
People User:Nic
I like the idea alot. I would like to take the triangulation as core function for the POI collection and extend it with simple game mechanics. more here User:Yarik
Integrate a bug reporting / displaying tool into the main OSM.org webpage
As with any map, OSM has many errors, be it because of wrong mapping, or because the world has actually changed. But given enough eyeballs, all bugs are shallow. This however requires bugs not only to be seen, but also to be fixed or reported. Although the editing tools are becoming more user friendly, they still provide a significant hurdle.
For quite a while now OpenStreetBugs has existed, which is a very simple text based way to report bugs in which more experienced mappers can then help fixing them. More recently MapDust has introduced a more advanced version of this specifically for routing.
Although these great third party tools exist, they are not always known as widely as they could be, which is why it has been a long standing wish in the community to integrate these projects in some form or another.
The idea of this project proposal is to bring the functionality of OpenStreetBugs and MapDust into the main openstreetmap.org page to increase its exposure to both mappers and bug reporters.
Details
The basic requirement is to write the necessary rails and javascript code for both the front end website integration and the backend database integration for the bug db. This should be fairly easy and a bunch of code already exists in various forms that can be used as a basis.
After that, more advanced features can be integrated to improve the usefulness of the bug reporting, such as notifications of status change, options to categorise bugs, filter bugs, export them in various ways.
An even more advanced version might be able to (at least in the front end) integrate with other quality assurance tools like Keepright, duplicate nodes, or OSMInspector and display these bug reports generated by third party sites back on the main page, to increase their exposure to mappers, too. Some more thoughts on this can be found in the mailinglist thread at http://lists.openstreetmap.org/pipermail/talk/2009-July/038027.html
People
Develop a Simple Mapping Tool for Mobile Phones
Many smart mobile phones are equipped with cameras, GPS, compass and etc., hence it is possible to take pictures and video clips while record GPS trajectory and shooting directions. Assume there is a mobile application that can show OSM on the phones, such collected geotags can be leveraged to map and show the locally stored pictures and video clips on OSM. Some existing mobile applications can achieve this, but none of them cooperates with OSM.
A further step is that when uploading the locally stored pictures and video clips to Flickr/YouTube, the geotags and the URIs of the uploaded multimedia (e.g., permanent links) are also uploaded to OSM. Then, OSM can add one more layer to map and show the pictures/video clips to the public.
Details
It can be started from one mobile platform, such as android.
People
Submitter: Zhijie Shen (zjshen14@gmail.com)
Mobile Application to Crowdsource Sidewalk/Bicycle Infrastructure
A simple application for systematically cataloging our sidewalk and cycle infrastructure. Google is offering a “walking” option in Google Maps and yet there is no way for users to dynamically upload information for this data-set. Roads are a common mapped asset but sidewalks are not. We need to start a process of adding pedestrian and cycle infrastructure information to all maps that are used for getting directions. In short, we need a "Sidewalk" layer in Google Maps and this application can go a long way to help that happen. Gaming mechanics could be used as an incentive for users. In theory, sidewalks and cycle routes could be "snapped" to the adjoining road in the vast majority of the cases. Fixtures such as crossings, bike racks, etc could be marked on the map by choosing the fixture from a list. C
Condition could be marked by selecting a segment and then using a slider to mark condition. Condition is important when mapping because unlike cars, if the sidewalk is severely broken, it may be actually impassible for some pedestrians, especially the disabled. In the same way construction information is being provided and used when giving directions, poor quality sidewalks and routes could be annotated and articulated in a caution to pedestrians.
Details Should be developed for iPhone and Android phones. iPad compatibility might make the application more usable for planning departments and consulting agencies.
People
Submitter: Sid Burgess (sidburgess@gmail.com)
POI Collector for tablets and other touchscreen devices
We do not have a native open source POI collector app, and you know OpenLayers and touchscreens are no good friends yet. I am missing it every time I walk by an unmapped POI or a POI lacking some detail. Every existing application is too complicated, I just want to fire up the app and enter the information without complicated submenus or excessive keyboard usage. (Kind of "drive-by mapping".)
Details 2011 might be the year of tablets. We need a native app, in the best case running on all tablets and most phones. I propose a solution in Qt Quick as it works on Android, Meego, iOS, Windows Mobile and the common desktops (Windows, Mac, Linux). The app should support area POIs as well, that makes it already better than the closed source Mapzen POI collector. To make it comfortable, it should rely on tag presets for common POIs (look at JOSM's autocomplete for example) and follow mobile design guidelines.
People
Finish OpenStreetBugs rails port
OpenStreetBugs was ported to rails to be integrated into the main website. The port was never finished and development stalled. The student should have knowledge in Ruby on Rails, Javascript and Git.
JOSM Audio Waypoints (an audio analysis project)
To analyse an audio commentary to identify and timestamp verbally identified information.
Details
One method of mapping is to make a GPX track and a continuous voice recording. A mechanism already exists to synchronize the audio with GPX waypoints/named trackpoints, so that you can click a marker and hear what you said at that point. However, this depends on pressing a button on the GPS device to mark the waypoint (sometimes many buttons). It would be very convenient if the audio markers could be generated by recognising a word or phrase within the audio track instead (then there are no buttons to press). For example say "MARKER: Wibble Street" and we can get a button at the word MARKER.
Integrating with JOSM is straightforward, so the task boils down to analysing a WAV file (specifically WAV, please, because of the limitations on the Java audio playing library and also the ability to vary speed and have easy direct access to jump to a particular timed point in the recording) and creating a list of timestamps at which the chosen phrase is present. Ideally the phrase should be determined by a sample recording or recordings (so it can be trained). It needs to work in a relatively noisy street environment (so should probably err on the side of more rather than fewer false positives) and needs to cope with recordings of several hours and hundreds of instances of the key phrase. Ideally written in Java for easy creation of a JOSM plugin at some stage. The final list could be a separate structure (e.g. an XML file) or could be appended to the WAV file as a set of labels (WAV supports this).
While this could be done from scratch, it would be more likely that an existing open source audio analysis library would be used as a starting point. The problem with most existing libraries though is that they expect a conversation (e.g. a set of voice commands) or to transcribe. They aren't looking for needles in a haystack of noise and irrelevance, which is what this project is about.
People
Submitter: David.earl 19:38, 21 March 2011 (UTC) (carried over from 2010)
Possible Mentors: David.earl
SVG Editor
SVG are very well suited for displaying and editing of vectors as they are used in OpenStreetMap. So it would make a lot sense to use SVG for editing OSM data.
Details There already is a proof of concept (http://forum.openstreetmap.org/viewtopic.php?id=9254) which showed it's possible to use SVG. And there's a project page, see SVG-Editor
People User:Wyo
Scripting API for JOSM
In Java it is easy to hook into a running programme and execute code in script languages such as Python, Ruby or JavaScript. The necessary infrastructure is already implemented in an existing plugin. However, script authors still need to make themselves familiar with JOSM's internal data structures in order to write useful script plugins.
The goal of this project is to design and implement a scripting API for JOSM. For the most common tasks, e.g. creation and manipulation of osm objects, there should be an easy to use framework.
People JOSM developer team, please ask on the josm-dev mailing list if you are interested.
Maps and outputs
Map Stylesheet Generation Tool
Mapnik is capable of generating some very detailed maps using OSM data, as shown on the main OSM map page. The stylesheet required to give this level of detail is extremely complex and difficult to edit. A tool to create a stylesheet based on either a simple configuration file, and/or a graphical interface would make it easier for people to create their own map styles with different features switched on or off as required. See also: Cascadenik, Spreadnik
Simplified Map Rendering
Setting up the toolchain required to generate maps from OSM data using mapnik is extremely complex - you need to install a database, configure it, install python, compile mapnik etc. before you can think about designing your map style. This makes map generation too complex for anyone not familiar with installing and configuration of software. Making a way to package the toolchain so that it downloads the required software and configures it means that users can concentrate on map design and not on software configuration. To get maximum use it will need to work on a number of operating systems such as Windows and MacOs as well as linux. See also Tilemill, Maps on a Stick
Improve khtml maplib
Khtml maplib http://khtml.org/osm/v0.90/ is very fast but buggy. Improving this lib would be cool.
Notes:
- There is a diploma thesis project going on on this topic at http://www.gis.hsr.ch/ . --Geonick 00:00, 1 April 2011 (BST)
3D model repository
The third dimension comes more and more a topic for OSM, see 3D Development. But the possibilities of detailed modeling are very restricted within our own data. For that reason, there should be a spin-off project, where you can upload and reference 3D models of buildings or general objects of the public infrastructure. Details Significant milestones would be:
- pick good 3d data formats
- georeference this 3D models
- link 3d model -> OSM ("this is a model of the Golden Gate bridge in San Francisco")
- link OSM->3D model ("all bus stops in Rostock look like this model")
- generic models that can be repeated to fill an area ("allotments consist of small fields with little houses")
- adaptive models ("a building block looks like this but the entrance can varies", "at night there are this lights",...)
- model preview in Browser (static rendering or WebGL)
- repository management (users, models, model versions, attributes,...)
- toolchain with 3d modeling and photogrammetry tools
People Submitted by !i!
I'm interested in but a mentor with more experience in 3D would be great.
- Here is the proposal [1] --!i! 09:28, 25 March 2011 (UTC)
- As it wasn't accepted I hope to getting started next year: Open3DMap --!i! 08:15, 1 December 2011 (UTC)
OSM 4 games
Even if OSM is a serious project, there would be a nice way to bringing our data to public, by creating game maps out of specified areas in the world.
Details Your mission is to create a modular framework, to allow creating maps for different games, easily. Some milestones:
- check out the open source games market and pick some target plattforms [2],[3], [4]
- get knowledge in different games map techniques (tile based, layer based, vector based,...)
- create basic editor, dealing with OSM data processing, map generation settings,...
- create basic interfaces and class skelletons for the generic game map types
- create classes to write game map data for specific games
People Submitted by !i!
I'm interested in, but need some time to checkout if GSoC would work for me --!i! 08:20, 23 March 2011 (UTC)
If a mentor is needed, I am interested. However, I don't see how this project is improving OSM in general Melaskia 18:48, 24 March 2011 (UTC)
- That would be great. I think OSM benefits indirectly:
- spread out the word to the gamers communities
- show up the possibilities of free geodata
I agree that there are other ideas where our community will take more advance but I think this idea is quite innovative (but correct me if I'm wrong) --!i! 21:04, 24 March 2011 (UTC)
I've been thinking about a similar idea for a few months now and I'll start working on it in a few weeks time. The idea is more precise as I've had time to do a lot of thinking but basiclly the same. I'd be happy to benefit from a mentor during the GSoC to work on this. And if I may :
- It will add visibility to the OSM project and this is great
- It will show the flexibility of the map format
I'll apply as a student with the detailed idea as soon as the applications open, and I hope someone will be as interested as I am. --MathieuLoutre
- That sounds great, if you like, you can do the job, there are still some other very interesting ideas around here. I guess than I take the thing with the 3D repository that might become interesting for this project, too. --!i! 09:26, 25 March 2011 (UTC)
Map animation suite
There is currently no tool to do animations on top of OSM maps. That can be a virtual flight down to earth or following your recorded GPS track of the last vacation. Due to the massive work of building a simpley desktop GIS, it is highly recommend to base upon existing tools as World Wind, QGIS or OpenJUMP. Be aware that you doesn't reimplement functionality, that could be easily done with movie direction software e.g. with Kdenlive.
Details
- Display OSM maps (fading between maps,colours,...)
- Control Viewport (keyframe based, flying along a path,...)
- let users implement own layers (e.g. for history animations,...)
People Submitted by !i!
Routing
Improvements to the Open Source Routing Machine (OSRM)
OSRM is a high performance routing engine that is able to handle massive amounts of queries in real-time. Unfortunately, preprocessing the planet takes roughly 3 hours and occupies lots of RAM. The idea of this project proposal is to bring additional functionality to OSRM that allows for fast real-time updates and faster preprocessing as well as (near) real-time updates.
Details
The basic requirement is to implement preprocessing and routing algorithms that have been published in academia, but have not yet made it into any publicly available implementation. While the implementation needs a skilled C++ coder with a working knowledge of graph algorithms, it is quite straight-forward how to implement these changes. At first one or two smaller implementation tasks will help the applicant to get to know the OSRM source code. For example the driving directions code is not yet completed. After that, more advanced features can be integrated to improve the routing experience by incorporating different cost metrics and last but not least to have a metric independent preprocessing.
People
Submitter/Mentor: Dennis Luxen (dennis.luxen@gmail.com)
waterway router
Currently there seem to be no routing application for navigating along waterways. But this is very useful in countries with a lot of lakes that are somewhat connected and can be shipped for example by canoes. See OpenSeaMap, Freie Tonne and Whitewater Maps.
Details First you need to analyse the current data schemes and already stored datas. You might need to extend this scheme (stream direction, abilities for shipping by different vessel types,....) and determine the data quality for routing (unconnected ways, surrounding by waling and carring the cannoe). Next you need to create a basic routing engine and determine some route quality criterias (power of streaming, nature reserved, possible stops,...)
People Submitted by !i!
Fast track Deployment of Customized OSM Tile Server
Details
This will include to make a installable package which will includes all the things which are required while Installation of OSM Tile server, and will be installed with an easy command. So that anyone can start with the development of openstreetmap quickly or we can say If any one have done this job earlier manually and now he wants to do it automatically not with the extra overhead of Installation procedure and also want to set up it in a short time then this package will fully meet his requirements. OSM Development environment will include:
- Easy installation of OSM Tile Server along with its database (Preferably for Linux Systems)
- Automatic updation feature which can be on regular or weekly bases will be included in it without doing it setting up manually.
- Installation with local language fonts (If any want to set up the map server for his particular area with his language) then it will ask to install it with that language.
- Search feature to use it easily like If any one only want to setup a server for particular area like http://www.openstreetmap.org.in
This will also include a good documentation with tutorials so that If any one wants to learn the procedure of all this he can do easily. Once this project successfully done will be maintained with patches and with newer versions with Improvements.
To do this all task shell scripting and python scripting will be used and some JavaScript and PHP will also be used.
One thing is sure that this will always Inspires the new and more and more developers to get into OSM Development quickly. Which in result will help to make the open-street best.
My previous work can be find on this link. http://202.164.53.116/~parveen/osmpunjab/
--Parveen Arora 19:15, 5 April 2011 (BST)