Zum Hauptinhalt springen

Das MapEdit Datenmodel

Datenbanken mit Map 3D/Topobase Datenstrukturen oder anderen Datenstrukturen können vom MapEdit AppBuilder gelesen werden aber neue Tabellen etc können nicht angelegt/bearbeitet werden. Wenn Sie Map 3D/Topobase Datenmodel verwenden wollen benutzen sie bitte den TB Administrator um neue Tabellen etc anzulegen und zu bearbeiten.

Wenn Sie neue Datenbanken mit dem AppBuilder anlegen, wird immer die MapEdit Datenstruktur verwendet. Die MapEdit Datenstruktur hat eigene System Tabellen die nicht mit Map 3D/Topobase kompatibel ist. D.h. diese können nicht mit dem Map3D/TB Administrator geöffnet werden.

FIDs

Die FID im MapEdit Datenmodell ist wie im Topobase Datenmodell Datenbank über alle Tabellen eindeutig.

D.h. die gleiche FID sollte nicht in Tabelle A und Tabelle B vorhanden sein.

Wenn ein neuer Datensatz angelegt wird, wird durch die Datenbank Sequenz ME_NEXT_FID die jeweils nächste FID vergeben.

Beim MapEdit Datenmodell wird die Datenbankweite Eindeutigkeit der FID jedoch nicht von der Datenbank erzwungen. D.h. wenn man händisch via SQL oder Import etc Datensätze mit einer FID einfügt wird nicht geprüft ob die eingefügt FID schon vorhanden ist. Die Eindeutigkeit wird nur auf Tabellenebene erzwungen.

Dies ist so weil es in MapEdit im Gegensatz zu Topobase keine Tabelle TB_UFID gibt in der alle FIDs eingefügt werden. In MapEdit wurde auf so eine Tabelle verzichtet.

D.h. in der MapEdit Datenstruktur wird nicht verhindert das es in zwei Tabellen die gleiche FID gibt. Es wird aber empfohlen dies nicht zu machen.

Wenn bei einem Import als FID der Wert 0 eingegeben wird dann wird automatisch die nächste freie FID von der Sequenz vergeben und eingefügt.

Bei der MapEdit Datenstruktur wird desweiteren wenn ein Verweis auf eine FID in einer anderen Tabelle gemacht wird. z.B: ein Feld FID_ATTR jeweils auch ein Feld angelegt z.B. TABLE_NAME_ATTR in dem der Name der Tabelle abgelegt wird in dem die FID zu finden ist falls nicht eindeutig klar ist in welcher Tabelle die FID steht.

System Tabellen

ME_PARAMETER

Verwaltet allgemeine Einstellungen der Datenbank.

Werte für NAME

NameBeschreibung
DATABASE_NAMEName der Datenbank
VERSIONVersion der Datenstruktur der Datenbank
DEFAULT_SRIDSRID für Spatial Tabelle
CREATION_DATEDatum wan die Datenbank angelegt wurde
CREATION_USERBenutzer der die Datenbank angelegt hat
CONVERTEDIst die Datenbank aus einer Convertierung von Map3d/Topobase entstanden
AngleUnitWinkeleinheit bei ORIENTATION Feldern, mögliche Werte Gon/Degree. Wenn Zeile nicht vorhanden dann Gon.

ME_TABLE

Metadaten zu allen Feature und Domain Tabellen und Views.
(ungefähr vergleichbar mit TB_DICTIONARY unter Topobase/Map3D)

NAMEBeschreibung
IDEindeutige ID
TABLE_NAMEName der Tabelle oder des Views
CAPTIONKlartext Titel der Tabelle.
CONTENT_TYPEBeschreibt was für Daten die Tabelle enthält (Linien, Punkt etc)
IS_DOMAINIst die Tabelle eine Domain Tabelle (Kennungsliste)
IS_ACTIVEIst die Tabelle aktiv
TOPIC_IDTopic ID der Tabelle ME_TOPIC zu der die Tabelle gehört
MODEL_TABLE_NAMEggf zugehörige Model Tabelle
PARENT_TABLE_NAMEggf Eltern Tabelle der Tabelle
DIMENSIONAnzahl der Dimensionen
TOLERANCETolerance der Tabelle (z.b. fuer Topologie)
IS_SYNC_TABLEWenn 1 dann werden die Datensätze der Tabelle in der Datenmodell Vorlage mit gespeichert.
SYNC_COLUMN_NAMESpalten zur Synchronisierung von IS_SYNC_TABLE
IS_RECORD_LOG_ACTIVEGibt an ob die Datensatz Änderungsprotokollierung eingeschalten ist
RECORD_LOG_DATE_UTCDatum im Zeitformat Universal Time (GMT) der letzten Änderung an den Datensätzen der Tabelle, ist nur gefüllt wenn IS_RECORD_LOG_ACTIVE=1
SYNC_DATE_UTCDatum im Zeitformat Universal Time (GMT) zum Abgleich bei Verwendung der Synchronisierungs Funktion

