1. Home
  2. Mapservers
  3. MapEdit TileServer
  4. Konfiguration MapEdit Mobile
  1. Home
  2. Installation
  3. Konfiguration MapEdit Mobile
  1. Home
  2. Mapservers
  3. MapGuide OpenSource
  4. Konfiguration MapEdit Mobile
  1. Home
  2. Mapservers
  3. MapServer (UMN)
  4. Konfiguration MapEdit Mobile
  1. Home
  2. MapEdit Mobile
  3. Konfiguration MapEdit Mobile

Konfiguration MapEdit Mobile

Prämisse Webserver (Reverse Proxy Server) für MapEdit Mobile

Folgende Voraussetzungen müssen erfüllt sein

  • der IIS benötigt das allgememeine HTTP-Feature: HTTP-Umleitung
  • URL Rewrite ist installiert
  • Application Request Routing ist installiert und aktiviert
  • Server Variablen HTTP Encode ist aktiviert
  • es existieren die Servervariablen: HTTP_X_Real_IP, HTTP_X_Original_Host
  • es ist die folgende Servervariable definiert (falls keine Vektordaten in Mobile angezeigt werden und http mit https vermischt wird, ggfs. zusätzlich in den Umleitungsregeln definieren): HTTP_X_Forwarded_Proto
  • es ist ein gültiges 3-stufiges Zertifikat für die Website definiert, z.B. für mobile-kunde.mapedit.de

Für die Web Konfigurationen gilt

Auf dem WebServer sind die Umleitungen für mapedit-core, mapedit-web und TileServer definiert. In jedem dieser Ordner befindet sich eine entsprechende web.config

mapedit-core

mapedit-web

TileServer

index.html

Auch ist die index.html definiert. Sie regelt den Aufruf von MapEdit Mobile aus dem www heraus.

Lautet die Bindung der Default Web Site z.B. mobile-kunde.mapedit.de, dann heisst die URL für MapEdit: https://mobile-kunde.mapedit.de

Beim Aufruf greifen die Definitionen aus der index.html und aus den Umleitungen und es wird das Login für MapEdit Mobile aufgebaut. Falls die Umleitungen funktionieren, dann sind die installierten Versionen für Mapedit Web und MapEdit Core zu sehen. Stehen hier keine Versionsangaben sondern Fragezeichen, dann funktionieren die Umleitungen nicht.

Prämisse Applikationsserver für MapEdit Mobile

Folgende Voraussetzungen müssen erfüllt sein

  • Adopt OpenJDK ist installiert
  • WildFly ist installiert
  • ein WildFly Admin User ist definiert
  • der WildFly Service ist eingerichtet und auf Startart automatisch eingerichtet
  • die Firewall ist für WildFly konfiguriert mit den ports 8080, 9990
  • mapedit-core.ear ist deployed
  • mapedit-web.war ist deployed
  • falls der TileServer auch in Wildfly läuft: TileServer.war ist deployed (ansonsten klassisch: der TileServer ist auf einem anderen Applikationsserver installiert)
  • glyphs ist extrahiert in: C:\WildFly\standalone\data\mapedit-core-data
  • Lizenzen für MapEdit Mobile sind eingerichtet (MapEdit.LicensePath)
  • das MapEdit Repository ist eingerichtet (MapEdit.RepositoryUrl)
  • Datenbankverbindungen sind konfiguriert: C:\WildFly\standalone\configuration\standalone.xml
  • die Datenquellen sind in der HAL Management Console geprüft und ein Test der Connection ist erfolgreich
  • das Darstellungsmodell ist in der Swagger UI hochgeladen und für MapEdit Mobile zugeordnet
  • die Volltextsuche ist in der Swagger UI hochgeladen und lunr-indiziert, siehe Indices unter C:\WildFly\standalone\data\mapedit-core-data\lunr
  • es existiert der Ordner C:\Licenses
  • auf dem Applikationserver darf es im wwwroot kein MapEdit Desktop Verzeichnis mit dem Unterordner MuMGeoData geben. Wenn doch, dann umbenennen.

HAL-Management Console

Aufruf der Console

http://localhost:9990/console/index.html und Anmeldung mit dem WildFly Admin User

Deployments

Es müssen mapedit-core.ear und mapedit-web.war deployed werden.

http://localhost:9990/console/index.html#deployments

Lizenzierung MapEdit Mobile

Damit kann die Lizenzinfo abgerufen werden:

http://localhost:8080/mapedit-core/rest/core/licenseinfo

Mit der Lizenzinfodatei muss dann eine Lizenzdatei erstellt werden, mit Inhalt mapedit-core und der entsprechenden Anzahl. Die Lizenzdatei wird abgespeichert im Ordner C:\Licenses

Anpassung der System Eigenschaften:

http://localhost:9990/console/index.html#system-properties

