Programming and Development

Computer programming and development are critical to the past, present, and future of geospatial systems and techniques. The increasing ubiquity and diversity of online, mobile, and desktop GIS platforms along with the inclusion of cyber-infrastructure components within the bounds of geographic information systems (e.g., supercomputing, wireless sensor networks) means that GIS researchers and professionals need to be fluent in multiple forms of programming, and the life-cycles of system and software development.

Topics in this Knowledge Area are listed thematically below. Existing topics are in regular font and linked directly to their original entries (published in 2006; these contain only Learning Objectives). Entries that have been updated and expanded are in bold. Forthcoming, future topics are italicized


Algorithm Design/Algorithmic Approaches Programming Languages & Libraries
Real Tme Programming in GIS Applications Python for GIS
Natural Language Processing in GIS Applications  PySAL and Spatial Statistics Libraries
Machine Learning Programming for GIS R for Geospatial Analysis & Mapping
Linear Programming and GIS Javascript for GIS
GIS and Parallel Programming SQL Languages for GIS
Object-oriented Programming in GIS Applications GDAL/OGR and IO Libraries
  Application Development
Development Tools Design, Development, Testing, and Deployment of GIS Applications
Visual Programming for GIS Applications Verification & Validation of GIS Applications
SpatialMPI: Message Passage Interface for GIS Applications Commercialization of GIS Applications
GIS APIs Licensing of GIS Applications
  Open Source Software Development
Platform Specific Programming  
GIS and GPU Programming  
Programming of Mobile GIS Applications  
Web GIS Programming  


PD-12 - Commercialization of GIS Applications

The commercialization of GIS applications refers to the process of bringing a software solution to market. The process involves three broad categories of tasks: identifying a problem or aspect of a problem that a GIS application can solve or address; designing and creating a GIS application to address the problem; and developing and executing a marketing plan to reach those with the problem, the potential users. Ideally these categories would be addressed in this order, but in practice, aspects of each are likely to be addressed and iterated throughout the commercialization process.

Bringing a GIS application to market requires expertise in 1) the target industry or market (e.g., forestry); 2) software development (how to design and build a product); 3) law (licenses, contracts, taxes); and 4) business (how to fund development, guide the process, evaluate success, marketing). A single individual or organization, referred to as the provider in this discussion, may lead or execute all three categories of tasks, or engage third parties when specific expertise is required.

PD-05 - Design, Development, Testing, and Deployment of GIS Applications

A systems development life cycle (SDLC) denes and guides the activities and milestones in the design, development, testing, and de ployment of software applications & information systems. Various choices of SDLC are available for different types of software applications & information systems and compositions of development teams and stakeholders. While the choice of an SDLC for building geographic information system (GIS) applications is similar to that of other types of software applications, critical decisions in each phase of the GIS development life cycle (GiSDLC) should take into account essential questions concern ing the storage, access, and analysis of (geo)spatial data for the target application. This article aims to introduce various considerations in the GiSDLC, from the perspectives of handling (geo)spatial data. The article rst introduces several (geo)spatial processes and types as well as various modalities of GIS applications. Then the article gives a brief introduction to an SDLC, including explaining the role of (geo)spatial data in the SDLC. Finally, the article uses two existing real-world applications as an example to highlight critical considerations in the GiSDLC.

PD-03 - Development environments for geospatial applications
  • Develop a geospatial application using the most appropriate environment
  • Compare and contrast the relative merits of available environments for geospatial applications, including desktop software scripting (e.g., VBA), graphical modeling tools, geospatial components in standard environments, and “from-scratch” development in standard environments
PD-33 - GDAL/OGR and Geospatial Data IO Libraries

