Integrated Geographic Information System - Tool Kit
The current status is "work in progress" and prototype.
Collection of GIS tools and libs related to the following tasks:
- OSM Data Processing and data conversion,
- Data Quality Assessment,
- Spatial Data Fusion,
- (3D) Generalization...
Prospectively, IGIS.TK can be utilized as a general-purpose GIS application or advanced GIS programming environment
Motivation and Aims
IGIS.TK would provide a command-line and GUI environment for quick prototyping and professional development of GIS applications and conducting geoprocessing. The environment itself will be utilized to build a highly pluggable end extendable general-purpose GIS application, like QGIS or ArcView3.2.
Most of the current GIS solutions are based on Python environments. IGIS.TK would mainly use the Tcl/Tk programming language offering the following benefits:
- As everything is a string, in Tcl, the code can be considered as data and vise versa (e.g., the code can be sent through an open socket to be executed remotely). Thus, there are no data type and almost no predefined constructions. The behavior of any construction could be easily modified.
- Tcl is the best glue language; it is quite trivial to utilize any libraries written in C, C++, Java, and, even, Python.
- The Threads extension is very straight forward and clear, in contrast to other languages
- The concepts of interpreters and, especially, safe interpreters give us amazing benefits, unreachable with other solutions
- Tk GUI library is one of the greatest advantages of Tcl. Now, it is even running on Android with Androwish. Tk-based Tkinter is a still unreplaceable solution for many applications.
- Tcl is probably the best in metaprogramming and event-based programming
The integrating concept of IGIS.TK is presented in the following figure.
The IGIS.TK core consists of a Tcl/TK and a number of Tcl extensions/libraries/applications included in Androwish. The core is tightly integrated (mainly through Tcl bindings) with GIS (Proj.6, GEOS, GDAL/OGR, Spatialite, GRASS GIS) and other libraries and applications (GNUPlot, GraphicsMagick, VTK, OpenCV, MxNet).
IGIS.TK will provide an integrated environment for multiple plugins/widgets. They can be represented in the two following forms:
- *.igis.tk - a widget providing GIU,
- *.igis.tcl or any command-line application - command-line applications, IGIS.TK will automatically make a GUI using its help instructions (using --help or -h dry-runs); instructions must follow/correspond to the IGIS.TK's conventions (to be defined).
Further development steps are as follows:
- GUI Development and Refined. *.igis.tcl and *.igis.tk will be pluggable applications to be executed in the frame of a GUI container as a separate thread and, sometimes, in a safe interpreter (for untrusted code). The former is for command-line tools, GUI will be generated on the fly based on help instructions.
- Provide map widgets as *.igis.tk pluggable applications.
- 2D Maps:
tkcanvas is the main widget providing basic functionality (does not support transparency).
tkpath is advance vector graphics modern-looking widget based on tkcanvas (both use a shared library).
- 3D Maps: 3dcanvas is an independent minimalistic 3D widget VTK is an independent advanced 3D VTK canvas widget
- 2D Maps:
- GNUPlot widget is provided for advanced chart functionality Graphical widgets may utilize GraphicsMagick.
Support the following vector formats (data providers):
- SpatialLite (main native vector data format)
Support the following raster formats:
- RasterLite (main native raster data format)
Native support for tiled maps, WMS, and WFS.
- Gradually improve and prepare new high-level GIS tools utilizing the environment.
- Writing lacking binding (or integration mechanisms) for the mentioned libraries and applications.
All generic functionality which can be used in other projects should go to Tiles.CF or other related projects. Only, the IGIS.TK's specific code should resided in this repository.