Konfiguration MapEdit Repository

Anpassung der Systemeigenschaften:

http://localhost:9990/console/index.html#system-properties

die URL stammt aus der MapEdit.ini

Konfiguration WildFly

Datenbankverbindungen

Die Verbindungen zur Datenbank werden in der standalone.xml konfiguriert, ab Zeile 213:

C:\WildFly\standalone\configuration\standalone.xml

Es muss ein derartiger Block je Datenbankverbindung eingefügt werden:

<datasource jta="true" jndi-name="java:/jdbc/ALKIS" pool-name="ALKIS" enabled="true" use-ccm="true" statistics-enabled="true">
	<connection-url>jdbc:oracle:thin:@orasvr.mapedit.de:1521:XE</connection-url>
	<driver>oracle</driver>
	<pool>
		<min-pool-size>5</min-pool-size>
		<max-pool-size>30</max-pool-size>
	</pool>
	<security>
		<user-name>ALKIS_UTM</user-name>
		<password>pwd</password>
	</security>
	<validation>
		<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleValidConnectionChecker"/>
		<validate-on-match>false</validate-on-match>
		<background-validation>true</background-validation>
		<stale-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleValidConnectionChecker"/>
		<exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleExceptionSorter"/>
	</validation>
	<timeout>
		<set-tx-query-timeout>false</set-tx-query-timeout>
		<blocking-timeout-millis>30000</blocking-timeout-millis>
		<idle-timeout-minutes>5</idle-timeout-minutes>
		<query-timeout>0</query-timeout>
		<use-try-lock>0</use-try-lock>
		<allocation-retry>0</allocation-retry>
		<allocation-retry-wait-millis>0</allocation-retry-wait-millis>
	</timeout>
	<statement>
		<track-statements>true</track-statements>
		<prepared-statement-cache-size>64</prepared-statement-cache-size>
		<share-prepared-statements>true</share-prepared-statements>
	</statement>
</datasource>

WICHTIG:
Der Teil: jndi-name=“java:/jdbc/ALKIS“ pool-name=“ALKIS
das ist der Name der Datenbankverbindung im AppBuilder

WICHTIG:
Der Teil: jdbc:oracle:thin:@orasvr.mapedit.de:1521:XE
Service ist der Name aus der tnsnames des Oracle-Servers

Beachten:
Der Teil: jdbc:oracle:thin:@orasvr.mapedit.de:1521/XE
zwischen Port und Service ist ein „/“ statt „:
Ein Tipp, falls die Datenbankverbindung in der HAL Management Console nicht erfolgreich getetstet wurde, das so abändern.

WICHTIG:
Der Teil: ALKIS_UTM < user-name >ALKIS_UTM< / user-name >
Das ist der Schemaname/Username aus der Datenbank

.

Nach der Konfiguration muss der WildFly Service neu gestartet werden und 1-2 min gewartet werden.

Hier in der HAL Management Console sind die Verbindungen zu sehen und zu prüfen:

http://localhost:9990/console/index.html#configuration;path=configuration~subsystems!css~datasources!data-source-driver~datasources

So können die Datenquellen geprüft werden (Datenquelle markieren, Symbol Pfeil nach unten, Test Connection) und ganz wichtig: die Prüfung muss erfolgreich sein.

Tipp: configuration Firewall (falls die Prüfung nicht erfolgreich)

InBound+OutBound rule
Ports: 1521
Name: Oracle

Konfiguration im AppBuilder

Benutzerverwaltung

  1. neue Benutzergruppe anlegen, z.B. GRUPPE_MOBILE
  2. neuen Benutzer anlegen, z.B. Demo/demo
  3. Benutzer Demo zur Benutzergruppe GRUPPE_MOBILE zuordnen

Definition Mobile Projekt

  1. neues Projekt MOBILE_TEST erzeugen
  2. Ribbon, Kartenfenster und Karte gleich mit erzeugen lassen
  3. Projekt der Benutzergruppe GRUPPE_MOBILE (und ADMIN) zuordnen

Definition Darstellungsmodell

Wichtige Anmerkung vorab: die Definition eines Darstellungsmodells analog zu Map3D ist zeitintensiv. Auch gilt es zu prüfen, ob ausgedünnte und generalisierte Darstellungen für MapEdit Mobile ausreichen.

Empfehlung: Definition eines einfachen Darstellungsmodells, z.B. MOBILE_TEST

Entsperren der gewünschten Layer, die später in MapEdit Mobile in der Grafik selektiert werden sollen. Hier z.B. die ALKIS Gebäude:

Empfehlung: für die selektierbaren Layer müssen Formulare konfiguriert werden, s.u. Ansonsten erscheint bei der Selektion in der Grafik ff Meldung:

Das Darstellungsmodell MOBILE_TEST dem Projekt MOBILE_TEST zuweisen und speichern:

