MapServer File aus Darstellungsmodel erzeugen (ab Version 24.1)
Erstmaliges erzeugen der Map File Datei
Der Export des Darstellungsmodells ins Mapfile-Format erfolgt im Darstellungsmodell über die Schaltfläche "Nach MapServer exportieren".
Beachten Sie das dies je Darstellungsmodell nur einmal durchgeführt werden muss. Nach einmaligem Export wird die erzeuge MapFile Datei später mittels des Synchronisieren Knopfes im Map File Editor mit dem Darstellungsmodell abgeglichen werden.
Systemvoraussetzung ist minimum MapServer 8.0
Wenn Sie mehr als eine "MapServer Verbindung" haben müssen Sie nun die gewünscht Verbindung wählen.
Es muss mindesten eine "MapServer Verbindung" vorhanden sein! Siehe Kapitel "KartenServer ->MapServer UMN" https://help.mapedit.de/admin-guide/mapedit-appbuilder/map-servers/mapserver
Geben Sie dann den Namen ein der für die MapServer Datei genutzt werden sollen. Im Normalfall können Sie die Vorgabe einfach bestätigen. Der Vorgabe Name ist der Name des Darstellungsmodells.
Prüfen Sie beim ersten Export das Koordinaten System (EPSG Code) und die Min/Max Koordinaten.
Das Koordinatensystem (EPSG Code) wird automatisch aus der Datenbankverbindung des ersten Layers des Darstellungsmodells ermittelt.
Wenn Sie eine Kartenfenster Definition mit dem gleichen Namen wie das Darstellungsmodell haben und der EPSG Code der gleiche ist wie die der Datenbankverbindung des ersten Layer dann werden daraus die Min-Max Koordinaten gelesen. Ansonsten werden die Koordinaten gesetzt die beim letzten Export mit dem gleichen EPSG Code verwendet wurden.
Sie können ansonsten mit dem Knopf "Get Extent from Map Window Definition" die Koordinaten einer beliebigen "Kartenfenster Definition" übernehmen, mit "Pick Extent from Map" die Min-Max Koordinaten graphisch aus einer Vorschaukarte auswählen oder mittels "Enter Extent manually" händisch eingeben.
Starten Sie nun mit OK das erzeugen des Map Files. Das erzeugte Map File wird dann im Repository Baum unter "Karten -> MapServer Karten-> Ihr Verbindungsname" gespeichert und geöffnet.
Desweiteren wird eine Symboldatei mit dem gleichen Namen unter "Karten -> MapServer Symbole-> Ihr Verbindungsname" erzeugt. Hier werden die Symboldefinitionen abgespeichert die das MapFile verwendet.
Testen Sie dann mit dem Knopf "Kartenvorschau" ob ihre Karte funktioniert. Drücken Sie den Knopf "Legenden Bilder erzeugen" um die Legendenbilder zu aktualisieren.
Ich sehe nichts in der Vorschau, obwohl keine Fehlermeldungen kommen ?
Prüfen Sie die Koordinaten Werte bei EXTENT und #MAPEDIT_PREVIEW_BOX, möglicherweise befinden diese sich in einem Bereich an dem sich keine Objekte befinden.
Zoomen Sie aus der Karte heraus um mehr Objekte zu sehen.
Andere mögliche Probleme:
- In dem dargestellten Zoomlevel sind keine Layer aktiv
- Die Tabellen enthalten keine Daten
- Die Strichstärken bzw Symbol Höhen sind zu klein eingestellt. z.B. kleiner 1.
- In der Layer Definition wird eine Spalte verwendet die es in der Tabelle nicht gibt.
Anpassen des MapServer Map Datei Kopfes
Der Map Datei Kopf ist der oberen Teile der Map Datei bis zum ersten vorkommen der Schlüsselwörters "#Region MAPEDIT_SYNCHRONIZE" und/oder "LAYER"
Diesen Kopf können Sie beliebig ändern!
Für alles was nach dem ersten Schlüsselwort "LAYER" kommt ist ein besonderes Vorgehen notwendig. Dazu weiter unten mehr.
Synchroniseren mit dem Darstellungsmodell
Wenn sich der Inhalt des Darstellungsmodell geändert hat, es wurden z.B. Farben oder Symbole geändert oder es wurden neue Ebenen hinzugefügt oder entfernt, können Sie das Map Datei mit dem Knopf "Synchronize with Display Model" auf den neusten Stand abgleichen.
Das Programm nimmt zum Synchronisieren das beim Schlüsselwort "#MAPEDIT_DISPLAY_MODEL_NAME" angegebene Darstellungsmodel. Diese wird beim ersten erzeugen der Datei angelegt.
Der Kopf der Map Datei (alles vor dem ersten LAYER) wird beim Synchronisieren nicht geändert. Anpassungen die Sie im Datei Kopf gemacht haben gehen also nicht verloren.
Das letzte END Schlüsselwort das das Ende der MAP kennzeichnet muss zwingende den Kommentar #Map haben. Bitte entfernen sie diesen Kommentar nicht!
Am Ende des Synchronisierens werden Ihnen in einem Dialog die Änderungen farblich angezeigt.
Links sehen Sie den momentanen Inhalt der Date und rechts der neue Inhalt.
Sie können nun entweder mit SAVE die Änderungen übernehmen oder mit CANCEL den Vorgang abbrechen und den alten Inhalt der Map Datei beibehalten.
In dem Beispiel unten wurde die Farbe und Linien Breite eines Layers geändert.
Ich will nur einmalig exportieren und nicht synchronisieren
Wenn Sie nur einmalig exportieren wollen und verhindern wollen das versehentlich der Synchronisieren Knopf gedrückt wird, entfernen Sie einfach die Zeile
#MAPEDIT_DISPLAY_MODEL_NAME
Was ist wenn ich die EXTENT umändern will ?
Man kann die EXTENT im Kopf der MapServer Datei einfach umändern.
Die EXTENT Angaben der einzelnen Layer muss man dann nicht händisch anpassen sondern das macht das Programm für einen in dem man den "Synchronize with Display Model" drückt.
Ausnahme: Alle Layer die kein #MAPEDIT_SYNCHRONIZE haben werden vom Programm nicht geändert, bei diesen muss das EXTENT des Layers händisch angepasst werden!
Manuelle Anpassung der Map Datei
Wenn Sie ein fortgeschrittener Anwender sind und sich mit dem MapServer Syntax auskennen können Sie gezielt eigene Änderungen vornehmen.
Alle Layer die vom Programm Synchronisiert werden sollen
besitzen das Schlüsselwort #MAPEDIT_SYNCHRONIZE.
Diese wird vom Programm automatisch beim erzeugen gesetzt.
Wenn Sie an einem Layer selbst Änderungen vornehmen wollen müssen Sie das Schlüsselwort #MAPEDIT_SYNCHRONIZE entfernen.
Alle Layer die das Schlüsselwort #MAPEDIT_SYNCHRONIZE haben werden bei jedem Synchronisieren überschrieben!! Manuelle Änderungen an an solchen Layern gehen verloren!
Label Texte
Warum werden LABEL mit der Einheit Inches erzeugt und nicht in Meter?
(Siehe hier)
Label die eine Füllfarbe haben werden mit einem in dieser Farbe gefüllten Rechteck hinter dem Text dargestellt.
Bei Label bei denen die Füllfarbe auf Transparent gesetzt wurde oder deren Alpha Wert (Transparenz) auf 0 steht wird keine Rechteck dargestellt. Die Buchstaben des Textes werden jedoch zur besseren Lesbarkeit leicht umrandet dargestellt.
Layer ausschliessen
Wenn Sie wollen das ein Layer nicht in die Karte übernommen werden soll, können sie diesen mit dem Schlüsselwort MAPEDIT_SYNCHRONIZE_OPTION ExcludeLayer ausschliessen.
Diese Option muss in den Datei Kopf gesetzt werden. Also vor "#Region MAPEDIT_SYNCHRONIZE" bzw vor dem ersten LAYER Schlüsselwort
Syntax:
#MAPEDIT_SYNCHRONIZE_OPTION ExcludeLayer "Tabellenname"
Beispiel:
#MAPEDIT_SYNCHRONIZE_OPTION ExcludeLayer "AX_FLURSTUECK"
#MAPEDIT_SYNCHRONIZE_OPTION ExcludeLayer "AX_FLURSTUECK_TBL"
Alle im Map File gemachten Optionen greifen jeweils erst beim nächsten Ausführen von "Synchroniseren mit dem Darstellungsmodell".
Die Layer definition wird hiermit beim Synchronisieren komplett aus der Datei Map Datei entfernt. Auch wenn #MAPEDIT_SYNCHRONIZE entfernt wurde!
Region MAPEDIT_SYNCHRONIZE
Vor dem ersten Layer befindet sich ein Abschnitt der folgendermaßen aussieht:
#Region MAPEDIT_SYNCHRONIZE
weiterer Inhalt
#EndRegion
Dieser Bereich kann ein und ausgeklappt werden. In eingeklappten Zustand steht dort ein Plus und der Text MAPEDIT_SYNCHRONIZE.
Dieser Bereich wird vom Program automatisch beim Synchronisieren ersetzt und enthält diverse Kommandos u.a. die Legenden Steuereung etc.
Die Schreibweise von "#Region MAPEDIT_SYNCHRONIZE" darft nicht geändert werden ansonsten funktioniert das synchronisieren des Bereiches nicht.
Manuelle Änderungen an diesem Bereich gehen immer verloren!!
Wenn Sie den Inhalt des Bereiches selbst steuern wollen, entfernen Sie diesen Bereich komplett. Sie müssen dann aber die Angaben jeweils selbst aktualisieren!
Eingeklappter Zustand:
Ausgeklappt:
Symbole
Beim Export werden automatisch MapServer Vector Symbole erzeugt und im Repository unter "Karten -> MapServer Symbole-> Ihr Verbindungsname" mit dem gleichen Namen wie ihre Map Server Karte abgelegt.
Die Symbole werden aus dem Darstellungsmodell gelesen und in MapServer Vector Symbole umgewandelt.
Texte und Schraffierungen in Symbolen sind stand heute weder im Darstellungsmodel noch in der MapEdit Darstellngsmodell Symbol Datei enthalten. Dies liegt daran das die Übername Funktion in Map Edit Professional die die Daten aus der Prototypenzeichnung liest diese nicht übernimmt. Deshalb können diese Stand heute nicht in MapServer erzeugt werden. Sie können Text jedoch einfach händisch durch verwenden von Text Symbol hinzufügen. Siehe weiter unten bei "Beispiel Text Symbol"
Das Programm versucht so gut wie möglich aus den Informationen des Darstellungsmodells, MapServer Vector Symbole zu erzeugen. Es kann Fälle geben wo dies nicht oder nur ungenau gelingt und wir können nicht garantieren das alle Symbole korrekt erzeugt werden. In diesen Fällen müssen Sie das Schlüsselwort #MAPEDIT_SYNCHRONIZE bei dem inkorrekten Symbol entfernen und die Symboldefinition durch ein eigenes Vector Symbol, PNG oder SVG Symbole ersetzen.
Der Export fügt jeweils fehlende Symbole automatisch hinzu. Es werden keine Symbole automatisch entfernt!
Wenn Symbole in der Prototypen Zeichnung verändert wurden muss die Symbole wie bei Professional zuerst aktualisiert werden.
MapServer Vector Symbole unterstützen keine Texte oder Bögen. Bögen werden beim Export gestroked (durch kleine Linienstücke ersetzt). Vektor Symbole sind auf 100 Koordinatenpunkte begrenzt. Wenn Sie Vektor Symbole mit über 100 Koordinatenpunkten haben, was die extreme Ausnahme sein sollte dann können Sie die Geometrie auf zwei Symbole verteilen und diese übereinander legen.
Lesen Sie auch die Informationen unter "Karten -> MapServer Symbole"
Die automatisch erzeugen Symbole haben die Endung !F und !N. In machen Fällen muss für ein Symbol, 2 Symbole erzeugt werden. Diesen wird das Schlüsselwort #MAPEDIT_GROUP hinzugefügt. Die Vorschau kombiniert dann die beiden Symbole zu einem Symbol.
"F" steht für "Filled" (gefüllt). "N" steht für "Normal" bzw Nicht gefüllt.
Das verwenden von zwei Symbolen ist in Fällen notwendig wo teile des Symbol gefüllte und nicht gefüllt Teile enthält und wo nicht nur einfach Linienteile enthalten sind.
Beide Symbole enthalten extra Koordinaten die mit #MIN und #MAX gekennzeichnet sind. Diese Koordinaten werden hinzugefügt damit die beiden Symbole exakt übereinander passen.
Symbole die mehr als 100 Koordinaten haben werden in der Vorschau der MapServer Symbole Datei in Rot darsgestellt und haben eine Fehlermeldung in der Symbol definition. Nur die ersten 100 Koordinaten werden dann dargestellt da ansonsten MapServer Fehler wirft.
Bei Symbolen greiften einen Semi-Transparente Linienfarbe nur wenn die Füllfarbe auf Transparent gesetzt ist. Semi-Transparenten Füllfarben werden von MapServer ignoriert. Dies sind MapServer Einschränkungen. (Stand MapServer 8.0)
Wichtiger Hinweis zu Symbol Höhe/Breite
Die Angaben Höhe/Breite im Darstellungsmodell sind stand heute nicht in Meter sondern sind Skalierungswerte.
D.h. die Höhe/Breite des Symbols aus der MSF SymbolDatei wird mit den Werten der Darstellungsmodell UI multipliziert.
D.h. man muss man die Höhe und Breite des Symbols zuerst aus der MapEdit Symbol Datei herausfinden. Diese Werte sind dort in Millimeter angaben. Dann die Werte umrechnen so das man den Skalierungsfaktor herausbekommt.
Beispiel:
Symbol #2144H# Minimum X: -660 Maximum X: +3340 Breite = 660+3340 = 4000mm = 4.000 meter
d.h. wenn man in der UI 100 bei Breite eingibt ist das Symbol am Ende 100x4 = 400 Meter gross.
Wenn man will das das Symbol 100 Meter Breit ist muss man alls 100 Meter / 4 = 25 in der UI eingeben
Am einfachsten ist es wenn man im Darstellungsmodell alle Symbole 1000mm gross macht, dann muss nichts umgerechnet werden.
Symbole mit unterschiedlicher Höhe und Breite
In MapServer kann nur die Höhe eines Symbols definiert werden. Die Breite ergibt sich aus dem Symbol selbst.
Wenn im Darstellungsmodell bei Höhe ein anderer Wert steht als bei Breite dann erzeugt das Programm ein MapServer Vector Symbol das in der Breite Skaliert wird.
Solche Symbole haben im Namen den Text "SCALE" und danach den Skalierfaktor.
Beispiel:
Im Darstellungsmodell wurde bei einem Symbol die Höhe 20 und Breite 10 eingegeben.
Dann wird ein Symbol mit dem Namen "NAME_SCALE_200" erzeugt
Der Wert wird folgendermaßen berechnet Höhe / Breite * 100.
D.h. für alle Symbole mit dem gleichen Verhältnis wird das gleiche Symbol benutzt.
Also in dem Fall z.B.
Höhe 50 Breite 25
Höhe 2 Breite 1
Höhe 1 Breite 0.5
All diese haben die Skalierung 200.
Verhindern das Symbole automatisch aktualisiert werden
Alle Symbole die das Schlüsselwort #MAPEDIT_SYNCHRONIZE haben werden synchronisiert.
Wenn Sie Symbole in der Symboldatei unter "Karten -> MapServer Symbole-> Ihr Verbindungsname" angepasst haben und verhindern wollen das diese beim Synchronisieren ersetzt werden können Sie das Schlüsselwort
#MAPEDIT_SYNCHRONIZE
entfernen.
Beispiel:
SYMBOL
NAME "_2144_"
TYPE vector
ANCHORPOINT 0.165 0.543
FILLED true
POINTS
2361.798 0
660 0
...
Eigene Symbole erzeugen
Das vorgehen ist wie bei MapEdit Professional. Siehe "Darstellungsmodelle für MapEdit Professional"
- Erzeugen Sie ihre Symbole als Blöcke in einer AutoCAD Prototypen Zeichnung
- In MapEdit Professional den "DWG" Knopf drücken
- Dann die Symbole im Darstellungsmodell verwenden.
Wahlweise können Sie auch externe PNG oder SVG als Symbole verwenden. Sie weiter unten.
Karte mit allen Vector Symbolen erzeugen
Der Knopf "Symbol Karte erzeugen" im MapFile Editor liest zu einem alle Symbole der MSF Symbol Datei "MapEdit" und erzeugt daraus zu einem eine "Map Server Symbol Datei" mit den "MapServer Vector Symbolen" und zu anderem wird eine Karte erzeugt die alle Symbole angezeigt.
Ab Version 24.2.45 befindet sich der Knopf "Symbol Karte erzeugen" oben links beim Befehl "Mehr"
Die MapServer Symbol Datei ist im AppBuilder unter "Karten" -> "Map Server Symbole" zu finden und hat den gleichen Namen wie die Map Server Karten Datei.
Diese Karte dient nur zum testen und wird ansonsten nicht benötigt.
Wiederholtes Ausführen der Funktion überschreibt jeweils den Inhalt der Map Datei und der Symbol Datei.
Wenn sich die Symbol Datei "MapEdit" geändert hat, führen Sie "Symbol Karte erzeugen" erneut in der bereits vorhandenen Karte aus um diese zu aktualisieren. Sie brauchen keine neue Datei dazu anlegen.
Die Funktion ersetzt den Inhalt der aktuelle offenen Map Datei. Sie sollten also zuerst eine leere MapDatei anlegen bevor Sie diese Funktion ausführen!
Performance technisch ist es ratsam immer nur die Symbol Definitionen in der Symbol Datei
einer Karte einzufügen die auch in der Karte verwendet werden und nicht hunderte von nicht genutzten Symbolen.
Kopieren Sie also nicht einfach die Symbol Datei der Test Karte in eine Produktive Karte!
Alternativ SVG oder PNG Symbole nutzen
MapEdit erzeugt immer "MapServer Vector Symbole", Sie können aber alternative auch eigene SVG oder PNG Symbole nutzen.
SVG Symbole müssen immer einzeln mit MapServer getestet werden da MapServer bei nicht unterstützten SVG ggf abstürzten kann. Testen Sie auch ein sehr nahes heranzoomen da diese in Vergangenheit bei manchen SVGs abstürze erzeugt hat.
Beachten Sie das bei SVG und PNG Dateien immer die in der SVG/PNG Datei eingestellten Farben und Linienbreiten etc dargestellt werden und nicht die im Darstellungsmodel (bzw Map File bei STYLE) angegebenen Farben.
Suchen Sie in der Symboldatei unter "Karten -> MapServer Symbole-> Ihr Verbindungsname" das Vector Symbol das Sie durch ein SVG/PNG Symbol ersetzen wollen.
Ersetzen Sie dann die Symbol Definition behalten sie aber unbedingt den Symbolnamen bei. Achten Sie darauf das das Symbol NICHT das Schlüsselwort "#MAPEDIT_SYNCHRONIZE" enthält um zu verhindern das das Synchronisieren ihr Symbol ersetzt.
Beispiel für eine PNG Symbol Definition
SYMBOL
NAME "baum"
TYPE PIXMAP
IMAGE "Symbols\LASVEGAS_MOBILE\meinbaum.png"
ANCHORPOINT 0.5 0.5
END
Beispiel für eine SVG Symbol Definition
SYMBOL
NAME "baum"
TYPE SVG
IMAGE "Symbols\LASVEGAS_MOBILE\meinbaum.svg"
ANCHORPOINT 0.5 0.5
END
Beachten Sie da Sie wenn der Anfasspunkt nicht mittig sein soll Sie die Option "ANCHORPOINT" anpassen müssen.
Vor und Nachteile der verschiedenen Formate
MapServer Vector Format
Vorteile:
- läuft stabil
- unterstützt direkt Farben und Strickstärke
- Alle Symbole können in einer Datei definiert werden statt in zig einzelnen Dateien, dadurch sehr einfach weitergabe.
Nachteile:
- Bögen müssen durch stroking simuliert werden.
- Begrenzt auf 100 Koordinaten je Symbol.
Kann durch Nutzung von mehreren Symbolen ausgeglichen werden
- Unterstützt keine Texte im Symbole.
Kann durch Nutzung von zusätzlichen Text Symbolen ausgeglichen werden.
- Keine Flächen oder Linien Füllstile
- Keine Mehrfarbigkeit außer man macht je Farbe ein Symbol.
SVG Format
Vorteile:
- Sehr komplexe Symbole sind möglich
Nachteile:
- Lauft in MapServer nicht immer stabil, muss für jedes SVG Symbol getestet werden.
- Anzeige in MapServer ist nicht immer korrekt.
- Die in MapServer eingestellten Farben und Strichbreiten werden vom SVG ignoriert.
d.h. für jede Farbe/Strickbreite muss ein eigenes separates SVG Symbol erzeugt werden.
PNG Format
Vorteile:
- schnell
Nachteile:
- Symbole erscheinen wenn diese stark skaliert werden verschwommen.
- Linien bereite ändert sich mit der Symbolgrösse
Schraffurtyp bei Flächen
Ab Version 24.2.110
Wird wenn der Schraffurtyp nicht auf SOLID steht ein Schraffur Symbol erzeugt.
Das Symbol wird automatisch "ME!HATCH!" plus den Name der Schraffur benannt.
Beispiel in der MapDatei:
STYLE
SYMBOL "ME!HATCH!LINE"
SIZE 10
WIDTH 1
ANGLE 0
COLOR "#228B22FF"
END
Beispiel Symbol Datei:
SYMBOL
NAME "ME!HATCH!LINE"
TYPE hatch
#MAPEDIT_HASH_SETTINGS SIZE 10;WIDTH 1;ANGLE 0;
END
Für den Schraffurtyp LINE werden Horizontale Linien erzeugt. Für den Schraffurtyp ANSI31 werden Linien mit Winkel 45 Grad erzeugt.
Für alle anderen Schraffurtypen wird per default die gleiche Einstellung wie für ANSI32 verwendet, diese müssen händisch nachkonfiguriert werden.
Die Schraffurtypen können in der Symboldatei angepasst werden.
Siehe https://mapserver.org/mapfile/symbology/construction.html#hatch-fill
hier sind alle Möglichkeiten erläutert.
In der Symboldatei können beim Schraffur Symbol über das Schlüsselwort "#MAPEDIT_HASH_SETTINGS" Vorgabewerte für SIZE,WIDTH,ANGLE und PATTERN angegeben werden. Diese müssen mit ";" getrennt werden.
Diese Werte werden dann mit dem Symbol in die Map Datei mit übernommen.
Weitere Hinweise
Anders als bei älteren Versionen muss die Umrechnung von Gon nach Degree nicht im Darstellungsmodell gesetzt werden. Das Programm macht diese automatisch im SQL.
Desweiteren werden Text Positionen und Zeilenumbrüche automatisch umgewandelt. Es müssen dafür keine separaten Views erzeugt werden.
Connection Type OGR für Oracle erzwingen
Standardmässig wird bei Oracle der CONNECTIONTYPE PLUGIN verwendet.
Der CONNECTIONTYPE OGR kann wahlweise durch setzen des Schlüsselwortes
#MAPEDIT_USE_OGR
im Kopf der Map Datei erzwungen werden.
Führen Sie danach das Synchronisieren aus.
Bei Layer bei denen das #MAPEDIT_SYNCHRONIZE Schlüsselwort entfernt wurde muss die Änderung manuell durchgeführt werden.
Beispiel Text Symbol
Style Definition
STYLE
SYMBOL "LetterA"
SIZE 80
COLOR "#191970FF"
END
Symbol Definition
SYMBOL
NAME "ABC"
TYPE TRUETYPE
FONT "arial"
CHARACTER "Abc"
END