Integrated Geographic Information System - Tool Kit
- 31.05.2020 - IGIS.TK is finally on HTTPS (thanks, Letsencrypt). HTTP is redirected to HTTPS.
- 03.03.2020 - Dai has allowed me “to use ezdit for any purpose, including change the license.“ Now, we can use ezdit as a basis for IGIS.TK's GUI without any license issues. Thanks a lot, Dai!
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 and extendable general-purpose GIS application, like QGIS or ArcView3.2 (but much better).
Most of the current GIS solutions prefer Python (or R, rarely). IGIS.TK would mainly use the Tcl/Tk programming language, which offers the following benefits:
- As everything is a string, in Tcl, the code can be treated as data and vice versa (e.g., the code can be sent through an open socket to be executed remotely). Thus, there are no data types and almost no predefined constructions. The behavior of any construction could be easily modified.
- Tcl is the best glue language; it is relatively 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 excelent 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 many 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 essential functionality (does not support transparency).
tkpath is an advanced vector graphics modern-looking widget based on tkcanvas (both use a shared library).
- 3D Maps: 3dcanvas is an independent minimalistic 3D widget VTK is a separate 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 that can be used in other projects should go to Tiles.CF or other related projects. Only, the IGIS.TK's specific code should reside in this repository.