Download as pdf or txt
Download as pdf or txt
You are on page 1of 41

Lecture 9 | Overview of Geospatial

Programming Languages
| Block-2 | MGY-101 | IGNOU PGDGI
Expected Learning
Outcomes_____________________________

Geospatial Task Based- Programming Language Lists

List of Popular Programming Languages for Geospatial Systems.

Comparison of various programming language

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.

Even today, C and C++ remain as popular languages


among developers, however, it is not the sort of language
you use on a general daily basis as a GIS user.

Most GPS receivers have their firmware written in C++.


C / C++ in Geospatial Applications
Application/Library/Framework Programming Language
Desktop Geospatial Applications
ArcGIS C++
QGIS C++, Python, Qt
SAGA GIS C++
GRASS GIS C, C++, Python
MapServer C
ILWIS C++
Mapnik C++
Geospatial Libraries and Frameworks
GDAL / OGR C, C++, Python
Orfeo Toolbox C++, Python
PROJ C++, C
Other Notable Libraries
Boost Geometry C++
GEOS C++
OpenDroneMap C++, Python
Shapefile C Library C
TerraLib C++
YOLT C++, Python
C#
• C# is a general-purpose, multi-paradigm programming
language. C# encompasses static typing, strong typing,
lexically scoped, imperative, declarative, functional,
generic, object-oriented, and component-oriented
programming disciplines.
• C# was Microsoft’s response to Java and is the leading
programming language for .NET.
• It is popular among proprietary software companies,
especially for ESRI.
C# in Geospatial programming.
Library Name Description URL
API to build powerful desktop and mobile apps
ArcGIS runtime API for .NET that incorporate capabilities such as mapping, https://developers.arcgis.com/net/
geocoding, routing, and geoprocessing.
Library of tools to access the Bing Maps REST
Bing Maps REST Toolkit for services. Offers geocoding, route calculations, https://github.com/Microsoft/BingMap
.NET distance matrices, isochrones, and elevation sRESTToolkit
data.
Library which provides map control to display https://github.com/DotSpatial/DotSpat
DotSpatial
map in .NET Windows forms. ial
Library to handle geographic geometry types
Geo https://github.com/sibartlett/Geo
and different GPS data types.
Tools for building Unity applications using map https://docs.mapbox.com/unity/maps/
Mapbox Maps SDK for Unity
data. guides/
https://www.bentley.com/en/software-
MicroStation Development A robust and feature-rich MicroStation developers/developing-engineering-
Libraries programming environment. applications/design-and-analytical-
modeling-sdks
API for modeling and manipulating 2D linear https://github.com/NetTopologySuite/
Net Topology Suite
geometry. NetTopologySuite
Java
• It is a general-purpose programming language
intended to let programmers ‘Write Once, Run
Anywhere’ (WORA), meaning that compiled Java
code can run on all platforms that support Java
without the need to re-compile.
Geospatial programming in Java.
Library Name Description URL
Geospatial API for building desktop applications using
ArcGIS Runtime API for Java ArcGIS Runtime API for Java
the JavaFX framework.
GeoAPI API for metadata handling and geodetic referencing. GeoAPI

Catalog application for managing spatially referenced


GeoNetwork resources, with metadata editing and search GeoNetwork
functions.
GeoServer Server for publishing geospatial data. GeoServer
GeoTools Library of tools for geospatial data. GeoTools
Desktop application for handling geographic
gvSIG gvSIG
information.
JTS Topology Suite API for 2D spatial predicates and functions. JTS Topology Suite

OpenJUMP Vector and raster GIS and programming framework. OpenJUMP

Library for converting coordinates between different


Proj4J Proj4J
geospatial coordinate reference systems.

Desktop GIS application framework built with Eclipse


uDig uDig
Rich Client (RCP) technology.
WorldWind Java SDK API for 3D globe and map. WorldWind Java SDK
JavaScript
• JavaScript is a programming language that is one of the
core technologies of the World Wide Web, alongside HTML
and CSS. All major web browsers have a dedicated
JavaScript engine to execute the code on users' devices.
• JavaScript is for programming web and mobile GIS
applications is to build frontend applications that make
use of spatial data and GIS principles, and most times,
have embedded, interactive maps.
JavaScript APIs and Libraries typically used in
Web and Mobile GIS
Library Name Description URL
ArcGIS API for JavaScript ESRI's proprietary API for building interactive web apps with 2D and 3D visualizations. ArcGIS API for JavaScript
Library for creating 3D globes and 2D maps in web browsers with high performance and visual
CesiumJS CesiumJS
quality.
GeoExt Toolkit for building rich web mapping applications. GeoExt

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