ME_COLUMN

Metadaten zu allen Spalten

ME_VIEW

Metadaten zu allen Views.

NAMEBeschreibung
VIEW_NAMEName des Views
VIEW_TYPEFür was wird der View verwendet
ATTRIBUTE_TABLE_NAMEHier wird festgelegt welches Generic Formular geöffnet werden soll wenn in MapEdit Professional Ebene Baum der View ausgewählt und Dialog öffnen gewählt wird.
GEOMETRY_TABLE_NAMEHier wird festgelegt wo die Geometrie gespeichert werden soll wenn in MapEdit Professional Ebene Baum der View zum Digitalisieren verwendet wird
VIEW_SQL_ORIGINALDer Original View SQl so wie der Anwender ihn eingegeben hat
VIEW_SQL_STOREDDer View so wie die Datenbank ihn gespeichert hat
VIEW_SQL_SQLITESQLite SQL des Views
VIEW_SQL_POSTGREPostgres SQL des Views
VIEW_SQL_ORACLEOracle SQL des Views
VIEW_SQL_SQLSERVERSQL Server SQl des Views

Hinweis:
Wenn man bei Postgres einen View erzeugt dann speichert Postgres nicht den vom Anwender eingegeben View ab sondern Postgres ändert den View ab und fügt Castings und andere Sachen dem View hinzu. Deswegen speichern wir hier unter VIEW_SQL_ORIGINAL den vom Anwender eingegebenen View ab.

ME_TOPIC

Speichert alle Topic (Themen) und unter Themen ab.

ME_DATAMODEL

Metadaten zu allen Datenmodellen (Fachschalen) die die Datenbank beinhaltet.

NAMEBeschreibung
IDEindeutige ID (GUID) des Datenmodels
CAPTIONName des Datenmodels im Klartext (nicht von Bedeutung, von Bedeutung ist die ID)
VERSIONVersion des Datenmodels

Eine Datenbank kann mehrerer Datenmodelle beinhalten. z.B. Gas und Baum etc.

ME_DATAMODEL_UPDATE_LOG

Hier werden bei einem Datenmodell Update Informationen und Fehler geloggt.

ME_RELATION

Hier werden die Relationen der Tabellen gespeichert.

ME_LABEL_DEFINITION, ME_LABEL_LINE, ME_ALIGNMENT_HORIZONTAL, ME_ALIGNMENT_VERTICAL

Informationen für Labels (Beschriftung)

ME_TOPOLOGY, ME_TOPOLOGY_DEFINITION, ME_TOPOLOGY_MATRIX

Informationen für Topologien

ME_UTILITY, ME_UTILITY_TABLE

Informationen für Utilities

ME_RULE, ME_RULE_PARAMETER

Informationen für Feature Regeln

ME_REPRESENTATION

Informationen für Alternative Geometrien (Darstellungs Representationen)

ME_FILE

Ablage der Informationen für den Dokumenten Manager.
(In Topobase Tabelle TB_FEATURE_DOCUMENT)

ME_QR_CODE

Abspeichern für QR Codes zu jedem Feature. Bei Map Edit Datenmodellen wird die Tabelle bei der Datenstruktur mit angelegt. Bei Topobase Datenstrukturen muss man die Tabelle wenn man sie braucht im AppBuilder unter "Datenstruktur" -> "Mehr" - > "Tabelle ME_QR_CODE anlegen" erzeugen. Das SQL zur Erstellung der Tabelle wird für Oracle mitgeliefert, damit man es auch bei Map3d-Datenmodellen einsetzen kann.

Statt dem Feld FID (integer) gibt es aber ein Feld ID vom Typ text(40), dort wird eine GUID gespeichert. Sprich beim Einfügen eines Datensatzes dort einfach eine neue GUID als Text einfuegen.

ME_PLANNING, ME_PLANNING_VARIATION, ME_PLANNING_VARIATION_STATUS

Tabellen zur Verwaltung der Varianten Planung.

Der Bestand wird nun immer gesperrt wenn man diesen über die Planung aufmacht.

In der Tabelle ME_PLANNING_VARIATION_STATUS wo der Status drin steht gibt es nun ein Feld LOCK_DATA. Wenn dort eine 1 steht wird die Planung gesperrt.

Per default wird vom Programm beim Anlegen des Feldes die ID auf 2 und 3 oder auf 1 gesetzt. Man kann wenn man andere Status auf gesperrt setzen will, einfach dieses Feld setzen.

Das ganze geht intern so das es in der API eine neue Eigenschaft Repository.ReadOnlyConnections gibt. Dort kann man die Verbindungen eintragen die man sperren will.

