Project Details
Project Title: Mapknitter Image Management and Synchronous Editing
GSoC Project: https://summerofcode.withgoogle.com/projects/#5444556055642112
Open source Platform Used:Github
Github Organization Page:Publiclab
Repository Contributed to:mapknitter
Website: Mapknitter.org
Languages/Framework Used: Ruby on Rails, JavaScript, HTML/CSS
My PublicLab Profile:https://publiclab.org/profile/divyabaid16
Project Description:
MapKnitter is based around the upload of images, the positioning of those images on a map, and the compositing of those images into map export formats. This project idea focuses on the systems for tracking changes on those images, collecting them into sets, storing image history, and other improvements which we hope will simplify and reconfigure the MapKnitter codebase.
About Mapknitter
MapKnitter is a free and open source software created and run by Public Lab. MapKnitter is hosted through a donation of server space byRackspace.
MapKnitter can make maps from any image source, but it particularly lends itself to making maps with balloons and kites. The manual process of making maps with MapKnitter differs greatly from automated aerial imaging systems. In those systems, the imaging is of higher precision and processed with spatial and telemetry data collected along with the imagery, typically at higher altitudes and with consistent image overlap in the flight path sequence.
With MapKnitter the cartographer dynamically places each image and selects which images to include in the mosaic. Although the approaches are similar in that they use some type of additional information (usually pre-existing imagery of a lower resolution) as a reference, and that they are bound to specific cartographic elements such as map scale and map projection.
Community outreach and First Timers only issue
Public lab has always been a welcoming and beginner friendly organizations that especially guides all the newcomers have a smooth process from start till the end of their first contribution. It follows a first-timers friendly template that is easily understandable by anyone new to the community or open-source, that shows all the steps to follow for the first successful Pull Request.
First Timers issue created by me in Mapknitter:
First Timers issue created in Plots2:
Community outreach
I, along with 3 other students conducted a successful outreach event in our University which had more than 250+ participants where I delivered a talk to encourage students into open source, GSoC and to bring more contributors to Public Lab. It was my first talk and I had an amazing experience, I really loved motivating others and answering their question. I have also written a blog on this.
Link: https://publiclab.org/notes/divyabaid16/08-19-2019/public-lab-outreach-event-jaipur
Code Links:
Commits: https://github.com/publiclab/mapknitter/commits?author=divyabaid16
Pull Request: https://github.com/publiclab/mapknitter/pulls?utf8=%E2%9C%93&q=is%3Apr+author%3Adivyabaid16
Issues: https://github.com/publiclab/mapknitter/issues?utf8=%E2%9C%93&q=is%3Aissue+author%3Adivyabaid16
My involvement in the community ( in the form of comments ):https://github.com/search?p=1&q=commenter%3Adivyabaid16+org%3Apubliclab&type=Issues&utf8=%E2%9C%93
Link to contribution graph during GSoC Period : https://github.com/publiclab/mapknitter/graphs/contributors?from=2019-04-09&to=2019-08-24&type=c
Features Added:
Image Ordering in sidebar:
Previously, the images were ordered on the basis of the time of creation. I have added the feature to order the images based on Name, alphabetical order, size of the image and the time of creation of the image.
Issue: 638
Multiple Image export:
Images export is a very good function of MapKnitter that helps users get all the images in jpg, zip, and GeoTIFF format. Previously, all the images of the map were exported and then the user would download the entire zip which contains the Knitted images.
Now, with multiple image export, which will be merged soon, the user will be able to select only the images he would like to export and just download them.
I have also written a blog on multiple image feature showing more details associated with it. https://publiclab.org/notes/divyabaid16/07-03-2019/mapknitter-multiple-image-export
Issue: 659
PR: 693 (Not merged yet)
Version tracking of images:
History associated with each image is stored in the database. This is helpful to track all the updation made on the image at what time and by whom. Since multiple people can update a single image, this feature is very helpful. I developed this with the help of Paper trails gem in ruby. Also this was a key feature as part of my GSoc project. The first version that is displayed shows that the image is created. It displays the user name and the time of the creation of image in **ago word** form for example (Created by xyz 1 hour ago). And for the rest, it is image modification which is shown as a list of new versions which contains with it the information of the user who modified it and how much time ago it was modified.
I have also written a detailed blog on functioning of image history storage.
https://publiclab.org/notes/divyabaid16/08-14-2019/image-history-version-tracking-mapknitter
Issue: 682
Toggle between list view and grid view of images:
This is a UI Improvement in which the images can be viewed as a list as well as a grid depending on the choice of the user. The list view shows all the details associated with the image that includes, name, size, and other functions associated with the image like Pan to the image, delete the image and download the image. The grid view is simple and can be viewed as a photo gallery where only the picture, like thumb nail is shown hiding all other details.
Issue: 724
PR: 738
Addition of anonymous Map option:
With the upgrade to Mapknitter3, I found a suitable place and added the option to create a map anonymously. To create a map, a user must login but Mapknitter also provides an option to create map anonymously in which no one has the ownership of the map. Here, I highlighted some drawbacks of making a maps anonymously and encouraged user to create an account or login and then create a map, which definitely opens more features for the images.
PR: 820
Addition of Map and image gallery to the tags page:
Here, I used leaflet's getBounds feature to pass all coordinates in to calculate the bounds which includes all the maps associated with the particular tag and displayed the map on the top of the page. Leaflet is the leading open-source JavaScript library for mobile-friendly interactive maps using which we can choose combinations of layers to display on the map and has other features associated with the map. Further, I added the gallery template to make the page look complete.
Issue: 807
PR: 821
Search maps by location:
In the gallery page, I added an option to search the maps by location making searching easier for the users if they want the list of a map that belongs to a particular region. (This is not merged yet).
PR: 924
Designing a Login Modal:
I designed a login modal with bootstrap 4 panel that displays as popup whenever a user clicks on the Login button.
Issue: 716
PR: 717
Other small fix:
Small UI Improvements, bug fix and documentation issues solved during the GSoC phase were:
UI Improvements: 653, 689, 692, 799, 801, 802
Ongoing issues:
Ability to apply filters to images:
Add filters to images with image sequencer and show the updated image. Also, store the history of all the filters added to the image and display them.
Issue: #932
Future scope for new developers:
- View of all images for a given region in maps
- Refresh background images while dragging
- Ability to choose time bounding box (some kind of layer manager may be needed)
Acknowledgement
My mentors:
- Liz Barry
- Sourav Sahoo
- Sidharth
- Cess
- Gaurav Sachdeva
- Jeffrey Warren
Thank for for always guiding me and helping me in all the possible way. You all helped me to gain a lot of knowledge from Day 1. I am more than grateful to you all for being the best mentors.
5 Comments
@warren @gauravano @cess
Reply to this comment...
Log in to comment
Great post @divyabaid16!!! The summary of all the issues is great and references are really helpful. Your work really made Mapknitter better and great work.
(P.S: The PR and issues link needs to be corrected to point to GitHub)
I corrected it. Thanks you for your feedback :)
Reply to this comment...
Log in to comment
@gauravano awards a barnstar to divyabaid16 for their awesome contribution!
Reply to this comment...
Log in to comment
Great post @divyabaid16. Really love the explanation of what Mapknitter as a project is ❤️ ..maybe we should add that part in readme :), very comprehensive.
The features you added on the project are awesome. And thanks for creating a lot of first timer issues 🎉 🎉
Reply to this comment...
Log in to comment
Login to comment.