Lecture 9 Overview of Geospatial Programming Languages Block 2
Lecture 9 Overview of Geospatial Programming Languages Block 2
Programming Languages
| Block-2 | MGY-101 | IGNOU PGDGI
Expected Learning
Outcomes_____________________________
Hardware Platform
List of Popular Programming Languages for Geospatial Systems.
Geospatial Task Based-
Programming Language Lists
Category Application/Library/Framework/Server Programming Language
ArcGIS C++
ENVI IDL
Generic Mapping Tools (GMT) C, C++
GRASS C, C++, Python
gvSIG Java
ILWIS C++
Kalypso Java, GML
Desktop Geospatial Applications
MapWindow GIS C#
MicroStation .NET Framework
OpenJUMP Java
QGIS C++, Python, Qt
SAGA GIS C++
uDig Java
Whitebox Geospatial Analysis Tools Java, Groovy, Python
GDAL / OGR C, C++, Python
GeoTools Java
Geospatial Libraries and Frameworks
PROJ C++, C
Orfeo Toolbox C++, Python
Category Application/Library/Framework/Server Programming Language
ArcGIS Pro, ArcGIS Online Arcade
ArcGIS Desktop Python, .NET
Scripting in Geospatial Applications
ERDAS Imagine Python
QGIS Python, QT
Geospatial Data Processing and Modelling - Python, R, IDL
Server-side: ASP .NET, C#, Java, PHP, Python,
-
Web GIS Programming Languages Ruby
Client-side: HTML, CSS, JavaScript
ArcGIS Server .NET Framework, Java
GeoServer Java
Web GIS Servers
Mapnik C++
MapServer C
ArangoDB C++, JavaScript
MySQL Spatial C, C++
Spatial Database Management Systems OrientDB Java
(SDMS)
PostGIS C
SpatiaLite C++, wxWidgets
TerraLib C++
High-Performance Computing - OpenMP, OpenCL, CUDA, C, C++, Python, R
Android (SDK Environments like Eclipse) Java
Mobile-based Geospatial Applications
iOS C / C#, Swift
Windows C / C#
C / C++
C is a general-purpose computer programming language.
works as an extension of the C programming language.
Maps JavaScript API (Google) Google Maps API for customizing maps with content and imagery for web and mobile devices. Maps JavaScript API
Library for building web and mobile mapping applications with lightweight and interactive
Leaflet JS Leaflet JS
maps.
Library for building web map applications with custom styling and high performance
Mapbox GL JS Mapbox GL JS
rendering.
NASA Web WorldWind Library for creating interactive visualizations of geographic information on 3D globe or 2D map. NASA Web WorldWind
OpenLayers Library for displaying map data in web browsers as slippy maps. OpenLayers
OSM Buildings Library for visualizing 3D building geometry on the web. OSM Buildings
SuperMap iClient JavaScript Cloud GIS web client development platform for building GIS applications. SuperMap iClient JavaScript
TerriaJS Library for building rich, web-based geospatial data explorers. TerriaJS
TurfJS Library of JavaScript functions for advanced geospatial analysis in browsers and Node.js. TurfJS
Julia
• Julia is a high-level, high-performance, dynamic
programming language. While it is a general-purpose
language and can write any application, many of its
features are well suited for numerical analysis and
computational science.
• JuliaGeo (https://github.com/JuliaGeo) is an organization
that contains several related Julia projects for
manipulating, querying, and processing geospatial
geometry data.
Julia in Geospatial Application
Library Name Description URL
Coordinate Package for managing simple or complex networks of coordinate system Coordinate
Transformations.jl transformations. Transformations.jl
Package defining common types and methods for reading, writing, and
Rasters.jl Rasters.jl
manipulating rasterized spatial data.
PHP
• Hypertext Preprocessor (PHP) is a general-purpose
scripting language geared towards web development.
• You can use PHP scripts to develop interactive WebGIS
applications, which require server-side geospatial
operations.
PHP in Geospatial Application
Library
Description URL
Name
Library implementing the GeoJSON format
Geojson Geojson
specification.
GeoPHP Library for performing geometry operations. GeoPHP
Extension to handle common geospatial
Geospatial Geospatial
functions.
PHP7 Extension for PHP 7 enabling geospatial PHP7
Mapnik rendering with Mapnik. Mapnik
shapefile ESRI ShapeFile library for PHP. shapefile
Python
• Python is a high-level, interpreted, general-purpose
programming language.
• It supports multiple programming paradigms, including
structured (particularly procedural), objectoriented,
functional and aspect-oriented programming.
• Python is one of the most important programming
languages used in the Geospatial field.
Python in Geospatial Application
Library Name Description URL
ArcGIS API for Python Library for mapping, spatial analysis, data science, geospatial AI, and automation. ArcGIS API for Python
Cartopy Package designed for geospatial data processing to produce maps and other geospatial data analyses. Cartopy
eo-box Earth observation processing framework for machine learning in Python. eo-box
Fiona Wrapper for vector data access functions from the OGR library. Fiona
GDAL Package containing tools for programming and manipulating GDAL/OGR. GDAL
GeoPandas Objects for performing geometric operations on shapely geometry objects. GeoPandas
Shapely Library for manipulation and analysis of geometric objects in the Cartesian plane. Shapely
GeoDjango Django geographic web framework. GeoDjango
Lidar Package for delineating the nested hierarchy of surface depressions in DEMs. Lidar
NetworKit Tool suite for high-performance network analysis. NetworKit
Library for network analysis using contraction hierarchies to calculate travel accessibility metrics and
Pandana Pandana
shortest paths.
PyQGIS Python for QGIS. PyQGIS
PySAL Python Spatial Analysis Library for open-source, cross-platform Geospatial data science. PySAL
Rasterio Library employing GDAL under the hood for file I/O and raster formatting. Rasterio
RSGISLib Library collection of tools for processing remote sensing and GIS datasets. RSGISLib
Scikit-image Collection of algorithms for image processing. Scikit-image
Spectral Python Module for hyperspectral image processing. Spectral Python
Stetl Toolkit for the transformation (ETL) of geospatial data. Stetl
PyTorch domain library providing datasets, transforms, samplers, and pre-trained models specific to
TorchGeo TorchGeo
geospatial data.
Turfpy Library for performing geospatial data analysis. Turfpy
• R is a programming language and a multi-
platform open-source computing
environment to perform a wide variety of
data analysis, statistics, and visualization.
• A language designed for statistical data
analysis.
R • Many areas of geoscience, such as geo-
statistics, geospatial and spatiotemporal
analysis, geophysics, soil and rock
mechanics, seismic and earthquake
analysis, ocean and atmospheric studies
vastly depend on data and their analysis.
R in Geospatial Application
Library Name Description URL
Package to design cartographic representations such as proportional symbols, choropleth, typology, flows, or
Cartography GitHub
discontinuities maps.
ForesToolboxRS Package providing a variety of tools and algorithms for the processing and analysis of satellite images. GitHub
Gdalcubes_R Package for gdalcubes to process collections of Earth observation image collection as on-demand data cubes. GitHub
gstat Spatial and Spatio-Temporal Geostatistical Modelling, Prediction, and Simulation. CRAN
lidR Package for Airborne LiDAR Data Manipulation and Visualization for Forestry Applications. GitHub
marmap Package for bathymetric and topographic data. CRAN
OpenImageR Toolkit for image preprocessing, filtering, and image recognition. GitHub
raster Package for reading, writing, manipulating, analyzing, and modeling of spatial data. CRAN
rasterViz Package for enhanced visualization and interaction with raster data. CRAN
rgee R binding package for calling Google Earth Engine API from within R. GitHub
RStoolbox Toolbox for remote sensing image processing and analysis. CRAN
sf Package that provides Simple Features access for R. GitHub
Package provides classes and methods for spatial data; the classes document where the spatial location information
sp CRAN
resides, for 2D or 3D data.
Rust is used to developing game engines, file systems, websites and tools,
operating systems, browser components, geospatial applications, and much
more.
Rust in Geospatial Application
Library Name Description URL
Library
Description URL
Name
Apache A cluster computing system for processing large-scale
GitHub
Sedona spatial data.
franklin Import and serve Spatio-Temporal Asset Catalog(s). Documentation
GeoTrellis Library providing data types for working with raster data. Website
• IDL
• Map Basics
• MATLAB
IDL
Interactive Data Language (IDL) software is the trusted scientific programming language used across
disciplines to create meaningful visualizations out of complex numerical data.
If you need to convert raw images to information, the IDL data visualization tool contains an
extensive library of image processing and analysis routines.
IDL allows you to extract useful information from nearly any type of a digital image with tools for
transforming image geometry, mapping, masking and statistics, warping, analyzing regions of
interest, and contrasting and filtering.
The ENVI API is based on IDL programming language and uses an object oriented approach to
manage the application state, data files, and display
MapBasic
MATLAB Mapping Toolbox provides algorithms and functions for transforming geographic data and creating map displays.
You can visualize your data in a geographic context, build map displays from over 60 map projections, and transform data
from a variety of sources into a consistent geographic coordinate system.
Mapping Toolbox supports a complete workflow for managing geographic data. You can import vector and raster data from
a wide range of file formats and web map servers.
The toolbox lets you process and customize data using trimming, interpolation, re-sampling, coordinate transformations,
and other techniques. We can combine data with base map layers from multiple sources in a single map display. You can
export data in file formats such as shapefile, GeoTIFF, and KML.
COMPARISON OF VARIOUS PROGRAMMING
LANGUAGE
Component Description
Latest generation processor from Intel or AMD with high
Central Processing Unit
clock speed and ample cache for processing complex
(CPU)
geospatial data and algorithms.
16/32 GB for general geospatial processing tasks, 64+ GB for
Random Access Memory
Deep Learning and GeoAI algorithms. Higher clocked RAM
(RAM)
recommended for maximum performance.
Hardware
GPUs from NVIDIA or AMD with ample memory onboard for
Graphics Processing Unit
accelerating tasks in High Performance Computing, Deep
(GPU)
Learning, and GeoAI.
Platform Hard Disk Drive (HDD)
Minimum 1 TB HDD with good RPM for storing operating
systems, software programs, and geospatial data.
Minimum 256 GB SSD for faster access to critical data and
Solid-State Drive (SSD) applications, especially in high input/output demand
scenarios.
Full HD resolution (1920x1080p) or higher recommended,
Monitor with screen sizes of 24” or 27” for optimal programming
environments.
Quality keyboards and mice to enhance workflow, with
Keyboard and Mouse wired or wireless options depending on preferences and
workstation setup.
SUMMARY
Introduction to programming languages for Geospatial concepts.