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.
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
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:
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 |
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 |
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 |
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 |
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 |