GEOG5870/1M: Web-based GIS A course on web-based mapping

Other useful technologies

PostGIS

A addon for Postgres, turning it into a Spatial Database able to serve geographical data and make spatial queries (tutorial).

Node.js

An engine for running JavaScript without a browser, Node can therefore run on the server side meaning you can use one language to develop everything. Node has its own mini-webserver built in. If you just want an engine for running command line JavaScript, there is also PhantomJS.

jQuery

jQuery is the go-to solution for most people for client side JavaScript. It includes libraries for building interfaces and utilising the DOM as well as JSON data.

D3

D3 is a popular JavaScript library for data visualisation.

OpenLayers

Another popular web-based client system, like Leaflet.

HTML5

The latest version of the HTML standard, but the first to be built after the web 2.0 client-side revolution. It includes a great deal of tag-based interaction with JavaScript; worth getting your head round. As with all HTML standards, somewhat inconsistently supported, but more universally treated by browsers than previous standards.

XML

The eXtensible Markup Language. This is like HTML, but rather than having fixed tags, developers can build their own sets of tags and then validate pages written in those tags against their standard. The same XML file can be rendered in multiple ways, from a text file to a map. This makes it an excellent data format. A tutorial is available from the advanced programming course.

SVG

Scalable Vector Graphics. A useful way of drawing graphics within browsers, especially from XML. See, for example, graphics within Wikipedia.

Ruby

A simple scripting language designed for working with the web through Ruby on Rails, but also used for installing programs on Linux through its Gems package manager. A fun Rails for Zombies tutorial is available.

Python

A simple scripting language initially designed for kids, but now widely used across the scientific community. Its strong community support means it has a wide variety of good libraries for all sorts of work, including NumPy for mathematics; Pandas for data analysis and visualisation; GeoPandas for geography; and a GDAL/OGR port for geography. It is particularly good for data processing and text analysis. An increasingly popular application is iPython Notebook which allows one to develop written documents embedding Python for data processing on the fly. The main thing to watch for with Python is which version you need. The easiest way to get iPython Notebook, and switch Python flavours, is to download Anaconda.

R

The statistical package with a strong community support and therefore some good libraries written by people who know their stats. Can be used to generate maps in, e.g. PDF format, but now has Shiney, an addon for web-based interactive mapping.

GoogleDocs

Popular web-based document development option. The spreadsheets, which can be made public or limited to a group, have one-button-push mapping built in, but you can also farm out more sophisticated maps using the GoogleMap API. Example showing a GoogleMap integrating a GoogleDoc spreadsheet and GeoRSS, a method of geotagging a news / social media feed, combined with centring on a user's location.

GitHub

A popular open source software repository based on the version-tracking system Git. GitHub has GeoJSON mapping built in, so it is a good way of building community mapping sites where anyone can upload data, though it has *slightly* more of a learning curve than GoogleDocs. GitHub offers free webspace for individuals and projects through its GitHub Pages initiative. There's a simple GitHub tutorial as part of Advanced Programming.

Social Media APIs

These include Facebook, Twitter, Tumblr, and Flickr. Generic technologies include GeoRSS, a method of geotagging a news / social media feed.

Content Management Systems

These allow you to dynamically generate sites from a variety of sources. Popular versions holding sites in databases than can then be dynamically farmed out with styling include Typo3, Drupal, and Joomla, however, those who prefer detailed control and standard HTML may prefer Jekyll, which builds standard static HTML but with injected headers and footers, for example. This site was built with Jekyll, which provides a variety of templates like this one with sliding sidebars etc. Jekyll is especially well integrated with GitHub pages.

Blogging platforms and site builders

There are a variety of sites offering online space with basic offerings for free or a reduced price. Content management systems set up for blogging either offer free space online (e.g. Blogger; Wordpress) or software you can download and run on your own server (e.g. Wordpress.org). In the case of Wordpress, you can also use both site and software for building more standard sites. Sites allowing you to set up broader sites, especially ecommerce sites, include those listed here.

JavaScript frameworks

There are an increasing number of frameworks written in JavaScript that provide libraries for structuring sites, apps, pages, and styles. Popular examples include Angular, and Dojo. You can find a good list on Wikipedia.

Mobile development

Mobile phones tend to fall into one of three catagories with separate development processes: Android; iPhones/iPads, and Windows Phones. By far the simplest to develop for is Android. For mapping using GPS, check out the MIT App Inventor which provides drag-and-drop 4th generation coding of Android apps. For more advanced stuff the Android tutorials from Google are excellent. On the commercial app side, there's also the new ArcGIS online suite.