Automatische Umsetzung von dBase Sachdaten - Idee einer universellen GISDB-Tabelle

Benutzeravatar
Steffen Junghans
Beiträge: 44
Registriert: 22. November 2017, 18:38
Ort/Organisation: Stadt Zwickau
Kontaktdaten:

Automatische Umsetzung von dBase Sachdaten - Idee einer universellen GISDB-Tabelle

Beitrag von Steffen Junghans » 8. Juli 2021, 12:42

Hallo Mitstreiter,
wir schieben seit Jahren ein Problem vor uns her, für welches wir jetzt endlich eine schnelle und einfache Lösung gefunden haben :) .

1. Allgemeines

Im CAIGOS gibt es 3 verschiedene Arten der Sachdatenverwaltung:
  • 1. Key-Felder
    2. GISDB-Tabellen
    3. dBase-Sachdatentabellen
Historisch sind die GISDB-Tabellen als Nachfolger für die dBase-Sachdaten entwickelt worden.

GISDB-Tabellen sind aktuell die empfohlene Datenhaltung und nur diese werden auch in CAIGOS-Globe (IntraGIS/ZwickauGIS) unterstützt.

Die Stadt Zwickau hat ein relativ umfangreiches CAIGOS Hauptprojekt . Viele Ebenen sind dabei schon mit Sachdaten in GISDB-Tabellen ausgestattet.
Zusätzlich bestehen vor allem im Umweltbereich viele Ebenen mit dBase-Sachdaten Anbindung, welche vor allem noch aus dem "kreisfreien Status" der Stadt Zwickau stammen.

Diese dBase-Anbindung ist ein "Auslaufmodell", welches seit Jahren nicht mehr aktiv von CAIGOS unterstützt wird und mit deren "Abschaltung" (nach unserer Ansicht) jederzeit gerechnet werden muss.

Aktuell gibt es in unserem Hauptprojekt 58 GISDB-Tabellen und 65 dBase-Tabellen. Diese 65 Tabellen gehören meist zu Ebenen die sehr selten genutzt und nur im Ausnahmefall aktualisiert werden.

Die Verwaltung der GISDB-Tabellen in CAIGOS ist nach unserer recht unübersichtlich (keine Gruppierungen möglich) und auch die Namensgebung ist mit (lt. Doku) 5 freien Zeichen recht "unanschaulich".

Die 65 dBase-Tabellen 1:1 in 65 GISDB-Tabellen umzusetzen, wird somit nicht als praktikabler Weg angesehen.

2. Erstellung einer Universalsachdatentabelle (D4UUNIKEY/D4UUNIMETA)
Mit einer GISDB-Tabelle können recht umfangreiche Operationen durchgeführt werden.
Oft ist es allerdings ausreichend, wenn für die einzelnen GIS-Objekte Sachdaten abgefragt bzw. diese mit Sachdaten beschriftet werden können.
An dieser Stelle setzt die "Allgemeine Sachdatentabelle" an.

Diese Tabelle besteht aktuell aus 50 Spalten vom Format Text mit einer Feldbreite von 254 Zeichen. Zahlenwerte (Integer, Real) werden als Textfelder abgebildet.
Es sind somit je angebundenen Objekt 50 Feldwerte möglich.
Nachteilig dabei ist, dass die Feld-/Spaltennamen nicht individualisierbar sind, dh. sie haben keine "sprechenden" Namen, sondern sind einfach "durchnummeriert".

Dieses Problem kann bei Lizenzierung der GISDB-PRO mit einer zugeordneten Stammdatentabelle (D4UUNIMETA) abgefangen werden. Damit ist es möglich für jede Ebene (jedes Sachdatenthema) eine individuelle Datenmaske zu erstellen. Außerdem werden in der Stammtabelle weitere Metadaten (z.B. Ebenenname, Erstellungsdatum, allgemeine Beschreibung) gespeichert.


3. Funktionen
Durch den Einsatz der Stammdatentabelle ist es möglich für jede Fachebene eine individuelle Datenmaske darzustellen.
Die Feldwerte (Spalten) sind dabei auf 5 Registerkarten aufgeteilt, welche in Abhängigkeit der Spaltenanzahl automatisch zugeschalten werden

Beispiel identische Datenmaske für 2 verschiedene Fachebenen.
Maske1.png
maske2.png
Die "technischen" Feldnamen/Spaltennamen wurden 1:1 aus dem DBF-Import übernommen und können noch nachträglich angepasst werden.

Leider ist es technisch nicht möglich einzelne Felder sichtbar/unsichtbar zu schalten. Aus diesem Grund erfolgt die Aufteilung in (zuschaltbare) Registerkarten.

4. Einschränkungen
• keine individuell gestaltbaren Datenmasken
• nur ein Feldtyp (String/Text) sinnvoll nutzbar
• keine individuelle Rechtevergabe im Adminer möglich (nur per ELaP-Programmierung)
• in der Tabellenansicht muss die entsprechende Ebene ausgefiltert werden
• in der Tabellenansicht nur allgemeine Spaltennamen

5. Programmtechnische Umsetzung
5.1. Erstellung der Universal-GISDB-Tabellen (D4UUNIKEY/ D4UUNIMETA)
Sowohl die eigentliche GISDB-Datentabelle als auch die Metadatenstammtabelle haben jeweils mehr als 50 Spalten.
Eine manuelle Erstellung ist somit sehr aufwändig und fehleranfällig.
Aus diesem Grund erfolgte die Erstellung der beiden Tabellen und auch der Datenmaske direkt in der AdminerDB (dbdesign.cgbin).

Außerdem wird über eine D4UUNIKEY.ini eine individuelle Registerfreischaltung programmiert.

5.2. Allgemeines zur Konvertierung DBF nach GISDB
Neben den dbf-Dateien selbst ist ein Zugriff auf das CAIGOS-Projekt (PostgreSQL) notwendig, um die Art der Anbindung zu ermitteln bzw. anzupassen.
Auch erfolgt die Ermittlung der ObjID über die Geodatenbank.

Folgende praktische Rahmenbedingungen werden vorausgesetzt:
• die dBase-Tabellen sind entweder über die OBJID oder einen eindeutigen Key01 verbunden
• das Konvertierungsprogramm muss sowohl auf dBase als auch auf PostgreSQL zugreifen können.

Die Umsetzung erfolgt einmalig, so dass eine "Bastellösung" ausreichend ist.
Am übersichtlichsten wäre eine Python-Programmierung, am schnellsten/effektivsten (für uns) eine Umsetzung mit MSAccess/VBA.

Nachdem die Idee einer universellen GISDB-Tabelle entstanden ist, war die praktische Umsetzung der 65 Tabellen mit insgesamt 125.000 Datensätzen inklusive Programmierung praktisch innerhalb kürzester Zeit erledigt.

Damit ist das Kapitel dBase-Sachdaten in der Stadt Zwickau vom Tisch und es ist parallel eine Lösung entstanden, eine Ebene "mal schnell" mit Sachdaten zu versehen, ohne eine neue GISDB-Tabelle zu erstellen (und vor allem administrieren :( ) zu müssen.
Sie haben keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Viele Grüße
Steffen Junghans