Google Summer of Code/2019/Project ideas

From OpenStreetMap Wiki
Jump to navigation Jump to search

This page lists a number of ideas for potential Google Summer of Code 2019 projects. Ideas from previous years are often still good and can be used - see Category:Google Summer of Code ideas. Also check out Research/Ideas (project ideas related to research or academia), Top Ten Tasks (some prominent development tasks in the OSM ecosystem), and existing bugs for more problems to solve.

This page's primary purpose is to help to give potential applicants ideas that they can build on to turn into applications for the program. Members of the community are encouraged to identify ideas for projects here, and whether they would be willing to act as a mentor for a student attempting the project.

Students can base their application on one of these ideas, or on an idea of their own if they prefer. If you are thinking of applying for GSoC, please also read about our expectations for student applications. The Google Summer of Code/Processes page describes the way that we manage GSoC within OSM, so you know what we expect of students and mentors.

This is the list of projects. Please add projects using the GSoC idea template.

JOSM editor

For more ideas, you can have a look at the gsoc-candidate tickets in the ticket tracker.

PT_Assistant

PT_Assistant plugin

Suggested By
Summary
Further development of public transport plugin
Skills
Java


Difficulty
Hard
Possible Mentors
Polyglot, nlehuby, dkocich
Notes
Comments
PT Assistant was developed over the past 3 summers as a GSoC project. There are still ways to improve it further, like checking the stops are in the correct order, on the correct side of the street. It would be beneficial to add the ways adjacent to the stops, before the routing helper is started. A routing helper for bicycle route relations would also be a good enhancement. Bicycle route relations in cycle node networks, have some peculiarities near those nodes, when the nodes are split. See the link to the page containing more details.

Extend Wikipedia plugin for Wikidata

Extend Wikipedia plugin for Wikidata

Suggested By
Summary
User interface for working with Wikidata
Skills
Java


Difficulty
Medium/Hard
Possible Mentors
Polyglot
Notes
The Wikipedia plugin has basic support for wikidata at the moment. I would like a user interface which compares tags/properties. In case the mapper is importing data into OpenStreetMap, it could help create Wikidata entries for these POIs as well, suitably referenced. There is a WDTK Wikidata Toolkit written in Java, which can probably be used (it was added to JOSM last year) and there is this interface: Sophox, which might be useful and another one from Edward Betts: PDF, video
Comments
Suggested demo of coding ability: extend wikipedia plugin or create a separate plugin and add a layer with nodes for wikidata entries which have coordinates. When such a 'node' is clicked, show a dialog with the properties of the Wikidata item.

iD editor

Task Manager integration

Suggested By
Summary
iD is often used as the editor for a task manager, such as HOT Task Manager and MapRoulette. To streamline the workflow for users, it would be great to do task manager things from within iD:
  • locking/unlocking tasks
  • view / change status / marking as done
  • commenting
  • get next task
  • others?
We'll probably want to create a pane for users to manage the task they are working on, as well as url parameters to control what iD shows there.
Skills
JavaScript (d3.js)


Difficulty
Medium
Possible Mentors
Notes

3D and indoor rendering

3D traffic sign rendering for OSM2World

Suggested By
Summary
The OpenStreetMap data model allows for detailed traffic sign mapping, which would improve the visual fidelity of 3d scenes rendered with OSM2World. This project involves, at least:
  • Importing different countries' traffic sign catalogues
  • Rendering of vertically stacked signs, as well as destination signs with labels and arrows derived from turn=* and destination=*
  • Font rendering for signs with custom text, supporting several OSM2World output formats
Time permitting, the student can also work on related tasks such as SVG texture support, localization of road markings, and additional road-side features such as traffic lights or traffic mirrors.
Skills
Java, basic understanding of 3D graphics fundamentals


Difficulty
Medium
Possible Mentors
Notes
The application should note any previous experience with 3D APIs (such as OpenGL, DirectX, or WebGL) or engines. This knowledge is not strictly required, but makes the project easier.

Simple Indoor Tagging support for OSM2World

Suggested By
Summary
While OpenStreetMap is already used to map the world in three dimensions, this is usually still limited to the outdoors. By making use of Simple Indoor Tagging, the OSM2World renderer would be able to create seamless indoor and outdoor 3D worlds. The goal of this project is to add basic multi-level floor layouts, involving rooms and walls, doors and windows, elevators, staircases and other indoor features, into OSM2World's 3D buildings.
Skills
Java, basic understanding of 3D graphics fundamentals


Difficulty
Medium
Possible Mentors
Notes
The application should note any previous experience with 3D APIs (such as OpenGL, DirectX, or WebGL) or engines. This knowledge is not strictly required, but makes the project easier.

GoMap!! editor

GoMap!! & Mapillary: Integrate Mapillary Image SDK into GoMap!! for mobile mapping

Suggested By
Summary
GoMap!! is the best mapping tool for OSM on iOS (iPhone and iPad). It it the best too for #MapWalking – improving OSM while on the go. Mapillary on the other hand is ideal to record information visually to map them later at home. Both use cases should be combined: Thinks that are too complex or time consuming to map right now in GoMap could be captured with an integrated Mapillary image capturing to map later. But also thinks that I just mapped in GoMap benefit from a few images as a form of visual proof and guideline for other mappers.
Skills
iOS


Difficulty
medium
Possible Mentors
For UX and UI Feedback Tordans
Development Zlavergne, bryceco
Notes

Vespucci editor

Vespucci + Mapillary + OpenStreetCam

Suggested By
Summary
Vespucci has long had the ability to take and display geo-referenced photographs from the app, integrating Mapillary and OSC support, and other improvements to the image handling are older tasks that could be tackled in one go.
Skills
Java, some Android experience would be helpful, the ability to type lots of exclamation marks is not required.


