Fragen und Probleme
Diese Beschreibung ist in Bearbeitung und gilt nur Versionen höher 25.2.120
Informationen zum Wechsel von Version 25.1 auf Version 25.2
Dies ist eine kurze Übersicht. Aufgrund umfangreicher Änderungen, die auf Kundenwunsch umgesetzt wurden, wird dringend empfohlen, das aktuelle Handbuch vollständig und sorgfältig zu lesen. Beachten Sie unbedingt die Kapitel Vorbereitung MapGuide/MapServer.
Allgemeine Hinweise
- Einstellungen aus Version 25.1, die weiterhin benötigt werden, werden automatisch in Version 25.2 übernommen. Zusätzlich erfolgt eine Sicherung der alten Konfigurationen. Nach dem ersten Start muss die Funktion „Alle Karten aktualisieren“ ausgeführt werden.
Änderungen im Karten- und Layerhandling
- Das Programm analysiert nun für jede Karte, welche Layer verwendet werden und welche Tabellen und Spalten diesen zugeordnet sind. Es erkennt dadurch automatisch, welche Tabellen und Views relevant sind.
- Trigger werden ausschließlich auf Tabellen angelegt, die in einer Karte verwendet werden.
- Trigger reagieren nur auf Spalten, die in der jeweiligen Karte aktiv genutzt werden.
- Im Trigger-Log (ME_TILEUPDATE_LOG)) wird dokumentiert, zu welcher Karte ein Datensatz gehört – nur diese Karte wird daraufhin aktualisiert.
- Zoom Level werden nun berücksichtigt
XML-Erzeugung und Triggerverhalten
- Beim Generieren der XML-Dateien wird nun auch der Zoom-Level der Layer mit übergeben.
- Fehlgeschlagene Trigger werden in der Tabelle ME_TILEUPDATE_TRG_ERR protokolliert.
- Die Methode „HASH“ wurde umbenannt in „NoTrigger“.
- Die Methode „LAUNCH“ wurde in „Relation Trigger“ umbenannt und entspricht nun echten Triggern. Diese werden nicht wie in Version 25.1 erst beim Ausführen des TileUpdaters aktiviert.
- Daten aus „HASH“-Methoden für Views ohne „Relation Trigger“ werden automatisch in SQLite-Datenbanken abgelegt, die vom System selbst erstellt werden.
Trigger-Logging und Performanceanalyse
- Die Trigger-Log-Tabelle heißt nun ME_TILEUPDATE_LOG.
- Das Trigger-Log wird bei jeder Ausführung geleert; vorhandene Einträge werden in XML-Dateien exportiert.
- Beim Ausführen einer Karte werden alle zugehörigen, bisher nicht ausgeführten XML-Dateien automatisch mit ausgeführt.
- Bei Layern, die Views verwenden und keine „Relation Trigger“ besitzen, wird nun die Bearbeitungsdauer angezeigt. Dies ermöglicht die Identifikation von langsamen Views, die optimiert oder mit Triggern versehen werden können.
Weitere Änderungen
- Das Programm erstellt keine automatischen Einstellungen mehr.
- Beim Aktualisieren einer Karte wird angezeigt, ob Layer hinzugefügt oder entfernt wurden.
- Die TileUpdater-Versionen 25.1 und 25.2 können vorübergehend parallel verwendet werden.
- Die Ausführung erfolgt nun über eine separate EXE-Datei – der AppBuilder wird dabei nicht blockiert.
- In der Benutzeroberfläche kann die Ausführung von Karten geplant werden.
- Die Datei MapEdit.Executor.exe heißt jetzt MapEdit.Executor.Desktop.exe.
Ich darf keine Trigger verwenden
Falls Sie keine Trigger verwenden dürfen, muss die betreffende Datenbank vor dem Hinzufügen der Karte über den Ribbon-Button "Werkzeuge" -> "Configure Triggerless Databases" entsprechend konfiguriert und hinzugefügt werden.
Ich will immer nur die ganze Karte neu Rendern
siehe Kapitel "Weitere Informationen" und dort "Werkzeuge -> Karte hinzufügen (Full Re-Render Mode)"
Was bedeutet der * in der Spalte "View Tables"
Der * vor einem Tabellennamen bedeutet, dass die Tabelle keine Geometrie Spalte hat.
Warum können Änderungen von Feldwerten Auswirkungen auf die Grafik haben?
Die Annahme, dass Feldwertänderungen keine grafischen Auswirkungen haben, ist nicht korrekt.
Auch Attributtabellen oder andere verknüpfte Tabellen können über Views oder SQL-Abfragen die Darstellung beeinflussen.
Beispiele für grafisch relevante Feldwerte:
- Farbsteuerung:
Ein Linienobjekt kann abhängig von einem Feldwert farblich unterschiedlich dargestellt werden.
Wird dieser Wert geändert – egal ob in der Geometrietabelle oder einer verknüpften Attributtabelle – muss die Kachel neu gerendert werden. - Beschriftung (Labels):
Feldwerte werden häufig als Labeltexte verwendet. Eine Änderung des Textes erfordert ebenfalls eine Aktualisierung der Darstellung.
Die grafische Darstellung basiert oft auf kombinierten Datenquellen. Änderungen in jedem beteiligten Feld, unabhängig von der Tabellenart, können die Visualisierung beeinflussen und müssen daher im Trigger-Log erfasst und grafisch aktualisiert werden.
Was bedeutet das Feld MODIFICATION_TYPE in Tabelle ME_TILEUPDATE_LOG
Das Feld MODIFICATION_TYPE (Art der Modification) zeigt an durch welche Aktion der LOG Datensatz entstanden ist.
Wert | Bedeutung | |
---|---|---|
U | Update (Änderung) | Der Anwender hat einen Datensatz geändert |
I | Insert (Einfügen) | Der Anwender hat einen neuen Datensatz eingefügt |
D | Delete (Löschen) | Der Anwender hat einen Datensatz gelöscht |
Zoom Level
Für jeden Layer jeder Karte wird der Zoom Level Bereich ermittelt und in der XML mit ausgegeben. Somit werden nur die Zoom Level neu gerendert die den Layer betreffen.
Wenn mehrer Layer einer Karte die gleiche Tabelle verwenden aber unterschiedliche Zoom Level Bereiche haben, dann werden die Zoom Level Bereiche kombiniert.
Was ist die Master ID
Die Master ID ist eindeutig pro MapEdit Server Konfiguration.
Wenn Sie von mehreren MapEdit Servern gleichzeitig auf die gleiche Datenbank gehen, dann weis das Programm damit welche Trigger zu welchem MapEdit Server gehören.
Wenn Sie händisch die Datei "TileUpdater.TudMaster" gelöscht haben, wovon wir dringend abraten, dann entsteht eine neue MasterId und das System nimmt damit an es sind mehrere MapEdit Server beteiligt.
Warum sind die Karten IDs nicht immer fortlaufend?
Die IDs bei Karten werden Absicht nicht wiederverwendet nachdem Sie geloescht wurden da sonst Probleme mit bereits vorhandenen Definitionen entstehen können.
Was bedeutet die Spalte "Render Mode"
ChangesOnly = Es werden für die Karte nur geänderte Stellen neu rerendert. FullReRender = Es werden für die Karte alle Kacheln neu gerendert
Hinweis zu Materialzed Views
Ein Materialized View ist eine physische Tabelle, die das fixe Resultat einer Abfrage enthält. Ein Materialized View ist kein wirklicher View, auch wenn der Name so klingen mag. Ein Materialized View ist ein View der als Tabelle abgespeichert wurde.
Deswegen erscheinen Materialzed Views in der Datenbank als Tabellen und nicht als "Views".
Sie können dies selbst testen:
Dieser SQL zeigt in Oracle alle Tabellen
select * from user_tables order by TABLE_NAME
Dieser SQL zeigt in Oracle alle Views
select * from user_views order by VIEW_NAME
Sie werden sehen, dass Materialzed Views unter "Tabellen erscheinen".
Hinweis zu Views die ME_VARIABLE verwenden
Der TileUpdater verwendet zum neu Render der Kacheln immer den Wert des Admin Users der zum Zeitpunktes des Ausführens von „TileUpdater Token zu MapEdit.Executor.ini hinzufügen“ eingeloggt war.
Hinweis zu SQLite
Wir raten dazu SQLite Datenbanken nie als Erfassungsdatenbanken zu verwenden. Verwenden Sie dazu das kostenlose Postgres oder Oracle.
SQLite ist nicht für gleichzeitigen schreibenden Zugriff konzipiert. D.h. Schreibzugriffe können nicht gleichzeitig ausgeführt werden und werden blockiert bzw. nacheinander verarbeitet.
SQLite Datenbanken sollte nur in Ausnahmefällen und dann nur als Auskunftsdatenbank verwendet werden.
Wenn Sie trotzdem SQLite mit dem Tile Updater verwenden wollen, dann geht das nur ohne Trigger. Tabellen werden hier wie Views mit der Methode NoTrigger verarbeitet, also ohne Trigger.
Es werden sehr viele Datensätze in der Tabelle ME_TILEUPDATE_LOG erzeugt.
Wenn Sie Tabellen verwenden, deren Inhalte sich regelmäßig und vollständig ändern – etwa durch nächtliche Synchronisationen mit externen Systemen – kann dies zu einer sehr großen Anzahl an Log-Einträgen führen. Da jede Änderung einen Trigger auslöst, bedeutet dies auch, dass sämtliche Kacheln der betroffenen Tabelle neu gerendert werden müssen.
Empfehlungen zur Optimierung:
- Prüfen Sie, ob der Einsatz des TileUpdaters in solchen Fällen überhaupt sinnvoll ist. Gegebenenfalls ist ein vollständiges Neu-Kacheln effizienter als das inkrementelle Aktualisieren.
- Erwägen Sie die Erstellung einer separaten Karte (mit eigenen Kacheln) für diese Tabelle, sodass sie nicht im regulären TileUpdater-Prozess enthalten ist.
- Falls die Synchronisation alle Datensätze löscht und neu anlegt,
und der TileUpdater nur z. B. wöchentlich ausgeführt wird,
empfiehlt sich für diese Tabellen die Verwendung der Methode „NoTrigger“.
So vermeiden Sie unnötige Systemlast und verbessern die Performance bei der Kachelaktualisierung.
Der Tile Updater braucht zu lange, was kann ich tun?
Lesen Sie das Kapitel "Optimierung"
Denke Sie darüber nach ob der Einsatz des Tile Updater überhaupt Sinn macht. Wenn Sie immer sehr viele Änderungen haben so das sehr viele Kacheln neu gerendert werden müssen dann ist ein komplettes neu-render einfacher und weniger fehleranfällig als das verwenden des TileUpdaters.
Verwechseln Sie die Laufzeit des Tile Updaters nicht mit der Laufzeit des Tile Servers. Dies sind zwei getrennte Programme!
Der Tile Server braucht zu lange zum Rendern, was kann ich tun?
Es werden zu viele Kacheln gerendert.
Dies kann aus den Einstellungen UseBufferToPreventPartials und BufferNumberOfTiles des TileServers kommen.
Oder kann auch auftreten wenn der TileUpdater misskonfiguriert wurde. Im Log sehen Sie mit dem MBR welche Geometriebereiche und Features gerendert werden.
Kacheln werden nicht neu gerendert
Prüfen Sie das Log des Tile Server, ob darin Fehlermeldungen zu finden sind.
Benutzen Sie den "Ausführen wiederholen" Knopf, um den Vorgang nochmals an zu stossen.
Auf Ihrem MapEdit Server werden im Verzeichnis
C:\inetpub\wwwroot\MumGeoData\TileUpdater\Invalidate
Wenn es Änderungen gab, muss dort je Karte mindestens eine XML Dateien stehen. Wenn es keine Änderungen gab wird keine Datei geschrieben. In dieser XML Datei sind die Geometriebereiche zu finden, die geändert wurden. Die Datei kann mit einem Text-Editor geöffnet werden.
Mit dem "Tile Server Manager" können Sie beobachten, ob und was der Tile Server gerade ausführt.
Der "Tile Updater" und "Tile Server" sind zwei getrennte Programme. Verwechseln Sie das eine nicht mit dem anderen. Der "Tile Updater" findet heraus, welche Geometriebereiche gekachelt werden müssen. Der "Tile Server" erzeugt (rendert) die Kacheln.
Nur weil der "Ausführen" bzw. "Ausführen wiederholen" Knopf gedrückt wurde und die Benutzeroberfläche keine Aktion anzeigt, bedeutet das nicht das alle Kacheln gerendert wurden.
Das Rendern der Kacheln macht der Tile Server im Hintergrund. Das kann mit dem "Tile Server Manager" beobachten werden. Schauen Sie auch in das Register "Log" im Tile Server Manager.
Beachten Sie, dass jede Datenbank nur in jeweils einer Tile Updater Konfiguration angegeben werden darf. Es können darin dann aber mehrere Karten angegeben werden.
Kopieren oder verdoppeln Sie nie händisch eine Tile Updater Konfigurationdatei!
Informationen zum Tile Server finden Sie auch hier:
https://help.mapedit.de/docs/Dokumentation/MapEdit-Server/MapEdit-TileServer/
Kacheln erscheinen abgeschnitten
Siehe Tile Server Dokumentation.
Dort die Einstellungen UseBufferToPreventPartials und BufferNumberOfTiles
Ich habe einen Datensatz geändert er erscheint aber nicht im Änderungsprotokoll
Im Protokoll sind vor dem Ausführen des TileUpdaters nur Änderungen zu sehen die von Triggern verursacht wurden.
Bei Views oder Tabellen der Methode "NoTrigger" werden Änderungen im Protokoll nicht Protokolliert außer es wurden Relation Trigger konfiguriert. Die Ändrungen von Views sind nur in den XML Dateien zu sehen.
Da bei SQLite keine Trigger verwendet werden wird im Trigger Protokoll nie etwas angezeigt.
Error calling TileServer
Die Meldung:
Error calling TileServer: http://test:8080/TileServer/TileServlet?invalidate&url=http%3a%2f%2fsv000151%2fMumGeoData%2fTileUpdater%2fInvalidate%2fIBA_GA_WP_500.06092022_050018.xml&seq=20220906A050034722
Error Message: The operation has timed out
bedeutet, dass der Tile Server nicht aufgerufen werden konnte.
Der Tile Server löscht und erzeugt die Kacheln, nicht der Tile Updater. Der Tile Updater ruft nur den Tile Updater auf und sagt ihm welche Kacheln (via der Koordinaten) neu erzeugt werden müssen.
Wenn der TileServer, warum auch immer, nicht läuft, werden keine Kacheln erzeugt oder ggf. werden nur Kacheln gelöscht und keine neuen erzeugt. Dann den Browser öffnen und die URL, die bei "Error calling TileServer" steht, ausführen.
http://test1:8080/TileServer/TileServlet?invalidate&url=http%3a%2f%2fsv000151%2fMumGeoData%2fTileUpdater%2fInvalidate%2fIBA_GA_WP_500.06092022_050018.xml&seq=20220906A050034722
Wenn diese nicht geht, dann ist da was faul. ggf. kommt dort auch eine Meldung zurück, was nicht stimmt. Z.B., dass die URL falsch ist und es den Server http://test:8080/ nicht gibt (weil vielleicht der Tile Server umgezogen wurde oder der Rechner nicht mehr im Netz ist etc) also dieser nicht antwortet.
Wenn der Aufruf der URL nichts Auffälliges zeigt, aber keine Kacheln erzeugt werden (und wie in dem Fall nur gelöscht werden) dann sollten Sie in das Log vom Tile Server schauen. Dort wird protokolliert, warum der Tile Server nicht geht.
Error Message: The underlying connection was closed: An unexpected error occurred on a receive.
Die Meldung:
Error Message: The underlying connection was closed: An unexpected error occurred on a receive.
bedeutet, dass es ein Netzwerkproblem gab und der Vorgang mitten drin abgebrochen wurde. Das kann passieren, wenn der Tile Server Rechner nicht erreichbar ist, weil er während des Ausführens neu gestartet wurde, oder auch wenn das Netzwerk unzuverlässig ist. Solche Problem muss dann ggf. der Netzwerkfachmann anschauen.
MapEdit.Executor.Desktop.exe läuft nicht mehr durch und kann sich nicht anmelden.
Führen Sie "Werkzeuge -> TileUpdater Token der MapEdit.Executor.ini hinzufügen" aus.
Der Tile Updater konnte nicht ausgeführt werden da die Software Version nicht aktuell ist
Starten Sie den AppBuilder auf dem Rechner auf dem der Tile Updater (MapEdit.Executor.Desktop.exe) ausgeführt wird. Dadurch wird die Version aktualisiert.