Sobald irgendeine Stelle im Programm die Tabellenrechte via this.Project.FormPrivilege.GetPrivileges abfrägt, werden wenn die Datenbankverbindung in dieser Liste steht, die Rechte auf gesperrt gesetzt.

Info

Alle Stellen im Programm die this.Project.FormPrivilege.GetPrivileges benutzen, werden dann jeweils gesperrt. Das Programm verhält sich so als ob jemand die Rechte händisch auf gesperrt gesetzt hätte. Damit sind auch Generic Dialoge oder was auch immer gesperrt.

ME_INFO_REDIRECT

Umleitung von Generic Masken Info Funktion

ME_REFERENCE_RECORD, ME_REFERENCE_RECORD_COLUMN

Referenzdatensätze in Generic Dialogen

ME_SELECTION

Hilfstabelle zur Zwischenspeicherung von IDs und Geometrywerten.

NAMEBeschreibung
IDEindeutige GUID
USER_IDEindeutige Client ID (jeder Client hat eine eindeutige eigene ID)
CASE_IDEindeutige Fall ID
CHARVALUEText Wert
KEYVALUENumerischer Wert
UTCTICKSZeit in UTC Ticks des Falles
GEOMggf Geometrie (wird z.Z. nur bei Spatial Buffer Funktionen benutzt)

Wird als Hilfstabelle benutzt wenn SQL's zu lange werden und damit nicht mehr ausführbar sind. Dies kann z.B. passieren wenn sehr viele Objekte selektiert werden. Dann wird der Filter Select zu lange. Beim Spatial Filter wird diese Tabelle benutzt wenn Spatial Abfragen zwischen zwei verschiedenen Datenbanken ausgeführt werden sollen. Dann werden hier die Geometrien temporär abgespeichert. Die Werte der Tabelle sind immer nur temporär. Wird MapEdit regulär beendet werden die Client und Fall bezogene Eintrage gelöscht. Im Falle eines Absturzes werden Werte die älter als 24 Stunden sind vom System vor dem nächsten benutzen der Tabelle gelöscht. Da mehrere Clients gleichzeitig auf das System zugreifen werden die Datensätze pro USER_ID (Client ID) gespeichert. Ein Client kann des weiteren mehrere Fälle haben, diese werden in CASE_ID unterschieden.

Da die Werte z.B. als Filter in Formularen benutzt werden dürfen die Werte erst beim Beenden des Clients entfernt werden, da sonst ggf Filter die mittels Projekt Knöpfen an andere Formulare weiter gegeben wurden, nicht mehr funktionsfähig sind.

ME_DATACHECKER_RESULT

In der Tabelle ME_DATACHECKER_RESULT werden die Ergebnisse der Datenprüfung gespeichert.

FeldnameBeschreibung
IDEindeutige ID
USER_NAMELogin Benutzername der die Prüfung ausgeführt hat
CHECK_IDName der Prüfungskonfiguration
CHECK_NAMEName der Prüfung
FID_ITEMFid des geprüften Objektes
TABLE_NAMETabellenname des geprüften Objektes
CHECK_DATEDatum an dem die Prüfung ausgeführt wurde
CHECK_DESCRIPTIONBeschreibung der Prüfung
CHECK_ERRORFehlermeldung

System Views

Die folgenden Views sind Hilfs Views die in allen Datenbanktypen (Oracle,SQLite,Postgres,SQL Server) gleich aussehen und gleich abgefragt werden können.

Ansonsten muss man je Datenbanktyp wissen wie die entsprechende System Tabelle heist.

ME_ALL_TABLES

Namen aller Tabellen

ME_ALL_FEATURECLASSES

Namen aller Feature Tabellen und deren Typ (Punkt, Linie, etc)

ME_ALL_TABLE_COLUMNS

Alle Spalten aller Tabellen und deren Datentypen Definition.

ME_ALL_VIEWS

Alle Views Namen und die View Definition (SQL)

ME_RECORD_LOG

Ab Version 23.1.48

Protokoll von Datensatzänderungen wenn diese für eine Tabelle eingeschalten ist.
(Feld ME_TABLE.IS_RECORD_LOG_ACTIVE)

NAMEBeschreibung
IDEindeutige ID
TABLE_NAMEName der Tabelle zu der der Datensatz gehört
UFIDEindeutige GUID des Datensatzes
LOG_TYPEArt der Änderung (I)nsert, (U)pdate, (D)elete
LOG_DATE_UTCDatum der Änderung in Universal Time (GMT)
LOG_USERName des Anwenders der den Datensatz geändert hat
LOG_COMMENTKommentar mit Informationen auf was für Werte der Datensatz geändert wurde. Diese Information ist jedoch auf 4000 Zeichen beschränkt. Informationen länger als 4000 Zeichen werden abgeschnitten und mit "..." dargestellt.