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 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.
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 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.
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.
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 is a widely-used general-purpose scripting language that is especially suited for Web development and can be embedded into HTML.
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.
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 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 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.
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 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 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 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.
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 is a collection of Python modules for scientific computing. It contains support for geometry, mathematical functions, statistics, physical units, IO, visualization, and parallelization.
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 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 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 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.
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
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.
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
Vector and shapelib support
Projection and resolution independent
Geospatial Software (Web Mapping)
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.
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