Konfiguration Kartenverwaltung

Zunächtst einmal den Preview Mode einstellen und speichern.

AppBuilder beenden und neu starten.

Kartenverwaltung öffnen und für MOBILE_TEST eine neue Karte mit der Karten Art Vector Tile hinzufügen. Name der Karte vergeben, z.B. MOBILE_TEST und speichern.

Jetzt kann das zuvor definierte Darstellungsmodell MOBILE_TEST selektiert werden:

Speichern nicht vergessen.

Konfiguration Darstellungsmodell in der Swagger UI

Im Swagger muss das Darstellungsmodel noch der Applikation MapEdit Mobile zugewiesen werden. Die Zuweisung kann nur ein Administrator Account ausführen. So sieht der Swagger aus:

Anmerkung: dieser Medienwechsel auf den Swagger ist derzeit (Stand Juni/Juli 2021) notwendig. Später soll das in den AppBuilder wandern.

Auf dem Applikationsserver (d.h. dort wo der WildFly installiert ist und die ear und war Datei deployed wurden) im Browser ff URL eingeben:

http://localhost:8080/mapedit-core/swagger-ui/#/authentication/login

Die Schalfläche Try it out betätigen:

Die Angaben für den Admin Account tätigen (also die Daten des MapEdit Administrators) und mit execute ausführen:

Als Antwort wird eine Session-ID gegeben:

Diese markieren (ohne die beiden Gänsefüßchen) und in die Zwischenablage speichern.

Im Swagger ganz nach oben scrollen und die Schaltfläche Authorize betätigen

Im Dialog muss die Session-ID eingegeben werden und die Schaltfläche Authorize betätigt werden:

Der Administrator ist authorisiert, der ff Dialog kann geschlossen werden:

Jetzt kann das Darstellungsmodell für die mobile Lösung durch den authorisierten Administrator zugeordnet werden. Dazu im Swagger nach unten scrollen in den Abschnitt tiles oder der Einfachheit halber ff URL im Browser abschicken:

http://localhost:8080/mapedit-core/swagger-ui/#/tiles/addOrUpdateMapsFromDisplayModel

Hier dann wieder Try it out drücken:

Eingabe des Namens des Darstellungsmodells, hier MOBILE_TEST, und mit execute ausführen:

Anm.: jedesmal ausführen, wenn im AppBuilder an der Karte etwas konfiguriert wurde, was mit Zugriff auf Datenbank zu tun hat

Erste Erfolgsmessung

In einem Browser aus dem www folgende URL eingeben (hier nur beispielhaft):

https://mobile-kunde.mapedit.de

  1. Anmeldung mit Demo/demo
  2. Projekt MOBILE_TEST auswählen
  3. Die Daten werden mit dem definierten Darstellungsmodell in MapEdit Mobile angezeigt:

Formulare für MapEdit Mobile

Im Dialog Designer im AppBuilder muss ein neues Formular hinzugefügt werden (Phone):

Der Name des Layout muss Default lauten. Die Benutzergruppe GRUPPE_MOBILE (und ADMIN) müssen Zugriffsrechte haben:

Es müssen alle Steuerelemente auf den Reiter All verschoben werden. Sind mehrere Reiter vorhanden, dann müssen alle Reiter zuvor gelöscht werden.

Es reicht, nur grob zu positionieren. Auch können nach Belieben weitere Steuerelemente hinzugefügt werden. Da es sich um ein Formular für die mobile Lösung handelt, sollte genau überlegt werden, wieviele Steuerelmente im mobilen Formular angezeigt werden. Weniger ist mehr.

Mit der Single Magic Funktion kann das Formular auf einfache Art für MapEdit Mobile designt werden. Zuerst alle Steuerelemente auswählen und danach Single Magic ausführen:

Das Formular nimmt Gestalt an:

Speichern nicht vergessen.

Ribbon für MapEdit Mobile

Es muss das (oben definierte) Phone-Formular in MapEdit Mobile konfiguriert werden, indem das Kommand Dialog hinzufügen ausgeführt wird.

Speichern nicht vergessen.

Ribbon und Formulare in MapEdit Mobile

In MapEdit Mobile ist das Ribbon vorhanden:

Und das Formular ist ebenso vorhanden:

Auch ist die grafische Selektion möglich:

Suche für MapEdit Mobile

Im AppBuilder muss eine neue Volltextsuche (das ist eine unscharfe Suche) neu angelegt werden, z.B. Mobile_Test

Die neue Volltextsuche muss dem MapEdit Mobile Projekt zugewiesen werden:

Speichern nicht vergessen.

In der Volltextsuche müssen nun neue Kategorien angelegt werden. In Label und Sublabel sind die Werte für die Volltextsuche dann enthalten. Name, Datenquelle, Query, Label, Sublabel, FID und GEOM müssen zwingend definiert sein. Form ist optional (steht da nichts, dann öffnet sich in MapEdit Mobile auch kein Sachdatenformular). Jedenfalls wird das Suchergebnis in der Grafik angezeigt.

