GRASS GIS APIs: Difference between revisions

From GRASS-Wiki
Jump to navigation Jump to search
(cosmetics)
Line 1: Line 1:
== Introduction to this document ==
== Introduction to this document ==
GRASS GIS is in continues development and this development is what keeps GRASS GIS alive and at the forefront of GIS evolution. From users stringing together a series of modules to build a novel processing chain to developers implementing new cutting-edge algorithms in the core of the GRASS GIS C source code there are many different ways to develop with and for GRASS GIS. This document aims at clarifying the role of the different application programming interfaces (APIs) available. For each of the different APIs, it presents typical use cases and introduces the basic logic of the API. For more detailed information, please look at more detailed introduction on [http://grasswiki.osgeo.org/wiki/Development GRASS GIS and Development ] and [http://grasswiki.osgeo.org/wiki/GRASS_and_Python GRASS GIS and Python] as well as the programming manuals for the [http://grass.osgeo.org/programming7/ C] and [http://grass.osgeo.org/grass71/manuals/libpython/ Python] APIs.


== GRASS GIS Modules as "functions" ==
== GRASS GIS Modules as "functions" ==

Revision as of 15:02, 27 January 2015

Introduction to this document

GRASS GIS is in continues development and this development is what keeps GRASS GIS alive and at the forefront of GIS evolution. From users stringing together a series of modules to build a novel processing chain to developers implementing new cutting-edge algorithms in the core of the GRASS GIS C source code there are many different ways to develop with and for GRASS GIS. This document aims at clarifying the role of the different application programming interfaces (APIs) available. For each of the different APIs, it presents typical use cases and introduces the basic logic of the API. For more detailed information, please look at more detailed introduction on GRASS GIS and Development and GRASS GIS and Python as well as the programming manuals for the C and Python APIs.

GRASS GIS Modules as "functions"

  • GRASS GIS has modular structure: each module is a separate program
  • Easy to integrate into any language that allows system calls

The Python scripting library

  • Some specific python functions to facilitate calling grass modules and capturing their output

Easy GUI creation in scripts

  • Automatic GUI creation based on basic configuration of options

The PyGRASS API using ctypes

  • Direct access to low-level C-functions (via ctypes).
  • Direct access to data
  • Allows writing of more complex Python programs than the scripting library

The C-API

  • Core library is being developed for more than 30 years
  • Different additional libraries added through time