Framework for building high-performance grid-based spatial simulations,


DynamicGrids.jl DynamicGrids.jl
including cellular automata.
GDAL.jl Binding to the C API of GDAL/OGR. GDAL.jl
Geographical plotting utilities, including projections, for Makie.jl, a data
GeoMakie.jl GeoMakie.jl
visualization ecosystem.
GeoStats.jl Framework for geostatistics in Julia. GeoStats.jl
Package for implementing image blurring, sharpening, gradient computation,
ImageFiltering.jl ImageFiltering.jl
and other linear/non-linear filtering.
ImageMorphology.jl Package for morphological operations on images. ImageMorphology.jl
Images.jl Image processing library. Images.jl
Package for manipulation and analysis of planar geometric objects, based on
LibGEOS.jl LibGEOS.jl
the libraries GEOS and JTS.

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.

SpatialTools Tools for spatial data analysis. CRAN


terra Package for spatial data analysis with raster and vector data. GitHub
• A dynamic, open-source programming
language with a focus on simplicity and
productivity.
• Ruby is dynamically typed and uses
garbage collection and just-in-time
Ruby compilation. Ruby is great for building
desktop applications, static websites,
data processing services, and even
automation tools.
• It's used for web servers, DevOps, and
web scraping & crawling.
Ruby in Geospatial Application

Library Name Description URL

Geocoder Ruby Geocoding solution. Website

A Ruby gem & Rails plugin for easier map-based applications,


Geokit for carrying out distance calculation and Geocoding, from GitHub
multiple providers.

ActiveRecord Provides access to features of the PostGIS geospatial database


GitHub
PostGIS Adapter from ActiveRecord.

RGeo RGeo is a geospatial data library for Ruby. GitHub


Rust

Rust is a multi-paradigm, general-purpose programming language designed


for performance and safety, especially safe concurrency.

It achieves memory safety without garbage collection, and reference


counting is optional.

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

maplibre-rs Map rendering library. GitHub

Martin A PostGIS vector tiles server. GitHub

rgeometry Computational Geometry library. GitHub

rust-gdal GDAL bindings for Rust. GitHub

rust-geo Provides geospatial primitive types and algorithms. GitHub

rust-geohash Library for Geohash algorithm. GitHub

rust-proj Rust bindings to the PROJ API. GitHub


Scala

Scala's static types help avoid


bugs in complex applications,
Scala combines object-
and its JVM and JavaScript
oriented and functional
runtimes let you build
programming in one concise,
highperformance systems
high-level language.
with easy access to huge
ecosystems of libraries.
Scala in Geospatial Application

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

Library providing types and basic functionality for working


stac4s GitHub
with Spatio-Temporal Asset Catalogs.
SQL

Structured Query Language (SQL) is a domain-specific language used in


programming and designed for managing data held in a RDBMS.

It is an accessible and widely adopted language used for query, data


modification, and data definition, defining data structures (tables) and other
database objects.

Many complex geoprocessing workflows typically implemented in GIS or


scripting languages, can easily be implemented in spatial SQL.
SQL in Geospatial Application

Database System Description URL


DB2 Spatial Extender Extends DB2 to store, manage, and analyze spatial data. IBM
GeoCouch Spatial extension for Couchbase and Apache CouchDB. GitHub
GeoPackage SQLite container for transferring geospatial information. GeoPackage
Spatial Data SQL
Microsoft SQL/SQL Azure spatial features. Microsoft Docs
Server
MySQL Spatial MySQL spatial extension. MySQL Docs
Oracle’s Spatial Spatial capabilities included in Oracle's database, facilitating location
Oracle
Database intelligence analytics and mapping services.

Multi-model NoSQL DBMS supporting Native Graphs, Documents, Full-


OrientDB GitHub
Text Search, Reactivity, Geo-Spatial, and Object-Oriented concepts.

PostGIS Spatial database extender for PostgreSQL. PostGIS


Other Geospatial
Programming Languages

• 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

MapBasic is a programming language for the creation of additional


tools and functionality for the MapInfo Professional GIS.

MapBasic also allows programmers to develop software in popular


programming languages such as C, C++ and Visual Basic and use
these with the MapInfo Professional.
MATLAB
MATLAB is a proprietary multi-paradigm programming language and a numeric computing environment developed by
MathWorks.

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.

Overview of C, C++, Java, Python, etc. and their Geospatial


libraries.

Comparative analysis aiding language selection.

System configuration guidelines for Geospatial programming.

You might also like