Sometimes, GIS applications are too sophisticated for standard users.
For example, in the organization in which i work, we would like to develop the use of GIS applications, expand its use. However, we know that a very small percentage of the GIS application functionalities will actually be used.
The main reason is that the users' activities don't necessarily require knowing a large panel of the app functionnalities. Another reason is that their part-time activities don't allow them to devote too much time learning advanced features or performing complex operations.
One solution is to deploy simplified applications that will concentrate the major functionnalities the user needs.
Another one is to implement functions in existing GIS applications that ease the execution of complex operations.
For all of these problematics, opensource GIS softwares are the solution, insofar as we can shape them according to the user's needs...
To develop simplified applications, we have different opensource solutions, the most-known of them being the use of QGIS API. There also are Mapnik and other softwares...
With QGIS API, you can integrate plugins to QGIS that will be executed through buttons in the interface menu. Developing QGIS plugins is kind of developing on MapBasic for MapInfo.
When you develop, either applications, either plugins, you use the QGIS Python modules from the QGIS API library in your program...
For example, some functions of these modules allow you to get information about the loaded layers, like the projection system reference. They also allow you to perform tasks like zooming, adding layers, coordinate reference system transforming
Thus, you can execute a series of operations...
There are good links on the web that will teach you how to develop standalone applications and plugins. I listed them at the end of this post
A good way to get familiarized with the QGIS API python library is to use the python console included in the QGIS application...
The purpose of the next post is to teach you some QGIS API python routines that you'll use on the QGIS python console.
Actually, using the python console can be really helpful when you'll be preparing your standalone application or plugin code...
Developing in python language is a really good thing, as python is a re-known programming language, even used in web applications, like the powerful Content Management Systems ZOPE, or like web frameworks Django and Pylons...
From the QGIS wiki:
http://wiki.qgis.org/qgiswiki/PythonBindings (standalone app)
From the QGIS Blog
http://blog.qgis.org/?q=node/29 (standalone app)
http://blog.qgis.org/?q=node/59 (standalone app)