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
Name | Beschreibung |
---|---|
DATABASE_NAME | Name der Datenbank |
VERSION | Version der Datenstruktur der Datenbank |
DEFAULT_SRID | SRID für Spatial Tabelle |
CREATION_DATE | Datum wan die Datenbank angelegt wurde |
CREATION_USER | Benutzer der die Datenbank angelegt hat |
CONVERTED | Ist die Datenbank aus einer Convertierung von Map3d/Topobase entstanden |
AngleUnit | Winkeleinheit 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)
NAME | Beschreibung |
---|---|
ID | Eindeutige ID |
TABLE_NAME | Name der Tabelle oder des Views |
CAPTION | Klartext Titel der Tabelle. |
CONTENT_TYPE | Beschreibt was für Daten die Tabelle enthält (Linien, Punkt etc) |
IS_DOMAIN | Ist die Tabelle eine Domain Tabelle (Kennungsliste) |
IS_ACTIVE | Ist die Tabelle aktiv |
TOPIC_ID | Topic ID der Tabelle ME_TOPIC zu der die Tabelle gehört |
MODEL_TABLE_NAME | ggf zugehörige Model Tabelle |
PARENT_TABLE_NAME | ggf Eltern Tabelle der Tabelle |
DIMENSION | Anzahl der Dimensionen |
TOLERANCE | Tolerance der Tabelle (z.b. fuer Topologie) |
IS_SYNC_TABLE | Wenn 1 dann werden die Datensätze der Tabelle in der Datenmodell Vorlage mit gespeichert. |
SYNC_COLUMN_NAME | Spalten zur Synchronisierung von IS_SYNC_TABLE |
IS_RECORD_LOG_ACTIVE | Gibt an ob die Datensatz Änderungsprotokollierung eingeschalten ist |
RECORD_LOG_DATE_UTC | Datum 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_UTC | Datum im Zeitformat Universal Time (GMT) zum Abgleich bei Verwendung der Synchronisierungs Funktion |
ME_COLUMN
Metadaten zu allen Spalten
ME_VIEW
Metadaten zu allen Views.
NAME | Beschreibung |
---|---|
VIEW_NAME | Name des Views |
VIEW_TYPE | Für was wird der View verwendet |
ATTRIBUTE_TABLE_NAME | Hier 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_NAME | Hier wird festgelegt wo die Geometrie gespeichert werden soll wenn in MapEdit Professional Ebene Baum der View zum Digitalisieren verwendet wird |
VIEW_SQL_ORIGINAL | Der Original View SQl so wie der Anwender ihn eingegeben hat |
VIEW_SQL_STORED | Der View so wie die Datenbank ihn gespeichert hat |
VIEW_SQL_SQLITE | SQLite SQL des Views |
VIEW_SQL_POSTGRE | Postgres SQL des Views |
VIEW_SQL_ORACLE | Oracle SQL des Views |
VIEW_SQL_SQLSERVER | SQL 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.
NAME | Beschreibung |
---|---|
ID | Eindeutige ID (GUID) des Datenmodels |
CAPTION | Name des Datenmodels im Klartext (nicht von Bedeutung, von Bedeutung ist die ID) |
VERSION | Version 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.
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.
NAME | Beschreibung |
---|---|
ID | Eindeutige GUID |
USER_ID | Eindeutige Client ID (jeder Client hat eine eindeutige eigene ID) |
CASE_ID | Eindeutige Fall ID |
CHARVALUE | Text Wert |
KEYVALUE | Numerischer Wert |
UTCTICKS | Zeit in UTC Ticks des Falles |
GEOM | ggf 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.
Feldname | Beschreibung |
---|---|
ID | Eindeutige ID |
USER_NAME | Login Benutzername der die Prüfung ausgeführt hat |
CHECK_ID | Name der Prüfungskonfiguration |
CHECK_NAME | Name der Prüfung |
FID_ITEM | Fid des geprüften Objektes |
TABLE_NAME | Tabellenname des geprüften Objektes |
CHECK_DATE | Datum an dem die Prüfung ausgeführt wurde |
CHECK_DESCRIPTION | Beschreibung der Prüfung |
CHECK_ERROR | Fehlermeldung |
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)
NAME | Beschreibung |
---|---|
ID | Eindeutige ID |
TABLE_NAME | Name der Tabelle zu der der Datensatz gehört |
UFID | Eindeutige GUID des Datensatzes |
LOG_TYPE | Art der Änderung (I)nsert, (U)pdate, (D)elete |
LOG_DATE_UTC | Datum der Änderung in Universal Time (GMT) |
LOG_USER | Name des Anwenders der den Datensatz geändert hat |
LOG_COMMENT | Kommentar 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. |