Software Tools useful in Agrometeorology
"Software Tools useful in Agrometeorology” introduces you to helpful software available to agrometeorologists
Access to software determines who may participate in a digital society. Therefore, the freedoms to use, copy, modify and redistribute software -- as described in the Free Software definition -- allow equal participation in the information age.
The vision of Free Software is one of a stable basis for freedom in a digital world -- both in an economic and socio-ethical context. Free Software is one important cornerstone for freedom, democracy, human rights and development in a digital society.
"Free software" is a matter of liberty, not price. To understand
the concept, you should think of "free" as in "free speech", not as
in "free ice cream".
Free software is a matter of the users' freedom to run, copy,
distribute, study, change and improve the software. More precisely,
it refers to four kinds of freedom, for the users of the
software:
- The freedom to run the program, for any purpose (freedom 0).
- The freedom to study how the program works, and adapt it to your needs (freedom 1). Access to the source code is a precondition for this.
- The freedom to redistribute copies so you can help your neighbor (freedom 2).
- The freedom to improve the program, and release your improvements to the public, so that the whole community benefits (freedom 3). Access to the source code is a precondition for this.
A program is free software if users have all of these freedoms. Thus, you should be free to redistribute copies, either with or without modifications, either gratis or charging a fee for distribution, to anyone anywhere. Being free to do these things means (among other things) that you do not have to ask or pay for permission.
Most free software is distributed online without charge, or off-line at the marginal cost of distribution, but this is not required, and people may sell copies for any price. Thus, free software is entirely compatible with commercial software: a prohibition on selling the software would be a restriction failing the free software definition.
Operating Systems (OS)
Linux.
Linux is a free Unix-type operating system originally created by
Linus Torvalds with the assistance of developers around the world.
Developed under the GNU General Public
License, the source code for Linux is freely available to
everyone. Click on the link below to find out more about the
operating system that is causing a revolution in the world of
computers.
Programming Languages
Perl.
Perl is a high-level programming language with an eclectic heritage
written by Larry Wall and a cast of thousands. It derives from the
ubiquitous C programming language and to a lesser extent from sed,
awk, the Unix shell, and at least a dozen other tools and
languages. Perl's process, file, and text manipulation facilities
make it particularly well-suited for tasks involving quick
prototyping, system utilities, software tools, system management
tasks, database access, graphical programming, networking, and
world wide web programming. These strengths make it especially
popular with system administrators and CGI script authors, but
mathematicians, geneticists, journalists, and even managers also
use Perl. Maybe you should, too.
Python.
Python is a dynamic object-oriented programming language that can
be used for many kinds of software development. It offers strong
support for integration with other languages and tools, comes with
extensive standard libraries, and can be learned in a few days.
Many Python programmers report substantial productivity gains and
feel the language encourages the development of higher quality,
more maintainable code.
Python runs on Windows, Linux/Unix, Mac OS X, OS/2, Amiga, Palm
Handhelds, and Nokia mobile phones. Python has also been ported to
the Java and .NET virtual machines.
Python is distributed under an OSI-approved open source license
that makes it free to use, even for commercial products.
GCC, the GNU Compiler
Collection.
The GNU Compiler Collection includes front ends for C, C++,
Objective-C, Fortran,
Java, and Ada, as well as
libraries for these languages (libstdc++, libgcj,...).
FreeBASIC.
FreeBASIC - as the name suggests - is a completely free,
open-source, 32-bit BASIC compiler, with the syntax the most
compatible possible with MS-QuickBASIC, that adds new features such
as pointers, unsigned data types, inline-assembly and many
others.
Ruby.
A dynamic, open source programming language with a focus on
simplicity and productivity. It has an elegant syntax that is
natural to read and easy to write.
PHP.
PHP is a widely-used general-purpose scripting language that is
especially suited for Web development and can be embedded into
HTML.
Tcl.
Tcl (Tool Command Language) is a very powerful but easy to learn
dynamic programming language, suitable for a very wide range of
uses, including web and desktop applications, networking,
administration, testing and many more. Open source and
business-friendly, Tcl is a mature yet evolving language that is
truly cross platform, easily deployed and highly extensible.
Tk is a graphical user interface toolkit that takes developing
desktop applications to a higher level than conventional
approaches. Tk is the standard GUI not only for Tcl, but for many
other dynamic languages, and can produce rich, native applications
that run unchanged across Windows, Mac OS X, Linux and more.
Office Suite
OpenOffice.org.
OpenOffice.org is a multiplatform and multilingual office suite and
an open-source project. Compatible with all other major office
suites, the product is free to download, use, and distribute.
Database Management Software
MySQL.
MySQL is a multithreaded, multi-user, SQL Database Management
System (DBMS) with more than six million installations. MySQL AB
makes MySQL available as free software under the GNU General Public
License (GPL), but they also dual-license it under traditional
proprietary licensing arrangements for cases where the intended use
is incompatible with the GPL.
There are APIs available that allow applications written in
numerous programming languages to access MySQL databases,
including: C, C++, C#, Borland Delphi (via dbExpress), Eiffel,
Smalltalk, Java (with a native Java driver implementation), Lisp,
Perl, PHP, Python, Ruby, REALbasic (Mac), FreeBasic, and Tcl; each
of these uses a specific API. An ODBC interface called MyODBC
allows additional programming languages that support the ODBC
interface to communicate with a MySQL database, such as ASP or
Coldfusion. MySQL is mostly implemented in ANSI C.
PostgreSQL.
PostgreSQL is a free object-relational database server (database
management system), released under a flexible BSD-style license. It
offers an alternative to other database systems. Similar to other
open-source projects such as Apache, Linux, and Mediawiki,
PostgreSQL is not controlled by any single company, but relies on a
global community of developers and companies to develop it.
Functions allow blocks of code to be executed by the server.
Although these blocks can be written in SQL, the lack of basic
programming operations, such as branching and looping, has driven
the adoption of other languages inside of functions. Some of the
languages can even execute inside of triggers. Functions in
PostgreSQL can be written in the following languages:
- A built-in language called PL/pgSQL resembles Oracle's procedural language PL/SQL
- Scripting languages are supported through PL/Perl, plPHP, PL/Python, PL/Ruby, PL/sh, and PL/Tcl
- Compiled languages C, C++, or Java (via PL/Java)
- The statistical language R through PL/R
Functions can be defined to execute with the privileges of either the caller or the user who defined the function. Functions are sometimes referred to as stored procedures, although there is a slight technical distinction between the two.
Web server
Apache HTTP
Server.
Apache HTTP Server is a free software/open source web server for
Unix-like systems, Microsoft Windows, Novell NetWare and other
operating systems. Apache is notable for playing a key role in the
initial growth of the World Wide Web, and continues to be the most
popular web server in use, serving as the de facto reference
platform against which other web servers are designed and
judged.
Apache is primarily used to serve static and dynamic content on the
World Wide Web. Many web applications are designed expecting the
environment and features that Apache provides.
Apache is the web server component of the popular LAMP web server
application stack, alongside Linux, MySQL, and the PHP/Perl/Python
programming languages.
Content Management Systems
ZOPE.
Zope is an open source web application server primarily written in
the Python programming language. It features a transactional object
database which can store not only content and custom data, but also
dynamic HTML templates, scripts, a search engine, and relational
database (RDBMS) connections and code. It features a strong
through-the-web development model, allowing you to update your web
site from anywhere in the world. To allow for this, Zope also
features a tightly integrated security model. Built around the
concept of "safe delegation of control", Zope's security
architecture also allows you to turn control over parts of a web
site to other organizations or individuals. The transactional model
applies not only to Zope's object database, but to many relational
database connectors as well, allowing for strong data integrity.
This transaction model happens automatically, ensuring that all
data is successfully stored in connected data sources by the time a
response is returned to a web browser or other client.
There are numerous products (plug-in Zope components) available for
download to extend the basic set of site building tools. These
products include new content objects; relational database and other
external data source connectors; advanced content management tools;
and full applications for e-commerce, content and document
management, or bug and issue tracking. Zope includes its own HTTP,
FTP, WebDAV, and XML-RPC serving capabilities, but can also be used
with the Apache or other web servers.
PLONE.
Plone is a ready-to-run content management system that is built on
the powerful and free Zope application server. Plone is easy to set
up, extremely flexible, and provides you with a system for managing
web content that is ideal for project groups, communities, web
sites, extranets and intranets.
TYPO3.
TYPO3 is a Web Content Management Framework, that is: a tool to
develop and maintain web applications. It is very highly
customizable, and has an modular structure that allow for adding
and modifying behaviour of the system easily.
Scientific Tools
SciPy.
SciPy (pronounced "Sigh Pie") is open-source software for
mathematics, science, and engineering. It is also the name of a
very popular conference on scientific programming with Python. The
core library is NumPy which provides convenient and fast
N-dimensional array manipulation. The SciPy library is built to
work with NumPy arrays, and provides many user-friendly and
efficient numerical routines such as routines for numerical
integration and optimization. Together, they run on all popular
operating systems, are quick to install, and are free of charge.
NumPy and SciPy are easy to use, but powerful enough to be depended
upon by some of the world's leading scientists and engineers. If
you need to manipulate numbers on a computer and display or publish
the results, give SciPy a try!
ScientificPython.
ScientificPython is a collection of Python modules for scientific
computing. It contains support for geometry, mathematical
functions, statistics, physical units, IO, visualization, and
parallelization.
Octave.
GNU Octave is a high-level language, primarily intended for
numerical computations. It provides a convenient command line
interface for solving linear and nonlinear problems numerically,
and for performing other numerical experiments using a language
that is mostly compatible with Matlab. It may also be used as a
batch-oriented language.
Scilab.
Scilab is a scientific software package for numerical computations
providing a powerful open computing environment for engineering and
scientific applications.
Scilab is an open source software. Since 1994 it has been
distributed freely along with the source code via the Internet. It
is currently used in educational and industrial environments around
the world. Scilab is now the responsibility of the Scilab
Consortium, launched in May 2003. There are currently 23 members in
Scilab Consortium.
Scilab includes hundreds of mathematical functions with the
possibility to add interactively programs from various languages
(C, C++, Fortran…). It has sophisticated data structures
(including lists, polynomials, rational functions, linear
systems...), an interpreter and a high level programming
language.
Scilab has been designed to be an open system where the user can
define new data types and operations on these data types by using
overloading.
Gnuplot.
Gnuplot is a portable command-line driven interactive data and
function plotting utility for UNIX, IBM OS/2, MS Windows, DOS,
Macintosh, VMS, Atari and many other platforms. The software is
copyrighted but freely distributed (i.e., you don't have to pay for
it). It was originally intended as to allow scientists and students
to visualize mathematical functions and data. It does this job
pretty well, but has grown to support many non-interactive uses,
including web scripting and integration as a plotting engine for
third-party applications like Octave. Gnuplot has been supported
and under development since 1986.
Gnuplot supports many types of plots in either 2D and 3D. It can
draw using lines, points, boxes, contours, vector fields, surfaces,
and various associated text. It also supports various specialized
plot types.
Gnuplot supports many different types of terminals: interactive
screen terminals (with mouse and hotkey functionality), pen
plotters (like hpgl), printers (including postscript and many color
devices), and printings to output file as vectorial pseudo-devices
like LaTeX, metafont, pdf, svg, or bitmap png. Gnuplot is easily
extensible to include new devices.
R.
R is a language and environment for statistical computing and
graphics. It is a GNU project which is similar to the S language
and environment which was developed at Bell Laboratories (formerly
AT&T, now Lucent Technologies) by John Chambers and colleagues.
R can be considered as a different implementation of S. There are
some important differences, but much code written for S runs
unaltered under R.
R provides a wide variety of statistical (linear and nonlinear
modelling, classical statistical tests, time-series analysis,
classification, clustering, ...) and graphical techniques, and is
highly extensible. The S language is often the vehicle of choice
for research in statistical methodology, and R provides an Open
Source route to participation in that activity.
One of R's strengths is the ease with which well-designed
publication-quality plots can be produced, including mathematical
symbols and formulae where needed. Great care has been taken over
the defaults for the minor design choices in graphics, but the user
retains full control.
R is available as Free Software under the terms of the Free
Software Foundation's GNU General Public License in source code
form. It compiles and runs on a wide variety of UNIX platforms and
similar systems (including FreeBSD and Linux), Windows and
MacOS.
Geospatial Software (Desktop Applications)
GRASS (Geographic Resources
Analysis Support System).
GRASS (the Geographic Resources Analysis Support System) is a
vector and raster GIS, image processing system, graphics production
system, and spatial modeling system.
It contains many modules for raster and vector data manipulation,
rendering images on the monitor or paper, multispectral image
geocoding and processing, and attribute management.
Features:
2D raster analysis and 3D voxel management (volumes)
2D/3D Vector engine with SQL based DBMS support
Vector network analysis
Visualization of 2D, 3D maps and volumes
Interoperable with standard raster and vector formats
Works on GNU/Linux, Mac OS X, MS-Windows and other POSIX compliant
platforms
Modular architecture and scripting capabilities for batch
processing
Open Source Software Image
Map (OSSIM).
Open Source Software Image Map (OSSIM) is a high performance engine
for remote sensing, image processing, geographical information
systems and photogrammetry. It has been actively developed since
1996.
OSSIM has been funded by several US government agencies in the
intelligence and defense community and the technology is currently
deployed in research and operational sites.
Designed as a series of high performance software libraries, it is
written in C++ employing the latest techniques in object-oriented
software design. Many command line utilities, GUI applications, and
integrated systems have been implemented - several of which are
included with the software distribution.
Features:
Parallel processing capabilities with mpi libraries
Rigorous sensor modeling
Universal Sensor Models (RPCs)
Wide range of Map Projections and Datums supported
Non-destructive, parameter based image chains
Native file access
Precision Terrain correction and ortho-rectification
Advanced Mosaicing, compositing, and fusions
Elevation support
Vector and shapelib support
Projection and resolution independent
Equation editors
Geospatial Software (Web Mapping)
MapServer.
MapServer is an open source development environment for building
spatially-enabled web mapping applications and services. It is
fast, flexible, reliable and can be integratated into just about
any GIS environment. Originally developed at the University of
Minnesota, MapServer is now maintained by developers around the
world.
MapServer runs on all major operating systems and will work with
almost any web server. MapServer features MapScript, a powerful
scripting environment that supports many popular languages
including PHP, Python, Perl, C# and Java. Using MapScript makes it
fast and easy to build complex geospatial web applications.
MapServer is supported by a vibrant user community so help is just
an email away. Because MapServer is open source you get the source
code so it is possible to extend the software to exactly meet your
needs.
Features:
Supports industry standard data formats and spatial databases
On-the-fly feature classification
Sophisticated rule-based labeling
On-the-fly projection for both raster and vector data
Provides a wide variety of spatial and attribute-based
queries
Supports popular Open Geospatial Consortium (OGC) standards
including WMS, WFS and WCS
Leverages best-of-breed open source geospatial technologies such as
GDAL/OGR, PostGIS and PROJ.4
Integrates with popular front-end environments such as ka-Map,
Chameleon, Mapbender, MapBuilder and Cartoweb