Mit Hilfe des Swaggers muss die Volltextsuche jetzt noch lunr-indiziert werden. Im Swagger den Administrator authentifizieren, s.o.

In den untenen Bereich in den Abschnitt lunr wechseln oder mit ff:

http://localhost:8080/mapedit-core/swagger-ui/#/lunr/reindexSearchDefition

Try It out und bei name of the search den Namen der Volltextsuche eintragen und execute:

Jetzt wird die Volltextsuche im Hintergrund auf dem Applikationsserver indiziert. Das kann mehrere Minuten dauern. Erfahrungsgemäss ca. 4-6 Minuten.

Auf dem Applikationsserver kann der Fortschritt für die Indizierung der Volltextsuche Mobile_Test eingesehen werden:

Hier weden Dateien geschrieben, nach 4-6 min sind sie fertig.

In MapEdit Mobile sieht die Volltextsuche dann so aus:

Und es kann unscharf gesucht werden:

Konfiguration MapGuide Karte und TileServer und Einbindung in MapEdit Mobile als Rasterkarte

Auf dem MapGuide Server muss die Karte kopiert werden und z.B. als Alkis_Mobile.MapDefinition gespeichert werden.

Das Koordinatensystem muss auf 3857 angepasst werden, dabei werden die Extents gleich richtig transformiert:

Nun muss die Karte im TileServer konfiguriert werden:

#renderer settings
Renderer.1.Type=MapGuide
Renderer.1.URL=http://kartenserver/mapguide/mapagent/mapagent.fcgi
Renderer.1.Username=Administrator
Renderer.1.Password=xyz

#Mapdefinitions Mobile MapGuide
Renderer.1.Maps.1.Name=Alkis_Mobile
Renderer.1.Maps.1.MapDefinition=Library://UTM/ALKIS/Alkis_Mobile.MapDefinition
Renderer.1.Maps.1.TileSystem=Bing

In der Kartenveraltung ist für die Karte MOBILE_TEST ff zu definieren: es wird als erstes die TileServer Karte Alkis_Mobile konfiguriert. Im zweiten Schritt ist die URL anzupassen. Anmerkung: in den Umleitungen auf dem MapEdit Mobile Webserver sind die Umleitungen für den TileServer definiert. Nur so werden auch TileServerkarten angezeigt, wenn MapEdit Mobile im www (Internet) verwendet wird.

Konfiguration MapServer Karte und TileServer und Einbindung in MapEdit Mobile als Rasterkarte

Für die Konfiguration des mapfiles (z.B. Luftbild.map) gilt es einige Punkte zu beachten.

Die Karte im TileServer muss wie folgt konfiguriert sein, die angegebenen Extents sind die Extents des Luftbildes in Lat/Lon (i.d.R. mit Hilfe der capabilties zu ermitteln). Wenn nicht definiert bzw. sonst irgendwie ermittelbar, dann ist der WMS Service falsch konfiguriert bzw. das Rasterfile ist falsch (falsche Korrdinaten im angegebenen Koordinatensystem) und der TileServer kann keine Tiles damit rendern.

#renderer settings
Renderer.2.Type=WMS
Renderer.2.URL=http://mapserver/cgi-bin/mapserv.exe

#Mapdefinitions Mobile MapServer
Renderer.2.Maps.1.Name=Orthofoto_Mobile
Renderer.2.Maps.1.MapRequestOptions=&map=c:%5Cinetpub%5Cwwwroot%5CMapServer%5CLuftbild.map
Renderer.2.Maps.1.Layers=Orthofoto
Renderer.2.Maps.1.SRS=EPSG:4326
Renderer.2.Maps.1.TileSystem=Bing
Renderer.2.Maps.1.Styles=default
Renderer.2.Maps.1.Format=JPG
Renderer.2.Maps.1.Transparent=false

Renderer.2.Maps.1.ValidZoomLevels=7-21
Renderer.2.Maps.1.PreRendererNumberOfTilesX=3
Renderer.2.Maps.1.PreRendererNumberOfTilesY=3

Renderer.2.Maps.1.Extents.1.XMin=8.55
Renderer.2.Maps.1.Extents.1.YMin=48.53
Renderer.2.Maps.1.Extents.1.XMax=8.68
Renderer.2.Maps.1.Extents.1.YMax=19.25
Renderer.2.Maps.1.Extents.1.SRS=EPSG:4326

In der Kartenverwaltung dann noch eine TileServerkarte analog zu oben (MapGuide) definieren, Zeichenreihenfolgen einstellen, und dann gibt es schöne Karten für MapEdit Mobile:

Updated on Juli 23, 2021