The Geospatial Landscape
Overview
Teaching: 20 min
Exercises: ?? minQuestions
TBD
Objectives
TBD
Goals / Objectives
After completing this activity, you will:
- Understand the difference between various approaches to geospatial computing, and their relative strengths and weaknesses
- Be aware of the many GIS applications currently available
- Be aware of R and python packages that can access and process spatial data
Standalone Software packages
Most traditional GIS work is carried out in standalone apps that aim to provide end-to-end geospatial solutions. These apps are available under a wide range of licenses, and for commercial software, price points. Some of the most common are listed below.
Commercial software
- ESRI (Environmental Systems Research Institute) is an international supplier of geographic information system (GIS) software, web GIS and geodatabase management applications. ESRI provides several licenced platforms for performing GIS, including ArcGIS, ArcGIS Online, and Portal for ArcGIS a stand alone version of ArGIS Online which you host. ESRI welcomes development on their platforms through their DevLabs. ArcGIS software can be installed using Chef Cookbooks from Github.
- Pitney Bowes produce MapInfo Professional, which was one of the earliest desktop GIS programs on the market.
- Hexagon Geospatial Power Portfolio includes many geospatial tools including ERDAS Imagine, a powerful remotely sensed image processing platform.
- Manifold is a desktop GIS that emphasies speed through the use of parallel and GPU processing.
** a combined graphic with logos from all the above apps would be good here **
FOSS software
The Open Source Geospatial Foundation (OSGEO) supports several actively managed GIS platforms:
- QGIS is a professional GIS application that is built on top of and proud to be itself Free and Open Source Software (FOSS). QGIS is written in Python, but has several interfaces written in R including RQGIS
- GRASS GIS, commonly referred to as GRASS (Geographic Resources Analysis Support System), is a FOSS-GIS software suite used for geospatial data management and analysis, image processing, graphics and maps production, spatial modeling, and visualization. GRASS GIS is currently used in academic and commercial settings around the world, as well as by many governmental agencies and environmental consulting companies. It is a founding member of the Open Source Geospatial Foundation (OSGeo).
- As mentioned in the introduction, GDAL is a multiplatform set of tools for translating between geospatial data formats. It can also handle reprojection and a variety of geoprocessing tasks. GDAL is built in to many applications both FOSS and commercial, including GRASS and QGIS.
- SAGA-GIS, or System for Automated Geoscientific Analyses, is a FOSS-GIS application developed by a small team of researchers from the Dept. of Physical Geography, Göttingen, and the Dept. of Physical Geography, Hamburg. SAGA has been designed for an easy and effective implementation of spatial algorithms, offers a comprehensive, growing set of geoscientific methods, provides an easily approachable user interface with many visualisation options, and runs under Windows and Linux operating systems.
- PostGIS is a geospatial extension to the PostGreSQL relational database.

** a combined graphic with logos from all the above apps would be good here **
(bonus content - GRASS Promo vid, mid 1980’s, narrated by William Shatner: https://www.youtube.com/watch?v=cZia3ShzTWM)
Online GUI/ Cloud computing
- Google has created Google Earth Engine which combines a multi-petabyte catalog of satellite imagery and geospatial datasets with planetary-scale analysis capabilities and makes it available for scientists, researchers, and developers to detect changes, map trends, and quantify differences on the Earth’s surface. Earth Engine API runs in both Python and JavaScript.
- ArcGIS Online provides access to thousands of maps and base layers.


GUI vs CLI
The earliest computer systems operated without a Graphical User Interface (GUI), relying only on the Command-Line Interface (CLI). Since mapping and spatial analysis are strongly visual tasks, GIS applications benefited greatly from the emergence of GUIs and quickly came to rely heavily on them. Most modern GIS applications have very complex GUIs, with all common tools and procedures accessed via buttons and menus.
GUI Pros
- Tools all laid out in front of you
- Complex commands are easy to build
- Don’t need to remember fiddly syntax rules
- Cartography/visualisation is more intuitive and flexible
GUI Cons
- Can’t record actions and replay (reproducibility)
- Mostly not designed for batch-processing files
- Limited ability to customise functions or write your own
- Intimidating interface for new users - so many buttons!
In scientific computing, the lack of reproducibility in point-and-click software has come to be viewed as a critical weakness. As such, scripted CLI-style workflows are again becoming popular, which leads us to another approach to doing GIS: via a programming language.
GIS in programming languages
A number of powerful geospatial processing libraries exist for general-purpose programming languages like Java and C++. However, the learning curve for these languages is steep and the effort required is excessive for users who only need a subset of their functionality.
Higher-level scripting languages like R and Python are easier to learn and use. Both now have their own packages that wrap up those geospatial processing libraries and make them easy to access and use safely. A key example is the Java Topology Suite (JTS), which is implemented in C++ as GEOS. GEOS is in turn accessible in R via the sf package and in Python via shapely. R and Python also have interface packages for GDAL, and for specific GIS apps.
This last point is a huge advantage for GIS-by-programming; these interface packages give you the ability to access functions unique to particular programs, but have your entire workflow recorded in a central document - a document that can be re-run at will. Below are lists of the key spatial packages for R and for Python.
R:
spand its successsorsffor vector datarasterfor raster data (NBstarsis a proposed replacement in early development at 2018)rgdalfor an R-friendly GDAL interface- in addition to R’s inbuilt plotting methods,
rasterVis,tmap,mapview, andggplot2for spatial data visualisation.
An overview of these and other R spatial packages can be accessed here.
Python:
Fiona, a Python interface to GDALGeopandasto represent spatial data structures within PythonShapelyfor vector data operationsrasteriofor raster data import and exportpysalfor vector and raster analysismatplotlibfor spatial data visualisation.
Further reading on geospatial analysis in Python is available here (PDF, 2.7MB).
R and Python are, as programming languages, CLI tools at their core. However, using these languages together with an IDE (Integrated Development Environment) application allows some GUI features to become part of your workflow. IDEs allow the best of both worlds. They provide a place to visually examine data and other software objects, interact with your file system, and draw plots and maps, but your activities are still command-driven - recordable and reproducible.
There are several IDEs available for R, but RStudio is by far the most well-developed. Python has a wider variety to choose from, with PyDev and PyCharm popular options.
Traditional GIS apps are also moving back towards providing a scripting environment for users, further blurring the CLI/GUI divide. ESRI have adopted Python into their software, and QGIS is both Python and R-friendly.
Key Points
TBD