Das Smallworld GIS ist im Bereich der Versorgungstechnik recht verbreitet. Es basiert auf einer von "Smalltalk" abgeleiteten, objektorientierten Programmiersprache "Magik". Diese Sprache ist sehr mächtig und kann, korrekt eingesetzt, sehr effizient sein.
Oberfläche
Das ursprüngliche Smallworld GIS kam aus der VAX-Welt (Digital Equipment) und später UNIX bzw. Linux. Entsprechend war die Oberfläche ursprünglich auf ein Hauptgrafikfenster ausgelegt, von dem diverse Editoren in jeweils eigenen Fenstern aufgerufen wurden. GIS 3.2 sah zum Beispiel so aus:
Das GUI des GIS hat sich in den letzten Jahrzehnten, in Anlehnung an den Erfolg von Microsoft Windows, erheblich geändert. Momentan ist die sogenannte SWAF-Architektur am meisten verbreitet, bei der verschiedene Plugins über eine XML-Konfiguration zusammengestellt werden. Das Ergebnis sieht dann z. B. so aus:
Mittlerweile (ab GIS 4.3) wird dies noch weiter verfeinert mit der sogenannten SWIFT Architektur, die aber äußerlich recht ähnlich ist und mit SWAF gemischt werden kann.
Sprache
Eine Eigenschaft von Magik ist, dass Variablen typunabhängig sind. Das kann von Vorteil sein, bedingt aber einen sehr disziplinierten Programmierstil, um unnötige Fehler zu vermeiden.
Dies ist ein Beispiel für Magik:
_pragma(classify_level=basic, usage={external}, topic={swnam}) _method gm_swn_table_mapping.new_from_xml_element( owner, xml_ele ) ## ## Description: ## Create _self from an XML element. See method ## init_from_xml_element() _local new_instance << _clone.init_from_xml_element( owner, xml_ele ) _return new_instance _endmethod $
Unter den bekannten Sprache ist sie am ehesten mit "Java" verwandt, in der Tat existiert auch eine auf Java und dessen VM (Virtual Machine) basierende Variante, die möglicherweise Magik eines Tages ablösen wird.
ACP
Für Aufgaben, welche den Funktionsumfang von Magik sprengen, verwenden wir sogenannte ACPs (Alien Coprocessor), das sind Programme in 'C' oder Java, welche sehr effizient in den Magik-Kern eingebunden werden können. Damit stehen, besonders im Bereich Schnittstellen, praktisch alle Wege zu anderen Systemen offen.
Beispiele:
- Für den Zugang zu sqlite im Zuge der Realisierung der SWHomage Schnittstelle kommt ein ACP in der Sprache 'C' zum Einsatz. Dieser ist Bestandteil der SWHomage-Schnittstelle.
- Für das Erstellen von Excel-Dokumenten verwandten wir an verschiedenen Stellen einen ACP in Java. Der Vorteil ist, dass Excel auf den GIS-Maschinen nicht installiert sein muss (Projekte für Geomagic, Mettenmeier und FWF)
- Für eine Ad-Hoc-Triangulation eines Höhenmodells für die Ermittlung der Höhen von Knotenpunkten eines hydraulischen Rechenmodells setzten wir ebenfalls einen ACP in Java ein (Projekt für FWF und andere Fernwasserversorger)