Manipulating (e.g., reading, writing, and processing) geospatial data, the first step in geospatial analysis tasks, is a complicated step, especially given the diverse types and formats of geospatial data combined with diverse spatial reference systems. Geospatial data Input/Output (IO) libraries help facilitate this step by handling some technical details of the IO process. GDAL/OGR is the most widely-used, broadly-supported, and constantly-updated free library among existing geospatial data IO libraries. GDAL/OGR provides a single raster abstract data model and a single vector abstract data model for processing and analyzing raster and vector geospatial data, respectively, and it supports most, if not all, commonly-used geospatial data formats. GDAL/OGR can also perform both cartographic projections on large scales and coordinate transformation for most of the spatial reference systems used in practice. This entry provides an overview of GDAL/OGR, including why we need such a geospatial data IO library and how it can be applied to various formats of geospatial data to support geospatial analysis tasks. Alternative geospatial data IO libraries are also introduced briefly. Future directions of development for GDAL/OGR and other geospatial data IO libraries in the age of big data and cloud computing are discussed as an epilogue to this entry.

PD-14 - GIS and Parallel Programming

Programming is a sought after skill in GIS, but traditional programming (also called serial programming) only uses one processing core. Modern desktop computers, laptops, and even cellphones now have multiple processing cores, which can be used simultaneously to increase processing capabilities for a range of GIS applications. Parallel programming is a type of programming that involves using multiple processing cores simultaneously to solve a problem, which enables GIS applications to leverage more of the processing power on modern computing architectures ranging from desktop computers to supercomputers. Advanced parallel programming can leverage hundreds and thousands of cores on high-performance computing resources to process big spatial datasets or run complex spatial models.

Parallel programming is both a science and an art. While there are methods and principles that apply to parallel programming--when, how, and why certain methods are applied over others in a specific GIS application remains more of an art than a science. The following sections introduce the concept of parallel programming and discuss how to parallelize a spatial problem and measure parallel performance.

PD-19 - GIS APIs

GIS APIs are collections of library modules that resemble various functionalities of GIS software through programming. GIS APIs evolved from desktop GIS. GIS APIs, as a distributed solution, are interoperable, scalable, light-weight, user-friendly, and versatile to a wide range of GIS users. This entry provides an overview of common GIS APIs, their functionalities as well as other related APIs. The general procedure to develop customized GIS applications is briefly discussed and demonstrated in a case study.

PD-02 - Integer programming
  • Explain why integer programs are harder to solve than linear programs
  • Differentiate between a linear program and an integer program
PD-32 - JavaScript for GIS

JavaScript (which has no connection to the Java computer language) is a popular high-level programming languages used to develop user interfaces in web pages. The principle goal of using JavaScript for programming web and mobile GIS applications is to build front-end applications that make use of spatial data and GIS principles, and in many cases, have embedded, interactive maps. It is considered much easier to program than Java or C languages for adding automation, animation, and interactivity into web pages and applications. JavaScript uses the leading browsers as runtime environments (RTE) and thus benefits from rapid and continuously evolving browser support for all web and mobile applications.

PD-01 - Linear Programming and GIS

Linear programming is a set of methods for finding optimal solutions to mathematical models composed of a set of linear functions. Many spatial location problems can be structured as linear programs. However, even modest-sized problem instances can be very difficult to solve due to the combinatorial complexity of the problems and the associated computational expense that they incur. Geographic Information Systems software does not typically incorporate formal linear programming functionality, and instead commonly uses heuristic solution procedures to generate near-optimal solutions quickly. There is growing interest in integrating the spatial analytic tools incorporated in Geographic Information Systems with the solution power of linear programming software to generate guaranteed optimal solutions to spatial location problems.

PD-29 - Programming of Mobile GIS Applications

Mobile technology has significantly changed how we communicate and interact with the outside world. With the increasing use of mobile devices and advancement of information communication information (ICT) technologies, mobile GIS emerged to provide real-time data collection and update, and made GIS easier and convenient to access. This entry introduces the concept, types, and general architecture of mobile GIS, key technologies used for mobile GIS development, and examples of mobile GIS applications.