[OSM-dev] Proposal for Easy Printable Maps [GSoc 2010]
waldemar quevedo
waldemar.quevedo at gmail.com
Fri Apr 2 07:32:37 BST 2010
Hello everyone! This is the first version of my proposal for this year's
GSoC. I thought I should post it to the mailing list to receive some
feedback. Thank you for taking the time to read it!
- Waldemar
Proposal: Easy Printable Maps: OpenPaperMaps
-----------------------------------------------------------------------------
Abstract:
Although there has been many projects within the OSM community that already
provide print support, notably Maposmatic and townguide, there is still a
lot of ground to get creative given OSM open source nature. In this project,
it is aimed to create a web application where the user can customize the way
that she would like her maps to be printed for her use. Also, one of the
objectives of this project is to keep an eye on mapnik new features proposed
for this summer of code related to this same issue.
http://trac.mapnik.org/wiki/GSOC2010/Ideas#BetterPrintSupport
List of Languages known
------------------------------------------
Ruby (8/10): Did an internship at FatStudent where they were using Rails.
I've also used it for some personal projects.
Javascript (8/10): I enjoy a lot programming in Javascript and I am big fan
of jquery.
Python (7/10): Have used it in plenty on my artificial intelligence classes,
and also did used the PyOpenGl bindings for my computer graphics class.
Elisp (7/10): I know it is not the best of skills around but I do enjoy
programming my super text editor.
PHP (7/10): Have used it before for freelance projects, but not using it
seriously since learning Ruby and Python.
C# (7/10): Again for a school project, one of the requirements was to use
only the Microsoft stack, I developed a basic help desk application with
ASP.NET MVC.
C++(6/10): My data structures course was based on C++, I also did some
computer graphics homework with it. This month I have been improving it a
little by reading Mapnik's source.
Java (5/10): I have only used for school projects.
OSM Project Proposal
------------------------------------------
The project will consist of a Django web application that will integrate
several features from other projects. Because this project's main objective
will be towards creating a flexible enough platform for printing
customizable maps, the customizable possibilities of the project can get
very broad. A fully featured style editor like that of Cloudmade but for
paper printing is not a feasible task to do within 3 months, and although
interesting, it could finally become a monolithical pile of code, something
I do not want. I will try to keep it simple so that future customizations
are not a such pain to make.
The project will have two major aspects. The first one, will be creating the
Django application based upon the design decisions that Maposmatic/ocitysmap
have already done (rendering daemon, web service architecture) to integrate
what has already been done by townguide.
Some of ideas for the base project will be:
- POI display selection: Townguide has already addressed this problem.
This would mean integrating this idea to the Maposmatic based project.
- POI icon selection: Implement a way to select the kind of icon that
will represent the POIs.
- Work on overlapping icons: One current problem of townguide is that
when there are several POIs on the same area, it becomes difficult to
discern what is there. This have to be addressed in order to make the map
easy to use.(e.g. if there are 3 restaurants on the same place, show a
number 3, or an index that indicates which places exists there)
- Basic Theme Colour selection: Define several styles like Cloudmade does
which could be selected in order to localize the map.
- Module for uploading styles: I think that it would be fun to provide an
interface for uploading user contributed styles to generate the maps. This
styles could be regular styles or use Cascadenik styles.
- Turning Layers on/off: Mapnik has support for turning layers off/on,
and this is currently not being done by the main Export function from
OpenStreetMap. An option like this would be good for post processing, which
needs vector output.
- Provide different output formats: PDF of various sizes and resolution.
Townguide also has some code regarding this, so I will be basing on that
piece of work.
- Provide different types of layouts: This will involve work on using
Pango Library to do so. The Maposmatic project has a ticket right now
regarding this[1] that could be later merged into the project. The project
to study here is OSM-Atlas[2] which create a pdf atlas from OSM png images.
It uses osmarender/inkscape/pdflatex so maybe better approach could be
thought out.
[1] http://savannah.nongnu.org/task/?9695
[2] http://www.mappage.org/atlas/
The second aspect is to use the new Mapnik resolution features that will
increase the quality of the paper output. Some of this might involve actual
work on Mapnik, so some guidance from the Mapnik project will be needed.
Fortunately, Mapnik was accepted as participant for GSoC this year, and one
of the ideas tackles specially the issue of resolution for the maps.
http://trac.mapnik.org/wiki/GSOC2010/Ideas#BetterPrintSupport
This part of the project on exposing this new functionality from mapnik
through the same web interface. This would involve:
- Tweaking ocitysmap to make it mapnik2 compliant in order to use the new
features.
- Work on adding resolution options to improve the quality of the maps.
If time allows I would work on this (Extended Goals):
- Display cycling and walking routes like OpenCycleMap: This feature
could benefit from the work on the idea from the Maposmatic ticket
referenced above, in order to make the map span several pages.
- Show contours and hill shading
http://wiki.openstreetmap.org/wiki/Contours
http://wiki.openstreetmap.org/wiki/OpenPisteMap
- Collaborate with the Mapnik project expose other Mapnik rendering
options.
Project Schedule
------------------------------------------
Week #1: May 23th - 29th (May 24th Start)
________________________________
These weeks I'm planning on setting up the foundations for the project,
doing the main set up of the appropiate stack for the Django application.
Maposmatic/ocitysmap is already a great source to make a mapnik/osm based
web project so I'm thinking about building on it. This week I will start
work on porting the first features from townguide to Ocitysmap to display
the selection of POIs on the output. Research on whether keep on using the
Pango library which Ocitysmap uses (a big issue since one goals might be to
merge some of the code with Maposmatic), or reportlab which townguide uses.
(40 hours)
Week #2: May 30th - June 5th
________________________________
Now that the infrastructure for the Django application has been set up I
will work on the first features from the project that have already been
addressed by the townguide project. I will start work on the user interface
and work on the set up for OpenLayers. Since the user interface is very
important, and hearing from Maposmatic efforts:
"The main form to select the city has been further improved, with bug fixes,
improved usability, etc. Said like this, it doesn’t sound like a big deal,
but all this stuff is written in Javascript using the JQuery library and
requires careful fine-tuning to be working. We easily spend a day on the
same 20 lines of Javascript."[1]
...I think that I should allow enough time to work on the user interface,
the original idea of the project is 'Easy Printable Maps' after all. Another
source of inspiration for this is Nicholas Marichal idea[2] (40 hours)
[1]: http://news.maposmatic.org/?p=81
[2]: http://wiki.openstreetmap.org/wiki/User_talk:Nicolasmarichal
Week #3: June 6th - 12th
________________________________
I'll continue with implementing a way to choose the icons that should appear
for display when printing within the user interface.
(24 hours)
I will start work on the problems that occur when there are several POIs on
the same place (overlapping icons)
(16 hours).
Week #4: June 13th - 19th
________________________________
I will continue work on the overlapping icons problem and work out a way to
make it easier to understand on the printed map which kind of POIs were
there.
(16 hours)
I expect to begin work on the styles feature for the project around this
time by making available different styles available from the user
interface.
(12 hours)
I'll work on the module for uploading the Mapnik XML styles as well.
(12 hours)
Week #5: June 20th - 26th
________________________________
I'll work on providing different output formats for paper now. Again there
is some code from townguide where I could base upon.
(16 hours)
Work on different more kinds of layouts than the main one offered by
Maposmatic and townguide, like a map that spans on several pages (atlas), or
a really big map.
(24 hours)
Week #6: June 27th - July 3rd
________________________________
Continue work on the different layouts and rendering options for mapnik. (24
hours)
Although it has already been covered by the 'upload your own mapnik style'
feature, I will add the option to turn Layers on/off (16 hours)
Week #7: July 4th - 10th
________________________________
It has been more than a month of coding nonstop this week I'll be revising
my code and work on any features that need more polish before the mid-term
evaluation. (40 hours)
Weeks #8: July 11th - 17th (Mid-term evaluation)
________________________________
Week #9: July 18th - 24th
________________________________
Since the base project should be very advanced by now, I'll ask for guidance
from the Mapnik project to work on the issues regarding Better Print Support
from Mapnik. In case the project has already been taken care of by another
fellow GSoC member, this week I'll revise the code to integrate these
features. These features will most likely be taken care of in the new
Mapnik2 codebase, so this will involve updating ocitysmap to be Mapnik2
compliant.
Week #10: July 25th - 31th
Week #11: August 1st - 7th
________________________________
I planned to use these weeks as buffer time to revise the code and work on
the extended goals from the project. I will work on the documentation,
possible patches that could be useful for maposmatic, deploy of the
application on a server, write missing tests, etc...
Week #12: August 8th - 14th (Firm "Pencils Down" date)
________________________________
Time Available to Work on Project
---------------------------------------------------------------
I will finish school on May 20th, and after that I'll have the whole summer
to work on this project.
Handling Situations (in absence of mentor)
---------------------------------------------------------------
I promise to not become a high load on the mentor, as I can manage working
on my own. The role of a mentor in the end I think it is to give advice to
the mentee without it becoming a such a burden. Still if I have a problem,
the OSM/mapnik communities are healthy enough to answer any question that I
might have. Also, in order to keep my mentor inform on the advance of this
project I will be reporting advances each week and might setup a tool like
Redmine so that he can follow the flow of the project.
Currently involved in?
------------------------------------------
I'm currently busy with finishing school and final projects for artificial
intelligence classes. Otherwise, I'm trying out new technologies all the
time, right now having fun with Django and learning Boost so that I will be
able to contribute to Mapnik in the future.
Hobbies/Interests
------------------------------------------
OpenStreetMap is currently not very known in Guadalajara,Mexico, where I
live, and its OSM map seems to be very far behind from the one from Google
Maps. I would like to see some change in this aspect, since Guadalajara is
the 2nd largest city in Mexico, maybe by promoting it while I'm still in
school or give a there regarding the project.
Regarding my hobbies, I'm currently an active member of AIESEC, so I'm
interested on making an impact through innovation. I also like a lot trying
out new technologies that come from Hacker News from time to time. I like
languages and can speak/read Japanese on a business level.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstreetmap.org/pipermail/dev/attachments/20100402/e55be37a/attachment.html>
More information about the dev
mailing list