a five-day open geospatial workshop
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Mapping Data and Knowledge

Citizen Science in Resource-Constrained Environments



This workshop will provide an overview of the current state of mapping technologies, and teach how to build an offline-capable mapping app that can be used to record field data and then sync-ed to a server when network becomes available. Additionally, by fully understanding what makes today’s applications do their magic, the attendees will also learn about the sociocultural and legal issues that are important in determining who can access and reuse data, and the steps that will minimize or eliminate hurdles.

Who should attend

This is a hands-on intermediate-to-advanced workshop to learn how to create map-based data analysis and visualization applications. It will introduce and take you through advanced concepts in data acquisition, management and use, and also legal aspects (open source vs. proprietary), but we don't want to classify the workshop as advanced because the apps you will build will not be suitable for launching a company and becoming a millionaire. However, you will certainly learn enough to build your own apps for education and citizen science. It is a workshop for you if you are interested in using software tools to build tools and manage and analyze data, and are also interested in the non-technical factors that may affect your work both negatively or positively. This is not a delivery-only workshop, but a workshop leading to making an app or two. Therefore the participants need to have an interest in making or learning-by-making.


  • Desire to build open source web mapping applications
  • Familiarity with Unix-style commands
  • Working knowledge of JavaScript, server-side/asynchronous programming a plus
  • Knowledge of HTML and CSS
  • Have own laptop with node.js, npm, the node package manager, and a code editor of your choice installed. If you have a Mac, you will need to have Xcode installed.


Our objective is to not just teach you about the technology and workflow but also the associated sociocultural and legal issues, and in that process, hopefully help you appreciate why choosing the right license, being open, and collaborating with others is very important when working on the web. By the end of the workshop, participants should:

  • Learn how to find free and open geo data
  • Understand how to create an interactive map from data
  • Be able to debug a web mapping application
  • Know how to choose a data dissemination method
  • Be able to conceptualize a full stack web application
  • Work collaboratively on coding projects
  • Know how to choose a license
  • Become familiar with the legal issues surrounding data acquisition, manipulation, and use

Why JavaScript?

As you can see from this README, we will be using many different technologies. But the glue language for all these technologies will be primarily JavaScript. We have chosen js because we want to avoid language wars (none of us believe that any one language can do everything), js is present on everyone's computer because it is the primarily programming language in the browser, and learning server-side js can help one do both server and client work with the same language. But, more than anything, js is a modern, capable, fast language that is fun to develop with, and has a very rich community of developers who contribute reusable code in the form of packages that can be easily installed using npm.


The full workshop will last five days. Each day will be a mix of mainly technical subject matter supplemented with relevant social/cultural/legal aspects at the end of the day. The structure of the workshop is as shown below:

Day 1: Introduction

Time Activity
09:00 AM-09:30 AM Intro and goals
Who we are and workshop goals
09:30 AM-10:30 AM Overview of the web mapping workflow and stack
How to go from data to a sharable URL
10:30 AM-11:00 AM break
11:00 AM-12:30 PM Overview of the technologies of the stack
Introduce the variety of technologies that can be used in each piece of the stack—libraries such as jQuery vs. an model-view-controller (MVC) framework vs. rolling your own, and different backends and why you might use each
12:30 PM-02:00 PM lunch
02:00 PM-03:30 PM Dissecting a mapping app
Demonstrate mapping apps, and also introduce browser-based dev tools for dissecting and debugging. After a couple of examples, point the class to the URL of a mapping app and have them figure out which technology it uses and how it is assembled.
03:30 PM-04:00 PM break
04:00 PM-05:30 PM Technologies behind a mapping app
Computer preparation, installation of software `nodejs`, PostGIS, git, Github or Gitlab, environment, setting up a repository, QGIS, GDAL

Day 2: Working Collaboratively

Time Activity
09:00 AM-10:30 AM git and Gitlab/Github
all about version control and social coding
10:30 AM-11:00 AM break
11:00 AM-12:30 PM Asking questions, finding answers
Stackoverflow, mailing lists
12:30 PM-02:00 PM lunch
02:00 PM-03:30 PM Project websites
Telling the world about your work
03:30 PM-04:00 PM break
04:00 PM-05:30 PM Working collaboratively in the open
Why communities matter and how to be involved

Day 3: Setting Up the Backend

Time Activity
09:00 AM-10:30 AM Data acquisition
Where to find data: portals, APIs, scraping.
10:30 AM-11:00 AM break
11:00 AM-12:30 PM Tile server
static vs. dynamic serving
12:30 PM-02:00 PM lunch
02:00 PM-03:30 PM Data storage
Choosing the correct storage method: relational databases, key-value stores, flat files, etc.
03:30 PM-04:00 PM break
04:00 PM-05:30 PM Legal considerations and hurdles of data
How to not get in trouble

Day 4: Mapping App

Time Activity
09:00 AM-10:30 AM Filtering and querying data
Making sense of data
10:30 AM-11:00 AM break
11:00 AM-12:30 PM Building a web map
A "hello world" web map, three ways
12:30 PM-02:00 PM lunch
02:00 PM-03:30 PM Creating APIs
Why you don't always want to use static files
03:30 PM-04:00 PM break
04:00 PM-05:30 PM Retooling the web app to work with APIs
The basics of AJAX

Day 5: Mapping App

Time Activity
09:00 AM-10:30 AM Building a mapping application
Using open source web technologies to create a responsive web application.
10:30 AM-11:00 AM break
11:00 AM-12:30 PM Building a mapping app… contd.
12:30 PM-02:00 PM lunch
02:00 PM-03:30 PM Building a mapping app… contd.
03:30 PM-04:00 PM break
04:00 PM-05:30 PM URIs matter
bookmark, give credit, cite, return, all of these are possible only because of the URI