Difficulty
easy to medium
Possible Mentors
Notes
any libraries that are integrated / used as a dependency must be available as open source preferably Apache 2.0 licence. Relevant issues on the Vespucci repo https://github.com/MarcusWolschon/osmeditor4android/issues?q=is%3Aopen+is%3Aissue+label%3APhotos

Nominatim

Nominatim is the geo search engine that powers the search box on the main osm.org site. There are a number of enhancements open that fit into the framework of GSoC.

Add Wikidata to Nominatim

Suggested By
Summary
Nominatim already uses page ranking of Wikipedia pages to guess the importance of all the places it indexes. Lately OSM data has also gained a lot of wikidata tags which might provide similar information. The goal of this project is to extend the existing wikipedia extraction scripts to also take into account wikidata. The principal aim is to improve the existing importance ranking. As a secondary goal you should investigate if other data from wiki data might be useful as well in order to improve search result.
Skills
PHP, SQL(Postgresql, Postgis)


Difficulty
Medium
Possible Mentors
lonvia
Notes
The existing wikipedia extract script can be found here: https://github.com/openstreetmap/Nominatim/blob/master/utils/importWikipedia.php

Search suggestions for osm.org

Suggested By
Summary
Providing suggestions while typing in a query in the search box is a standard feature of online maps. Nominatim itself cannot be used for generating such suggestions because it cannot handle partially written words. Full text search engines like elastic search are much better suited for that job. The goal of this project is to set up a database for search suggestions for osm.org. This database must be derivable from the Nominatim database, regularly updatable, be able to handle arbitrary languages and small enough to run alongside the Nominatim installation on nominatim.openstreetmap.org. A possible starting point is the Photon project which creates an elastic search database from Nominatim and therefore already fulfils part of the requirements.
Skills
Java, SQL(Postgresql, Postgis)


Difficulty
Hard
Possible Mentors
lonvia raysonjamal
Notes

Extracting QA reports from Nominatim

Suggested By
Summary
Nominatim contains OSM data in a processed form that allows to discover a lot of inconsistencies. The goal of this project would be to identify possible sources of inconsistencies and write and automatic extraction tool that exports the possible errors to a json file suitable for Osmoscope.
Skills
JavaScript, SQL(Postgresql, Postgis), some mapping experience with OSM


Difficulty
Medium
Possible Mentors
lonvia
Notes

osm2pgsql and rendering

Importing Wikidata into Planet Database

Suggested By
Summary
Standard workflow for creating tiled maps is importing OSM data into PostGIS with osm2pgsql, then designing a Mapnik style that uses SQL SELECT statements to retrieve data to be rendered. Increasingly, OSM objects carry a Wikidata ID, and it is conceivable that a map maker would like to access an object's Wikidata properties when styling a map. A simple example might be looking up names - you might want to render the English name of something and if name:en is not set in OSM but a Wikidata link is present, you might want to use the English name from Wikidata. Since live access to Wikidata at render time is not feasible, a mechanism must be designed that imports selected Wikidata information into the PostGIS database, likely into a separate table or separate tables, so that it may be joined in a SELECT. Some design work will be required because it is not clear whether Wikidata properties should be loaded during or after the osm2pgsql import, and what to do if the OSM data is updated. One might either run regular refresh cycles, or construct triggers on update, or similar.
Skills
SQL(Postgresql, Postgis), C++ if osm2pgsql modifications are made (though a standalone augment-database-with-wikidata program is an option and could then be done in a programming language of choice), experience with Wikidata API or dumps would be useful


Difficulty
Medium
Possible Mentors
Frederik Ramm
Notes

Osmose-QA

Osmose-QA OpenData wizard

Suggested By
Summary
Osmose-QA provide feedback as issue from OSM data to contributor. It also have a part for merge OpenData to OSM data. The result of those merge are provided as advice to contributors: missing data on OSM, OSM objects not found in OpenData, OSM object that can be improved… As the time pass there is more ad more OpenData available to possibly integrate this process. Nevertheless it still require to a python like configuration file and tests. The next step would be to make wizard for new data set from on OpenData. It may be done by generating the python configuration file and run it on request for the contributor.
Skills
Web frontend (JS, Python or other), DevOps (Docker)


Difficulty
Medium
Possible Mentors
Notes

Other

Data QA

Quality Assurance tool for OpenStreetMap

Suggested By
Summary
Identifying data gaps is incredibly helpful in expanding the map to areas lacking it. This tool extracts data from OSM and then categorizes depending on set conditions. This phase would focus on settlements - finding out if they are connected to the national road network, if buildings are mapped, amenities, addresses and foot paths.
Skills
Server side scripting (PHP, Python or other), database (PostgreSQL), simple JavaScript ajax calls


Difficulty
Medium
Possible Mentors
Notes
In 2015 I created a prototype of this (dormant last 18 months) in PHP/MySQL where I first extracted all settlements from OSM country by country, then ran Nominatim to assign them to a region and subregion and then queried Overpass for each settlement to update status to green or red/orange depending on criteria. This allows us to quickly evaluate a regions mapping status - if it is "poorly" mapped or well mapped. A human can evaluate each settlement separately, in this example using dropdowns. Automated processes can be run again and again and upgrade status if applicable (upgrade from none to partial for example). A human judgement is required for marking things green for most use cases though - including imagery evaluator tool I made. When this was run in 2015 it contained 1.4 million rows. The prototype code can be shared to kickstart. Using own local Nominatim instance would be beneficial as usage limitations slow things greatly down.

See also