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 below. Existing topics are linked directly to either their original (2006) or revised entries; forthcoming, future topics are italicized. 


Commercialization Problems of Large Spatial Databases
Computer-Aided Software Engineering (CASE) Tools PySAL
Development Environments for Geospatial Applications Python for GIS
Dynamic Programming R for GIS
Exchange Specifications Real Tme Programming
GIS and GPU Programming Software and Education
GIS and Parallel Programming Software Frameworks
Implementation Tasks Software Lifecycles
Integer Programming Software Requirements
Licensing Software Validation
Linear Programming System Deployment
Machine Learning Programming for GIS System Testing
Message Passing Interface (MPI) Transport Protocols
Mobile Programming Visual Programming
Natural Language Processing Web Services Programming
  WebGIS Programming


PD-04 - Computer-Aided Software Engineering (CASE) tools
  • Use CASE tools to design geospatial software
  • Evaluate available CASE tools for their appropriateness for a given development task
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-08 - Exchange specifications
  • Describe the characteristics of the Geography Markup Language (GML)
  • Explain the purpose, history, and status of the Spatial Data Transfer Standard (SDTS)
  • Identify different levels of information integration
  • Identify the level of integration at which the Geography Markup Language (GML) operates
  • Describe the geospatial elements of Earth science data exchange specifications, such as the Ecological Metadata Language (EML), Earth Science Markup Language (ESML), and Climate Science Modeling Language (CSML)
  • Import data packaged in a standard transfer format to a GIS software package
  • Export data from a GIS program to a standard exchange format
PD-05 - Implementation tasks
  • Explain the rationale for piloting and prototyping new systems
  • Plan a formal quality assurance procedure
  • Construct an effective database structure in a selected GIS or database software based on the physical model
  • Acquire data from primary and secondary sources
  • Transfer data from primary and secondary sources into the database
  • Create customized programs and scripts based on an application design
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-01 - Linear programming
  • Explain the role of constraint functions using the simplex method
  • Explain the role of objective functions in linear programming
  • Describe the structure of linear programs
  • Explain the role of constraint functions using the graphical method
  • Implement linear programs for spatial allocation problems
PD-10 - Problems of large spatial databases
  • Describe emerging geographical analysis techniques in geocomputation derived from artificial intelligence (e.g., expert systems, artificial neural networks, genetic algorithms, and software agents)
  • Explain how to recognize contaminated data in large datasets
  • Outline the implications of complexity for the application of statistical ideas in geography
  • Explain what is meant by the term “contaminated data,” suggesting how it can arise
  • Describe difficulties in dealing with large spatial databases, especially those arising from spatial heterogeneity
PD-11 - Python for GIS

Figure 1. PySAL within QGIS Processing Toolbox: Hot-spot analysis of Homicide Rates in Southern US Counties.


Python is a popular language for geospatial programming and application development. This entry provides an overview of the different development modes that can be adopted for GIS programming with Python and discusses the history of Python adoption in the GIS community. The different layers of the geospatial development stack in Python are examined giving the reader an understanding of the breadth that Python offers to the GIS developer. Future developments and broader issues related to interoperability and programming ecosystems are identified.

PD-07 - System deployment
  • Develop a phasing schedule for deployment of an enterprise-wide system
  • Integrate geospatial applications with other enterprise information systems
PD-06 - System testing
  • Describe the goals of alpha and beta testing
  • Implement established testing procedures on prototype systems
  • Use testing results to prepare a system for deployment
  • Conduct a quality assurance review