Artifact Content

Artifact 43769e45161122e9f49997d0b2916a1a92c89e96fc189a6b0c671bed2965af95:

Wiki page [IGIS.TK] by nkov 2019-07-25 10:13:50.
D 2019-07-25T10:13:50.956
P 985a025e4320da594cb3088ded9aa1a8fa30ceb97d13de8c930a98ee30d0759a
U nkov
W 5191
<h1>Integrated Geographic Information System - Tool Kit</h1>
<p>The current status is "work in progress" and prototype.</p> 
<img src="http://ar.n-kov.com/share/img/igisui.png" alt="IGIS UI" />
<p>Collection of GIS tools and libs related to the following tasks:</p>
<li>OSM Data Processing and data conversion,
<li>Data Quality Assessment,
<li>Spatial Data Fusion,
<li>(3D) Generalization...
<p>Prospectively, IGIS.TK can be utilized as a general-purpose GIS application or advanced GIS programming environment</p>
<h2>Motivation and Aims</h2>
<p>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.</p>
<p>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:</p>
<li>As <a href="https://wiki.tcl-lang.org/page/everything+is+a+string">
everything is a string</a>, 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.</li>
<li>Tcl is the best glue language; it is quite trivial to utilize any libraries written in C, C++, Java, and, even, Python.</li>
<li>The Threads extension is very straight forward and clear, in contrast to other languages</li>
<li>The concepts of interpreters and, especially, safe interpreters give us amazing benefits, unreachable with other solutions</li>
<li>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.</li>
<li>Tcl is probably the best in metaprogramming and event-based programming</li>

<h2> Concept </h2>
<p>The integrating concept of IGIS.TK is presented in the following figure.</p>
<img src="http://ar.n-kov.com/share/img/igistkconcept.svg" alt="IGIS.TK's integrating environment" /></p>

<p>The IGIS.TK core consists of a Tcl/TK and a number of Tcl extensions/libraries/applications included in <a href="https://www.androwish.org/index.html/wiki?name=Batteries+Included">Androwish</a>. 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).</p> 

IGIS.TK will provide an integrated environment for multiple plugins/widgets. They can be represented in three 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).

<h2>Planned Work</h2>

<p>Further development steps are as follows:</p>

<li>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.
<li>Provide map widgets as *.igis.tk pluggable applications. 
<li>2D Maps:
<p>tkcanvas is the main widget providing basic functionality (does not support transparency).
<p>tkpath is advance vector graphics modern-looking widget based on tkcanvas (both use a shared library).</li>
<li>3D Maps:
3dcanvas is an independent minimalistic 3D widget
VTK is an independent advanced 3D VTK canvas widget
<li>GNUPlot widget is provided for advanced chart functionality
Graphical widgets may utilize GraphicsMagick. </li>

<li>Support the following vector formats (data providers):
<li>SpatialLite (main native vector data format)

Support the following raster formats:
<li>RasterLite (main native raster data format)

<li>Native support for tiled maps, WMS, and WFS.</li>
<li>Gradually improve and prepare new high-level GIS tools utilizing the environment.</li>
<li>Writing lacking binding (or integration mechanisms) for the mentioned libraries and applications.</li>

<p>All generic functionality which can be used in other projects should go to <a href="http://tiles.cf">Tiles.CF</a> or other related projects. Only, the IGIS.TK's specific code should resided in this repository.</p>

<h3>More Screenshots</h3>

<img src="http://ar.n-kov.com/share/img/screenshorts/igistk/s1.png" alt="IGIS UI Ediror" />

<img src="http://ar.n-kov.com/share/img/screenshorts/igistk/s3.png" alt="IGIS UI SQLite Manager" />

Z a7400e16459355066a298d5a36376639