[software] [catdoc] [tcl] [geography] [old things]

f(GIS) project

fGIS stands for "functional GIS". It means that fGIS uses functional data model rather than object-oriented. Spatial phenomena are interpreted as functions of spatial coordinates, defined on some subset of earth surface. Such subset can be contineous area, or set of lines, like transport or hydrography network, or even set of isolated points.

I hope that such approach would allow to develop powerful map operation language much like simple relational model of tabular data give birth to SQL.

Idea of fGIS was born when I've worked on DOS with EPPL7 and Arc/Info GIS systems. I've found that on most tasks, related with natural sciences, EPPL7 outperforms Arc/Info hundred times or so. So, I wanted to have system which is open-source, have purified ideology, and is free from some EPPL7 limitations, caused by 16-bit nature of DOS. Later I've found that GRASS already implements most of my ideas, but GRASS is huge and knowing how other raster GIS like IDRISI are outperformed by EPPL7, I have very few hopes that its existense makes my efforts useless.

Concepts of project, both data model and program design are described on separate page

If you could read Russian, you can read old conceptual paper on functional GIS.

Project structure

To avoid inventing of yet another, incompatible scripting language, we decided to develop f(GIS) as extension to Tcl/Tk. It give us not only full-featured macro language, but also cross-platform GUI and large set of extensions, including interfaces to major RDBMS servers.

fGIS project now consists of following parts:

  1. Portable C library to access EPPL7 data files.
    Documentation in russian language and PDF format is available. Later, I've decided to drop EPPL DGT vecrtor format in favor of my own, which would be more suitable for fGIS concept. DGT is bit too object oriented for me, while it is most compact and fast of non-topology vector GIS formats available.
  2. Environmental planning Utilities - reimplementation of major EPPL7 commands. EPPL7 stands for Environmental Planning Programming Language, but I don't want special language for it. There are lot of existing ones. I prefer to use Unix toolbox philosophy, so it is set of independednt utilities.

    Not all of this utilites are written yet.

  3. Tcl extensions to visualize data It is simple and most portable way to write map viewer. Planned features include drawing of raster maps as semi-transparent patterned images, which allow to overlay raster over raster, but now only colored maps work. This extension includes commands for editing raster files and for spatial queries
  4. Set of Tcl libraries to implement high-level tools. It should lead to complete graphical application with powerful macro language (TCL itself), access to most of SQL servers (all which have Tcl interface libraries, including ODBC standard on Win32 platform). This libraries should include wrappers for utilities, to hide from user two important things:
    1. that raster values are always integer numbers rather than text strings or real numbers and "legend files" are used to map one to another
    2. that logical map layer is not nessecary stored in separate raster file. It can share raster with other layer and differ from it only in value remapping (reclass) table.
    This libraries consist of several abstraction layers, which are not properly documented yet.
  5. Tcl application which provides graphical user environment. Idea behind it is that most everyday tasks should be performed by few mouse clicks, but if you want more you always can open Tcl console and have a full power of Tcl at your fingertips, including ability to modify GUI.

    Current state

    f(GIS) project haven't reach evel alpha stage yet. I would consider it alpha not sooner than at least 80% of features would be implemented. But it is already usable for those who own EPPL7 and want portable viewer for their maps or utilities which overcome some limitations of EPPL7. You can browse TO DO list. I would be grateful if you would peek something from it and attempt to implement it.

    There is no snapshots and releases. This page have only historical interest

    Be sure to read installation instructions before attempt to install fGIS.

    Of course, it is not guaranteed even to compile, nevertheless to run, although it have been used successfully on Linux (GCC 2.7.2), Solaris-SPARC (GCC 2.7.2) and (utilities only) DOS (Watcom C 10). It would almost undoubtely fail to compile on 64-bit platform (any brave soul with Alpha or UltraPenguin to port?).

    Current version of visualisation library works with Tcl/Tk 8.0p2. It should also work with Tcl 7.6p2/Tk 4.2p2. Note that dash patch is almost neccessary, becouse without it Tk would unable to print (save to postscript) raster maps, produced by f(GIS). Img extensioncan also be helpful, if your raster data are not limited to GIS maps. Note that current version of patch, accompaniing this extension, allows to make offsite of raster maps transparent. In future, this would be requirement, but for now, while fGIS is not fully functional. I don't like to force you to apply patches which could break your other Tcl scripts or extensions.

    Distribution policy

    Once f(GIS) would be released, it would be distributed under GNU Public license. Pre-alpha versions are freely downloadable, but can be used for evaluation only unless you are planning to take part in development. If f(GIS) is useful for you even in such limited state, contact me and I would consider marking some parts of project alpha, thus allowing their redistribution.