MapServer Karten
Systemvoraussetzung ist minimum MapServer 8.0
Auf der Registerkarte "Karten" können Sie auf der Unterregisterkarte "MapServer Maps" MapServer Karteneinstellungen zentral verwalten und testen.
Die MapServer Karten sind in Ordnern abgelegt. Jeder Ordner repräsentiert eine "MapServer Verbindung".
Jede Karteneinstellung verfügt über einen "Speichern" Knopf. Wird dieser betätigt, wird die Karteneinstellungen im MapEdit Repository abgelegt. Zusätzlich wird je nach Einstellung eine Kopie der Karte Datei im Verzeichnis des MapServer Kartenverzeichnisses abgelegt.
Achten Sie bitte darauf das nur Karten die auch im AppBuilder gespeichert wurden, in der Kartenverwaltung zur Auswahl zur Verfügung stehen.
Voraussetzung
Um diese Funktion zu nutzen, müssen sie unter Kartenserver-MapServer die Verbindung zum MapServer eingestellt haben.
Zur Installation von MapServer siehe auch
https://help.mapedit.de/common/installation/map-servers/installation-mapserver8
MapServer auf gleichem Rechner wie MapEdit Server
Wenn sich die MapServer Software (mapserv.exe) auf dem gleichen Rechner wie die MapEdit Server Software befindet, stellen Sie bitte "Art des automatischen Speicherns" auf "Auf Map Edit Server Maschine speichern" ein. Beim drücken des "Speichern" Knopfes wird dann eine Kopie der Karteneinstellungen als *.map Datei im dem Verzeichnis abgelegt das bei "Map File Folder" eingetragen wurde.
MapServer auf Netzwerkverzeichnis
Wenn sich die MapServer Software auf einem anderen Rechner befindet, Sie aber Netzwerk oder Verzeichnis Zugriff von ihrem MapEdit Client Rechner aus haben, stellen Sie bitte "Art des automatischen Speicherns" auf "Auf Netzwerkverzeichnis speichern" und tragen sie im Feld "Netzwerkverzeichnis" den Verzeichnisnamen ein wo die MapServer Karten gespeichert werden. Im Feld "Netzwerkverzeichnis (Sekundär)" kann optional ein weiterer Speicherort angegeben werden wenn mit "Load Balancing" gearbeitet wird und die MapServer Einstellung gleichzeitig auf zwei Rechnern gespeichert werden soll. Bitte achten Sie darauf das der Netzwerkverzeichnisname mit einen "\" endet.
MapServer nicht via Netzwerkverzeichnis erreichbar
Wenn sich die MapServer Software auf einem anderen Rechner befindet auf den Sie keinen direkt Zugriff haben, stellen Sie bitte "Art des automatischen Speicherns" auf "Kein automatisches speichern". Sie müssen dann nach dem Speichern der Karteneinstellungen, die map Datei mit dem Download Knopf herunterladen und manuell auf dem MapServer Rechner abspeichern. Verfahren sie ebenso mit Legenden und Symbol Dateien.
Ein Symboldateiname wird aus dem SYMBOLSET-Tag aus dem MapFile übernommen. Die Symboldatei muss im selben Ordner wie die MapDatei abgelegt werden. Wenn Sie dies nicht tun, sehen Sie keine Symbolauswahl. Das bedeutet, dass im SYMBOLSET-Tag kein Unterordner verwendet werden sollte. Beispiel:
SYMBOLSET "WATER.SYM"
Anlegen einer Karte
Unter der Rubrik MapServer Maps im Repository kann eine neue MapServer Karte angelegt oder eine vorhandene hochgeladen werden.
Des weiteren kann einen MapServer Karte automatisch aus einem Darstellungsmodel erzeugt werden.
Mehr dazu unter: https://help.mapedit.de/admin-guide/mapedit-appbuilder/display-models/displaymodel-to-mapfile
Ab Version 23.2.18 können MapServer Karte auch automatisch aus einem Datenmodell erzeugt werden.
Wenn Sie nach dem anlegen keine Karte in der Vorschau sehen prüfen Sie bitte Koordinaten der Kartenausdehnung in den Parametern EXTENT und #MAPEDIT_PREVIEW_BBOX.
Zum ermitteln diese Parameter werden die Min/Max Geometrien alle Tabellen der Datenbank gelesen. Hier können unter Umständen falsche Koordinaten vorhanden sein oder Koordinaten vorhanden sein die in einem anderen Gebiet liegen.
MapFile (Karten Datei)
Auf der Registerkarte "Map File" können Sie die Karteneinstellungen vornehmen. Informationen zum erstellen einer MapServer Datei (*.map) finden Sie unter anderem unter https://mapserver.org
Nehmen Sie keine manuellen Änderungen an *.map Dateien auf dem MapServer mit einem Texteditor vor, da der AppBuilder diese beim speichern mit der Version des Repository überschreibt. Nehmen Sie Änderungen an der Kartendatei immer nur mit dem MapEdit AppBuilder vor !
Die Baumstruktur links macht es einfach, zum Ort des Layers (LAYER) oder zur Klasse von Objekten (CLASS) im Map File zu springen. Die Einträge des Baums sind alphabetisch sortiert. Wird für ein "CLASS" Objekt keine "NAME" Eintrag vergeben, dann erscheint statt dem Namen die Zeilennummer. Die Baumstruktur wird bei jedem Ändern nach einer kurzen Verzögerung automatisch aktualisiert.
Syntax Highlight
MapServer Schlüsselwörter werden farbig dargestellt. Kommentarzeilen werden grau eingefärbt. Dies dient zum leichteren Lesen des Text Inhalts.
Farbanzeige und Farbauswahl
Farben für Stilisierungen werden im Map File mit den Schlüsselwörtern COLOR und OUTLINECOLOR definiert. Im Text Editor sehen Sie bei den Zeilen welche die Schlüsselwörter COLOR oder OUTLINECOLOR enthalten, links am Rand die Farbe als Vorschau. Um eine Farbe über eine Auswahlliste ändern zu können, setzen sie den Cursor auf die Zeile mit dem Schlüsselwort COLOR oder OUTLINECOLOR.
Nutzung von Transparenten Farben
Wenn einen Komplett-Transparenz erreicht werden soll darf keine COLOR bzw OUTLINECOLOR angegeben werden.
Nutzung von Semi-Transparenten Farben
Wenn Sie Semi-Transparente (Teil Transparenz) Farben benutzten ist Vorsicht geboten wenn COLOR und OUTLINECOLOR in Kombination benutzt werden.
Beispiel: Eine Fläche soll 50% transparent blau dargestellt werden mit einer nicht transparenten schwarzen Umringlinie.
Damit die Darstellung richtig erscheint müssen die Flächenfarbe und Umring-Linienfarbe in Separaten STYLE Blöcken geschrieben werden. Macht man das nicht dann bekommt die Linie die Transparenz der Umring-Linienfarbe.
Falsch:
CLASS
STYLE
WIDTH 5 #Umring Linienbreite
COLOR "#0000FF84" #Flächen Farbe 50% tranzparent blau
OUTLINECOLOR "#000000FF" #Umring Linien Farbe schwarz, keine transparenz
END
END
Richtig:
CLASS
STYLE #Zuerst die Flächen Füll Farbe
COLOR "#0000FF84"
END
STYLE #Dann die Umring Linie Farbe
WIDTH 5
OUTLINECOLOR "#000000FF"
END
END
Es muss beachtet werden das zuerst der STYLE mit der Füllfarbe und dann der Linienfarbe kommt. Ansonsten kommt die Darstellung falsch.
Bei Symbolen greiften Semi-Transparente Farben bei OUTLINECOLOR (Rand Farbe) nur wenn kein COLOR Tag im gleichen Style verwendet wird.
MapServer scheint bei Symbolen beim COLOR Tag keine Semitransparenz zu unterstützen. Wird diese gesetzt wird diese ignoriert.
Symbolauswahl
Symbole werden im Map File mit dem Schlüsselwörter SYMBOL definiert. Um ein Symbol über eine Auswahlliste ändern zu können, setzen sie den Cursor auf die Zeile mit dem Schlüsselwort SYMBOL.
Auswahlliste erscheint nur wenn im Kopf des Map Files das Schlüsselwort SYMBOLSET gesetzt ist und wenn eine Symbol Datei mit gleichem Namen im Repository unter "Karten-MapServer Symbole" gespeichert wurde.
Beispiel: SYMBOLSET "alkisdemo.sym"
Symboldateien werden im gleichen Verzeichnis wie die Map Dateien abgelegt. Bitte verwenden sie zum ablegen der Symbol Datei kein Unterverzeichnis.
Kontext abhängige Hilfe
Durch drücken des Hilfe Knopf rechts oder durch drücken von F1 steht eine Kontext Hilfe zur Verfügung. Setzten Sie dazu den Cursor auf die Zeile mit dem Schlüsselwort zu dem sie Informationen erhalten wollen.
Regionen
Mit den Schlüsselwörtern #Region und #EndRegion können Sie Bereiche im Text markieren die beim öffnen der Datei einklappt erscheinen sollen. Bei solchen Bereichen erscheint links im Text Editor ein Plus Zeichen. Klickt man auf dieses Plus wird der Text auf bzw. zugeklappt.
Mit diesem Tool kann man den Text leserlicher gestalten und Bereiche in Gruppen zusammen fassen.
#Region = Bereich erscheint eingeklappt beim Start
#RegionOpen = Bereich erscheint ausgeklappt beim Start
#EndRegion = Ende des Bereichs
Bereiche können auch ineinander verschachtelt werden.
Block Prüfung
Der Text Editor prüft automatisch fehlende und überzählige END Schlüsselwörter. Bitte setzen Sie jedes END Schlüsselwort in eine separate Zeile.
Karten Prüfung
(Ab Version 23.2.17)
Beim drücken des "Speichern" Knopfes wird die Karte geprüft und das Vorschaufenster aktualisiert. Die Fehleranzeige bleibt bestehen bis erneut der "Speichern" Knopf gedrückt wird.
Diese Funktion wird nicht ausgeführt wenn "Art des automatischen Speicherns" auf "Kein automatisches Speichern" eingestellt ist.
Symbol Karte erzeugen
Eine Karte mit allen Symbolen der MSF Symbol Datei. Details siehe "Karte mit allen Vector Symbolen erzeugen"
Ab Version 24.2.45 befindet sich der Knopf "Symbol Karte erzeugen" oben links beim Befehl "Mehr"
Übersicht / Tabellenansicht
Ab Version 24.1.120
In dieser Ansicht sehen Sie die wichtigsten Inhalte der Map Datei in Tabellenform.
Show Error File
Ab Version 24.1.102
Der Knopf "Show Error File" zeigt die letzten Zeilen der Fehler Datei an.
Die Fehlerdatei ist bei
CONFIG "MS_ERRORFILE"
definiert.
Die Funktion ist nur verfügbar wenn die Option "Auf Map Edit Server Maschine speichern" unter Kartenserver->MaopServer aktiv ist.
Suche
Rechts neben dem Text Editor steht ihnen eine Such-Funktion zur Verfügung. Geben Sie den Suchbegriff ein und drücken Sie zum starten der Suche entweder die Enter-Taste oder klicken sie auf den Knopf mit dem Filter Symbol. Gefundene Werte und deren Zeilen Nummer werden Ihnen in einer Liste angezeigt. Klicken Sie auf einen Eintrag in der Liste um zu der Zeile zu springen in der der Suchbegriff gefunden wurde.
Text ersetzen
Ab Version 23.1.70 gibt es oben einen Knopf "Text ersetzen" mit dem Sie Text Teile suchen und ersetzen können. Sie können hier auch Reguläre Ausdrücke verwenden. Die gleiche Funktion ist auch über das rechte Maus Context Menu verfügbar.
Mehrere Zeilen Aus-Kommentieren / Ein-Kommentieren
Ab Version 24.1.105. gibt es die Knöpfe "Comment Lines" und "Un-Comment Lines".
Hiermit können Sie für mehrere Zeilen gleichzeitig das Kommentar Zeichen "#" setzen oder entfernen.
Selektieren Sie dazu zuerst einen Zeilen Bereich
Drücken Sie danach "Comment Lines"
Markieren Sie den Bereich erneut und drücken Sie "Un-Comment Lines" um das # Zeichen vor jeder Zeile wieder zu entfernen.
Map File Inhalt vergleichen
Ab Version 23.1.70 gibt es oben einen Knopf "Map File vergleichen". Hiermit können Sie die Unterschiede einer "Map File" Datei die im Repository vorhanden ist mit dem aktuellen Map File Text Inhalt vergleichen.
Legendenvorschau
Wenn Sie auf das Register "Legende" klicken, sehen Sie eine Vorschau der Legende, wie sie im Client erscheinen wird. Wenn Sie einen Maßstab eingeben, zeigt der Baum nur die Layer/Klassen dieses Maßstabs an. Wenn Sie den Maßstab leer lassen, sehen Sie alle Layer/Klassen aller Maßstäbe.
Die Legenden Symbole werden erst erzeugt/erneuert wenn Sie den Knopf "Create/Refresh Icons" drücken.
Wenn Sie die Map Datei ändern sollten Sie IMMER danach die Legenden Symbole neu erzeugen lassen. Tun Sie das nicht, erhalten Sie ggf. keine Legenden Symbole oder Legenden Symbole erscheinen bei falschen Ebenen.
Auf der Rechten Seite sehen Sie eine Liste aller Legend Symbole die verwendet werden.
Wenn Sie "Art des automatischen Speicherns" auf "Kein automatisches speichern" stehen haben, müssen Sie vor dem Drücken des Knopfes, zuerst die Legenden Karten Datei mit dem Knopf "Download Legend Map File" herunterladen und auf den MapServer Rechner kopieren. Erst dann werden sie die Legenden Symbole sehen. Den Inhalt der Legenden Karten Datei sehen Sie auch im Register "Legend Map".
Die Legenden Symbole werden auf dem MapEdit Server hier abgelegt *…wwwroot\MumGeoData\Repositories\Default\MapServerLegendIcons\
MapEdit verwendet zum Erzeugen der Legenden Symbole eine eigene Karten Datei. Dies wurde so gemacht weil die MapServer Standard Funktionalität zum Erzeugen von Legenden Symbolen leider unbrauchbare Symbole erzeugt, vor allem wenn als Symbol-Einheit Meter genutzt wird. Beachten Sie das wenn Sie MapServer Karten via WMS in eine Applikation einbinden, dass dann nicht die von MapEdit "schöneren" erzeugten Symbole verwendet werden sondern die MapServer eigenen Symbole.
Die Kontrollkästchen in dieser Ansicht zeigen initialen an welche Layer/Gruppen beim beginn eingeschalten sind. Mit dem Reset Knopf oben Rechts kann der original Zustand wieder hergestellt werden.
Das ein und ausschalten von Elementen in dieser Ansicht hat keinen Einfluss darauf ob ein Element initial ein oder ausgeschalten ist und dient nur zum erzeugen von Layerlisten. Die Einstellung wie ein Elemente geschaltet ist geschieht einzig und allein im Map File.
Die Layerliste wird in den Textboxen angezeigt und kann von dort kopiert werden. Dies kann nützlich sein wenn Sie eine Layerliste für URLs benötigen (z.B. für den Berichts Designer oder andere Tools). Beachten Sie den Unterschied zwischen "sichtbaren" und "eingeschalteten" Layern. Ein Layer kann eingeschaltet sein aber durch Masstabsbereichsbeschränkungen nicht sichtbar sein.
Layer Titel
Mit "wms_title" können Sie den Legenden Titel für einen Layer festlegen.
Beispiel:
LAYER
NAME "MY_LAYER"
METADATA
"wms_title" "Gewaesserflaechen"
END
Legenden Gruppen
Sie können Layer auch in Gruppen zusammenfassen. Geben Sie dazu bei jedem Layer bei „wms_layer_group“ den Gruppennamen und bei „wms_group_title“ den Gruppen Titel an.
Legenden Gruppennamen müssen zwingen mit einem "/" Zeichen beginnen. Verwenden Sie bei Gruppennamen keine Sondern- und Leerzeichen.
Beispiel:
LAYER
NAME "MY_LAYER"
METADATA
"wms_title" "Gewaesserflaechen"
"wms_layer_group" "/gruppe2"
"wms_group_title" "Gruppe2"
END
Untergruppen werden durch ein "/" Zeichen getrennt
Beispiel:
LAYER
NAME "MY_LAYER"
METADATA
"wms_title" "Gewaesserflaechen"
"wms_layer_group" "/gruppe2/untergruppe1"
"wms_group_title" "Untergruppe 1"
END
Class Titel
Für Klassen müssen Sie das Schlüsselwort "Name" der CLASS festlegen, um einen Titel für die Klassen anzuzeigen.
CLASS
NAME "Gewaesserflaechen"
STYLE
Layer/Gruppen beim Start ausschalten
Standardmäßig sind alle Gruppen und Ebenen nach dem Start des Clients eingeschalten. Wenn Sie möchten, dass ein Layer oder eine Gruppe beim Start ausgeschaltet ist, können Sie das Schlüsselwort #MAPEDIT_STARTUP_STATUS_OFF gefolgt vom Namen der Ebene oder Gruppe an einem beliebigen Ort Ihres MapFiles angeben.
Beispiel:
#MAPEDIT_STARTUP_STATUS_OFF "STRASSEN"
#MAPEDIT_STARTUP_STATUS_OFF "/gruppe1/gruppe3"
Der Name einer Gruppe muss der Name sein, der im Schlüsselwort "wms_layer_group" des MapFiles gesetzt wurde!
Layergruppen starten immer mit einem "/" Zeichen.
Beispiel:
LAYER
NAME "GRUENFLAECHEN"
STATUS ON
METADATA
"wms_title" "Gruenflaechen"
"wms_layer_group" "/gruppe1/gruppe3"
"wms_group_title" "Gruppe3"
END
Gruppieren von Klassen in der Legende
Wenn Sie eine Ebene mit vielen Klassen haben, können Sie die Legendenelemente mit dem folgenden Schlüsselwort gruppieren
#MAPEDIT_LEGEND_CLASS_GROUP followed by the name of the Group
Auf der LAYER-Ebene listen Sie alle Gruppen in umgekehrter Reihenfolge auf, die Sie anzeigen möchten. Sie können dort beliebig viele #MAPEDIT_LEGEND_CLASS_GROUP-Einträge hinzufügen. Fügen Sie auf KLASSEN-Ebene den Eintrag #MAPEDIT_LEGEND_CLASS_GROUP hinzu, um der Klasse mitzuteilen, zu welcher Gruppe sie gehören soll. Es kann nur eine #MAPEDIT_LEGEND_CLASS_GROUP auf KLASSEN-Ebene geben !!
Verwechseln Sie diese Gruppen nicht mit den „Legendengruppen“, die zum Ein- / Ausschalten einer Gruppe von Ebenen verwendet werden. Die Legend Class Groups dienen nur zu Anzeigezwecken und können vom Endbenutzer nicht ein- oder ausgeschaltet werden.
Beispiel:
LAYER
NAME "STRASSEN"
...
#MAPEDIT_LEGEND_CLASS_GROUP "Gruppe B"
#MAPEDIT_LEGEND_CLASS_GROUP "Gruppe A"
CLASS
NAME "Strassen5"
#MAPEDIT_LEGEND_CLASS_GROUP "Gruppe A"
STYLE
WIDTH 8
COLOR 255 255 0
END
END
CLASS
NAME "Strassen4"
#MAPEDIT_LEGEND_CLASS_GROUP "Gruppe B"
STYLE
WIDTH 3
COLOR 255 0 0
END
END
CLASS
NAME "Strassen3"
#MAPEDIT_LEGEND_CLASS_GROUP "Gruppe A"
STYLE
WIDTH 5
COLOR 255 0 0
END
END
Ohne diese Einstellungen würden Sie einen Legendeneintrag erhalten, der wie folgt aussieht:
Strassen3
Strassen4
Strassen5
Mit dem obigen Beispiel wird das Ergebnis folgendermaßen sein:
Gruppe A
Strassen 3
Strassen 5
Gruppe B
Strassen 4
Weiteres Beispiel:
Anzeige im Client:
Gruppen und Ebenen beim Start aufklappen
Mit dem Schlüsselwort #MAPEDIT_STARTUP_EXPANDED können Sie einstellen ob eine Gruppe oder Ebene beim Start des Clients im Legendenbaum aufgeklappt dargestellt werden soll. Per default werden alle Elemente eingeklappt dargestellt.
Wird die Einstellung bei einer Ebene gesetzt, dann werden wenn die Ebene mehrere Darstellungsstile besitzt, diese ausgeklappt angezeigt.
Beispiel:
MAP
..
#MAPEDIT_STARTUP_EXPANDED "/gruppe2"
#MAPEDIT_STARTUP_EXPANDED "POI"
Zeichen Reihenfolge
Auf der Registerkarte "Drawing Order" können Sie die Zeichenreihenfolge der Ebenen überprüfen.
MapServer zeichnet die Layer in der Reihenfolge, in der die Layer im MapFile erscheinen.
Der erste Layer in der Kartendatei wird also zuerst gezeichnet.
Der letzte Layer in der Kartendatei zuletzt.
Das bedeutet, dass die erste Ebene in der Datei unter der zweiten gezeichnet wird.
Dies ist das Standardverhalten von MapServer.
Da dieses Verhalten nicht immer praktisch ist bietet MapEdit das optionale Schlüsselwort #MAPEDIT_DRAWING_ORDER an.
Mit diesem können Sie eigene Zeichnungsreihenfolgen unabhängig von der Reihenfolge in der Datei definieren. Dieses Schlüsselwort kann nur mit der MapEdit-Client-Software verwendet werden! Es funktioniert nicht, wenn jemand über WMS auf Ihre MapServer-Karte zugreift, da die MapServer-Software dieses Schlüsselwort nicht kennt.
Das Schlüsselwort muss im Abschnitt "MAP" aufgeführt sein. Es funktioniert nicht, wenn Sie es im LAYER-Abschnitt oder einem anderen Abschnitt der Kartendatei festlegen. Wenn Sie das Schlüsselwort #MAPEDIT_DRAWING_ORDER verwenden, werden die Ebenen in der aufgelisteten Reihenfolge gezeichnet, wobei der erste Eintrag die oberste Ebene und der letzte die unterste Ebene ist.
Beispiel:
MAP
..
#MAPEDIT_DRAWING_ORDER "STRASSEN"
#MAPEDIT_DRAWING_ORDER "POI"
#MAPEDIT_DRAWING_ORDER "POI_TBL"
Nicht aufgeführte Ebenen werden nach den aufgelisteten Reihenfolgen in der Reihenfolge der MapFile gezeichnet. Das bedeutet, dass alle aufgelisteten Ebenen oben und alle nicht aufgelisteten Ebenen unten gezeichnet werden.
Legenden Reihenfolge
(Ab Version 23.2.18)
Standardmäßig liest MapServer die Ebenen und Gruppen für die Legende in umgekehrter Reihenfolge der Kartendatei.
In einigen Fällen kann dies schwierig werden.
Daher hat MapEdit ein spezielles, optionales Schlüsselwort #MAPEDIT_LEGEND_ORDER. Dies kann verwendet werden, um die Reihenfolge der Gruppen und Ebenen in der Legende festzulegen. Die Legenden Einträge werden in der Reihenfolge angezeigt, in der sie in der Datei aufgeführt sind. (also nicht umgekehrt) Alle nicht aufgeführten Ebenen und Gruppen erscheinen nach diesen und in umgekehrter Reihenfolge der MapFile.
Bei Layern muss hier der Wert vom NAME Eintrag des Layers verwendet werden. Der Name muss exakt so geschrieben werden wie beim NAME Tag.
Im folgenden Bespiel ist der Name "BUS_STOP"
LAYER
NAME "BUS_STOP"
METADATA
"wms_title" "Bus Stop"
"wms_layer_group" "/Bus"
"wms_group_title" "Bus"
END
Bei Gruppen muss der Wert des "wms_layer_group" Eintrags des Layers verwendet. In Beispiel oben also "/Bus"
Beispiel:
#MAPEDIT_LEGEND_ORDER "HOTEL"
#MAPEDIT_LEGEND_ORDER "PARK"
#MAPEDIT_LEGEND_ORDER "/Sewer"
#MAPEDIT_LEGEND_ORDER "SEWER_MANHOLE"
#MAPEDIT_LEGEND_ORDER "SEWER_LINE"
#MAPEDIT_LEGEND_ORDER "LIBRARY"
#MAPEDIT_LEGEND_ORDER "/Bus"
#MAPEDIT_LEGEND_ORDER "BUS_STOP"
#MAPEDIT_LEGEND_ORDER "/Others"
#MAPEDIT_LEGEND_ORDER "POSTAL_CODE"
#MAPEDIT_LEGEND_ORDER "/Others/More"
#MAPEDIT_LEGEND_ORDER "PARCEL"
Die Leerzeichen im obigen Beispiel sind keine Pflicht und haben keine Auswirkung auf die Gliederung und wurde nur der Übersichtlichkeit wegen eingefügt.
Dies funktioniert nur mit dem MapEdit-Client und hat keine Auswirkungen auf die WMS Legenden Einstellung da MapServer dieses Schlüsselwort nicht kennt.
Gruppen Reihenfolge
Ab Version 23.2.18 wird dies nicht mehr benötigt. Stattdessen kann für Gruppen wie oben unter "Legenden Reihenfolge" beschrieben das Schlüsselwort #MAPEDIT_LEGEND_ORDER verwendet werden. Wird #MAPEDIT_GROUP_ORDER und #MAPEDIT_LEGEND_ORDER verwendet, dann wird zuerst #MAPEDIT_GROUP_ORDER und danach #MAPEDIT_LEGEND_ORDER ausgewertet. Es wird dazu geraten #MAPEDIT_GROUP_ORDER ab 23.2.18 nicht mehr zu verwenden.
Standardmäßig liest MapServer die Gruppen für die Legende in umgekehrter Reihenfolge der Kartendatei. In einigen Fällen kann dies schwierig werden. Daher hat MapEdit ein spezielles, optionales Schlüsselwort #MAPEDIT_GROUP_ORDER. Dies kann verwendet werden, um die Reihenfolge der Gruppen in der Legende festzulegen. Die Gruppen werden in der Reihenfolge angezeigt, in der sie in der Datei aufgeführt sind. (also nicht umgekehrt) Alle nicht aufgeführten Gruppen erscheinen nach diesen und in umgekehrter Reihenfolge der MapFile.
Beispiel:
#MAPEDIT_GROUP_ORDER "/gruppe2"
#MAPEDIT_GROUP_ORDER "/gruppe1"
#MAPEDIT_GROUP_ORDER "/gruppe1/gruppe3"
Dies funktioniert nur mit dem MapEdit-Client und hat keine Auswirkungen auf die WMS Group-Einstellung da MapServer dieses Schlüsselwort nicht kennt.
Information
Auf der Registerkarte "Information" erhalten Sie die Informationen darüber welches Symbolfile und welchen Speichermodus Sie gewählt haben und je nachdem welchen Speichermodus Sie gewählt haben auch den Ort Ihrer Sicherung.
Vorschau-Tool
Mit der Schaltfläche "Map Preview" steht eine Kartenvorschau Funktion zur Verfügung.
Ab Version 24.1.100 steht ein zoomen mittel Mausrad zur Verfügung. Halten sie dazu die Maus in die Mitte der Karte und bewegen Sie dann zum zoomen das Mausrad.
Damit diese Schaltfläche funktioniert, müssen im Map File die Ausdehnung der Karte mit dem EXTENT Schlüsselwort und der EPSG Code im Abschnitt PROJECTION vorhanden sein.
Beispiel:
MAP
EXTENT 3433035 5793716 3439559 5797188
PROJECTION
"init=epsg:31467"
END
Optional können Sie auch das Schlüsselwort #MAPEDIT_PREVIEW_BBOX verwenden um für die Vorschau einen kleineren Ausschnitt als Startansicht zu definieren.
Beispiel:
#MAPEDIT_PREVIEW_BBOX "5793716 3433035 5797188 3439559"
Bitte verwenden Sie innerhalb der Koordinatendefinition nur Ganzzahlen (Zahlen ohne Komma)
Im Vorschaufenster sehen sie unten in der URL beim Parameter BBOX die Koordinaten der aktuellen Ausdehnung der Karte.
Wenn #MAPEDIT_PREVIEW_BBOX nicht gesetzt ist, werden die Werte von EXTEND für die Startansicht verwendet. Der EPSG-Code kann optional auch mit #MAPEDIT_PREVIEW_CRS "EPSG:31467" unabhängig von der PROJECTION definiert werden.
Kartenauflösung beim Drucken
Beim Drucken von Karten wird oft eine höhere Auflösung/Qualität der Karte gefordert als bei der Client Ansicht. Die kann durch ändern der DPI Zahl erreicht werden. Um die Kartenauflösung zu testen kann die TextBox "DPI" verwendet werden. Geben Sie einen Wert ein und drücken Sie zum Testen die Eingabetaste. Dieser Wert kann dann in der Plot Konfiguration eingegeben werden. Beachten Sie das dies nur ein Funktion zum Testen der DPI Zahl ist und diese Funktion nicht die DPI Einstellungen der Karte oder des Plottens setzt.
Der MapServer steuert die Kartenauflösung über die Schlüsselwörter RESOLUTION und DEFRESOLUTION. Beim Drucken werden diese beiden Parameter der Karte mit übergeben, wobei für RESOLUTION der Wert aus der Plot Konfiguration gesetzt wird.
Stellen Sie in der Plot Konfiguration den gewünschten DPI Wert ein.
Beispiel:
<format name="DIN A4 Hochformat 1" id="1001" height="297" width="210" dpi="200">
Achten Sie darauf, die DPI Zahl nicht zu hoch einzustellen, da sonst ein leerer Ausdruck entsteht.
400 dpi z.Bsp. waren bei einem Testgerät schon zu viel, da der MapServer nicht mit so großen Karten umgehen kann. 200 dpi waren ok.
Der MAXSIZE-Tag im Header des Mapfiles muss auf 15000 bleiben, dies entspricht der Auflösung eines A0-Blatts.
Karten wiederverwenden mittels dynamischem Datenbanknamen
Ab Version 22.2.15 verfügbar.
Nehmen wir an Sie haben 5 Wasser Datenbanken (eine je Gemeinde) mit der exakt gleichen Datenstruktur und sie wollen die gleiche MapServer Kartendefinition für alle 5 Datenbank gemeinsam verwenden.
Um nun nicht 5 Kopien der MapServer Karte erzeugen zum müssen und vor allem bei Änderungen pflegen zu müssen weil der Datenbankname jeweils anders ist, können Sie in der MapServer Karte Platzhalter für den Datenbanknamen verwenden.
MapServer nennt diese Run-time Substitution
Details sind unter https://mapserver.org/cgi/runsub.html#runsub erläutert.
Der Wert für den Platzhalter wird dann in der Kartenverwaltung bei "Extended URL Parameters" angegeben. Der Platzhaltername kann beliebig gewählt werden. Sie können auch mehrere Platzhalter definieren wenn Sie mehr als eine Datenbank in ihrem MapFile definiert haben.
Beispiel:
Sie haben in der Karte "Wasser.map" eine Datenbank "wasser_stuttgart.sqlite" verwendet. Die gleiche Karte wollen Sie nun für die Datenbank "wasser_stuttgart" und auch für die Datenbank "wasser_gerlingen" verwenden.
Ihr Layer ist folgendermassen definiert:
LAYER
NAME "STRASSEN"
TYPE LINE
CONNECTIONTYPE OGR
CONNECTION "C:\inetpub\wwwroot\MumGeoData\Databases\wasser_stuttgart.sqlite"
Ersetzen Sie nun den Namen der Datenbank "wasser_stuttgart" durch einen Platzhalter "dbwasser" der dann jeweils via URL Parameter gesetzt wird.
Dazu erzeugen Sie einen VALIDATION Abschnitt mit dem Namen des Platzhalters so wie einen Vorgabewert (default) der genutzt wird wenn der URL Parameter nicht angegeben wird. Dies kommt z.B. vor wenn Sie die Karte in der Kartenverwaltung aufsetzen und testen wollen da hier der Parameter nicht übergeben wird. Den Name des Vorgabewertes bildet sich aus "default_" und dem Namen des Platzhalters.
Im CONNECTION Ausdruck ersetzen Sie nun den Namen der Datenbank "wasser_stuttgart" durch den Ausdruck "%dbwasser1%". Also den Platzhalternamen in %.
LAYER
NAME "STRASSEN"
VALIDATION
"dbwasser" ""
"default_dbwasser" "wasser_stuttgart"
END
TYPE LINE
CONNECTIONTYPE OGR
CONNECTION "C:\inetpub\wwwroot\MumGeoData\Databases\%dbwasser%.sqlite"
In der Kartenverwaltung die Sie für die Karte der Gemeinde Stuttgart verwenden geben Sie nun die Karte "Wasser.map" an und setzen dann bei "Extended URL Parameters" den Namen der Datenbank für den Parameter.
&dbwasser=wasser_stuttgart
Um die gleiche Karte nun für die Gemeinde Gerlingen verwenden zu können
erzeugen sie in der Kartenverwaltung der Gemeinde Gerlingen eine MapServer Karte und
verwenden dort auch die Karte "wasser.map".
Geben Sie dann den Namen der Datenbank "wasser_gerlingen" im "Extended URL Parameters" an.
&dbwasser=wasser_gerlingen
Tabellen Felder anzeigen
Ab Version 24.1.112
Wenn die zwei Schlüsselwörter #MAPEDIT_CONNECTION_NAME und #MAPEDIT_TABLE_NAME bei einem Layer gesetzt sind, werden wenn der Cursor auf dem Schlüsselwort "EXPRESSION" oder "DATA" oder "#MAPEDIT_TABLE_NAME" gesetzt wird, alle Felder der Tabelle auf der rechten Seite angezeigt.
Angabe beim Layer:
LAYER
NAME "STRASSEN"
#MAPEDIT_CONNECTION_NAME "OSNAB"
#MAPEDIT_TABLE_NAME "STRASSEN"
Wird die Map Datei über Synchronizieren mit dem Darstellungsmodel oder via Erzeugen aus Datenmodel erzeugt dann werden diese Schlüsselwörter automatisch gesetzt.
Das Schlüsselwort #MAPEDIT_CONNECTION_NAME muss wie im Besipiel vor dem #MAPEDIT_TABLE_NAME gesetzt werden und nicht umgekehrt, ansonsten funktioniert die Funktion nicht. Die Schlüsselwörter müssen Zeilentechnisch vor EXPRESSION oder DATA gesetzt werden aber nach LAYER.
Schnellsuche: Auswahl von "Alle Objektklassen"
Ab Version 23.1.185
Damit die Schnellsuche die Option "Alle Objektklassen" verwenden kann muss in der MapServer der Datenbankverbindungsname und der Tabellenname angegeben werden.
Dafür gibt es die zwei Schlüsselwörter #MAPEDIT_CONNECTION_NAME und #MAPEDIT_TABLE_NAME
Diese Angaben werden nur für die Suche verwendet und haben ansonsten keine Bedeutung und ersetzen nicht die CONNECTION bzw DATA Tags.
Zum festlegen gibt es mehrere Möglichkeiten:
Angabe bei jedem Layer:
LAYER
NAME "STRASSEN_1"
#MAPEDIT_CONNECTION_NAME "OSNAB"
#MAPEDIT_TABLE_NAME "STRASSEN"
CONNECTIONTYPE OGR
CONNECTION "C:\inetpub\wwwroot\MumGeoData\Databases\%dbname1%.sqlite"
Wenn bei NAME bereits der Tabellenname steht kann die Option #MAPEDIT_TABLE_NAME enfallen.
Wenn alle Layer von der gleichen Datenbankverbindung kommen kann die Datenbankverbindung einmalig global im MAP Tag angegeben werden statt bei jedem Layer einzeln.
MAP
#MAPEDIT_CONNECTION_NAME "OSNAB"
Alle Layer die nach dem Schlüsselwort #MAPEDIT_CONNECTION_NAME stehen bekommen für die Suche den angegebene Datenbankverbindungsnamen.
MAP
#MAPEDIT_CONNECTION_NAME "OSNAB"
LAYER
NAME "POI"
...
END
LAYER
NAME "STRASSEN"
...
END
#MAPEDIT_CONNECTION_NAME "LAND"
LAYER
NAME "BAUM"
...
END
LAYER
NAME "BUSCH"
...
END
Beispiel Einstellungen für verschiedene Datenbankenverbindungseinstellungen
Postgres
LAYER
NAME "HOTEL"
STATUS ON
TYPE POINT
CONNECTIONTYPE POSTGIS
CONNECTION "user=postgres dbname=lasvegas password=avs host=localhost port=5432"
DATA "geom from (select * from hotel) using unique fid"
PROCESSING "CLOSE_CONNECTION=DEFER"
CLASS
STYLE
SYMBOL "circlefilled"
SIZE 14
WIDTH 1
COLOR "#FFA500FF"
OUTLINECOLOR "#000000FF"
END
END
END
LAYER
NAME "HOTEL_LBL"
STATUS ON
TYPE POINT
CONNECTIONTYPE POSTGIS
CONNECTION "user=postgres dbname=lasvegas password=avs host=localhost port=5432"
DATA "geom from (select * from hotel_lbl) using unique fid"
PROCESSING "CLOSE_CONNECTION=DEFER"
CLASS
LABEL
COLOR "#000000FF"
FONT "arial"
TYPE TRUETYPE
SIZE 14
TEXT "[label_text]"
POSITION uc
FORCE true
END
END
END
Schreiben Sie bei Postgres alle Feldnamen in in Kleinbuchstaben. z.B. bei TEXT "[label_text]". ansonsten funktioniert ggf die Abfrage nicht.
SQLite
CONNECTIONTYPE OGR
CONNECTION "C:\inetpub\wwwroot\MumGeoData\Databases\OSNAB.sqlite"
DATA "select FID,GEOM from GEWAESSERFLAECHEN"
PROCESSING "CLOSE_CONNECTION=DEFER"
Oracle
LAYER
NAME "STRASSEN"
CONNECTIONTYPE PLUGIN
PLUGIN "oracle"
CONNECTION "OSNAB_ME/avs@orcl"
PROCESSING "CLOSE_CONNECTION=DEFER"
DATA "GEOM from (select * from STRASSEN) USING UNIQUE FID SRID 31467"
TYPE LINE
CLASS
STYLE
WIDTH 4
COLOR "#FFA500FF"
END
END
END
LAYER
NAME "STRASSEN_LBL"
CONNECTIONTYPE PLUGIN
PLUGIN "oracle"
CONNECTION "OSNAB_ME/avs@orcl"
PROCESSING "CLOSE_CONNECTION=DEFER"
DATA "GEOM (select * from STRASSEN_LBL) USING UNIQUE FID SRID 31467"
TYPE POINT
CLASS
LABEL
COLOR "#A52A2AFF"
FONT "arial"
TYPE TRUETYPE
SIZE 14
TEXT "[PRE][LABEL_TEXT][SUF]"
POSITION uc
END
END
END
Schreiben Sie bei Oracle alle Feldnamen in Grossbuchstaben. z.B. bei TEXT "[PRE][LABEL_TEXT][SUF]". ansonsten funktioniert ggf die Abfrage nicht.
Hinweis zu INCLUDE Dateien
"#MAPEDIT_*" Schlüssenwörter können nicht in INCLUDE Datei verwendet werden und werden ignoriert.
Symbole der Legendenanzeige (Legenden Karte) werden ggf falsch dargestellt oder funktionieren nicht immer wenn INCLUDE Dateien verwendet werden. Gehen Sie deswegen sehr sparsam mit INCLUDE Dateien um.
Wenn INCLUDE Dateien verwendet werden bekommen Sie in MapEdit einen Hinweis. Dieser Hinweis ist nur zur Information.
Hinweise zu INCLUDE Dateien finden Sie unter https://mapserver.org/mapfile/include.html
Label Texte und angaben in Metern (Vorsicht)
Map Server kann wenn bei SIZEUNITS METERS eingestellt ist nur volle Meter Angaben verarbeiten.
d.h. Werte wie 0.6 oder 1.7 werden nicht richtig verarbeitet.
Als Workaround kann man bei SIZEUNITS INCHES einstellen und dann bei SIZE (Meter Wert * 39.36) als den Meter umgerechnet in inches
Beispiel:
LAYER
NAME "PARK_LBL2"
...
SIZEUNITS INCHES
CLASS
LABEL
COLOR "#FF6347FF"
FONT "arial"
TYPE TRUETYPE
SIZE (0.5 * 39.36)
TEXT ('[pre]'+'[label_text]'+'[suf]')
ANGLE 0
POSITION AUTO
FORCE true
END
END
END
Label Texte mit Rahmen darstellen
Variante 1:
Verwenden von OUTLINEWIDTH und OUTLINECOLOR
Beispiel:
SIZEUNITS INCHES
CLASS
LABEL
COLOR "#000000FF"
FONT "arial"
TYPE TRUETYPE
SIZE (40 * 39.36)
TEXT "[PRE][LABEL_TEXT][SUF]"
ANGLE [ORI_IN_DEG]
POSITION uc
FORCE true
OUTLINEWIDTH 100 #in inch
OUTLINECOLOR "#FFFFFFFF"
END
END
Variante 2:
Verwenden von GEOMTRANSFORM und COLOR
SIZEUNITS INCHES
CLASS
LABEL
COLOR "#000000FF"
FONT "arial"
TYPE TRUETYPE
SIZE (40 * 39.36)
TEXT "[PRE][LABEL_TEXT][SUF]"
ANGLE [ORI_IN_DEG]
POSITION uc
FORCE true
STYLE
GEOMTRANSFORM "labelpoly"
COLOR "#FFFFFFFF"
END
END
END
Orientierung bei Label und Symbolen
In MapEdit/Topobase wird die Orientierung für jedes Objekt im Feld "ORIENTATION" in Gon gespeichert. In MapServer muss dies bei ANGLE in Degree angegeben werden.
Ab Version 24.1.95 Wird das MapServer File via Export bzw synchronisieren aus dem Darstellungsmodell erzeugt dann macht das Programm dies automatisch für Sie.
Beispiel:
CONNECTIONTYPE POSTGIS
CONNECTION "user=postgres dbname=lasvegas password=manager host=localhost port=5432"
PROCESSING "CLOSE_CONNECTION=DEFER"
DATA "geom from (select fid,geom,((100-orientation)*9/10) as ms_angle from park_lbl) AS new_table using unique fid"
EXTENT 650067 3981081 696398 4020127
SIZEUNITS INCHES
CLASS
LABEL
COLOR "#D2691EFF"
FONT "arial"
TYPE TRUETYPE
SIZE (10 * 39.36) # convert meter to inch
TEXT '[label_text]'
ANGLE [ms_angle]
POSITION 'LR'
OUTLINECOLOR "#FFFFFFFF"
OUTLINEWIDTH 39.36 # white buffer around text 10 * 39.36 / 10
FORCE true
END
END
Zeilenumbrüche
Ab Version 24.1.95 Wird das MapServer File via Export bzw synchronisieren aus dem Darstellungsmodell erzeugt dann macht das Programm dies automatisch für Sie.
Für Zeileumbrüche wird in AutoCAD das Steuerzeichen "\P" verwendet. MapServer kennt diese Steuerzeichen nicht, weshalt diese bei Oracle und Postgres in CHR(10) und bei SQLite in CHAR(10) umgewandelt werden muss.
Beispiel:
CONNECTIONTYPE POSTGIS
CONNECTION "user=postgres dbname=lasvegas password=manager host=localhost port=5432"
PROCESSING "CLOSE_CONNECTION=DEFER"
DATA "geom from (select fid,geom,(replace(LABEL_TEXT,'\P', CHR(10))) as ms_label_text from park_lbl) AS new_table using unique fid"
EXTENT 650067 3981081 696398 4020127
SIZEUNITS INCHES
CLASS
LABEL
COLOR "#D2691EFF"
FONT "arial"
TYPE TRUETYPE
SIZE (10 * 39.36) # convert meter to inch
TEXT '[ms_label_text]'
ANGLE 0
POSITION 'LR'
OUTLINECOLOR "#FFFFFFFF"
OUTLINEWIDTH 39.36 # white buffer around text 10 * 39.36 / 10
FORCE true
END
END
Label Positionen
Ab Version 24.1.95 Wird das MapServer File via Export bzw synchronisieren aus dem Darstellungsmodell erzeugt dann macht das Programm das umwandeln der Label Positionen automatisch für Sie.
Laut Dokumentation von MapServer muss die POSITION folgende Werte annehmen:
Position der Beschriftung relativ zum Beschriftungspunkt (nur Ebenen). Der erste Buchstabe ist die
Position „Y“, der zweite Buchstabe ist die Position „X“.
„Auto“ weist MapServer an, eine Beschriftungsposition zu berechnen,
die andere Beschriftungen nicht beeinträchtigt.
Bei Punkten wählt MapServer aus den 8 äußeren Positionen (d. h. ohne cc) aus.
Bei Polygonen wählt MapServer cc (hinzugefügt in MapServer 5.4), uc, lc, cl und cr
als mögliche Positionen aus.
Bei Linien wird nur lc oder uc verwendet, bis eine Position gefunden wird,
die nicht mit bereits gezeichneten Beschriftungen kollidiert.
Wenn alle Positionen einen Konflikt verursachen, wird die Beschriftung nicht gezeichnet
(es sei denn, der Parameter FORCE a der Beschriftung ist auf „true“ gesetzt).
Die „automatische“ Platzierung ist nur bei zwischengespeicherten Etiketten verfügbar.
Da MapServer bei POSITION keine Expressions verwendet werden können und die Labelposition aus MapEdit/Topobase bei jedem Objekt in einer Label Tabelle hinterlegt ist müssen die Werte für MapServer im SQL (bei DATA) umgewandelt werden.
In Oracle:
(decode(vertical_alignment, 'Top','l','Bottom','u','c')||decode(horizontal_alignment,'Center','c','Left','r','l')) as MS_TXT_POS
In Postgres und SQLite:
(case when vertical_alignment='Top' then 'l' when vertical_alignment='Bottom' then 'u' else 'c' end||case when horizontal_alignment='Center' then 'c' when horizontal_alignment='Left' then 'r' else 'l' end) as ms_txt_pos
Beispiel für Postgres:
LAYER
NAME "PARK_LBL"
STATUS ON
METADATA
"wms_title" "Park Lbl"
"wms_layer_group" "/gruppe_2"
"wms_group_title" "Gruppe 2"
END
TYPE POINT
CONNECTIONTYPE POSTGIS
CONNECTION "user=postgres dbname=lasvegas password=manager host=localhost port=5432"
PROCESSING "CLOSE_CONNECTION=DEFER"
DATA "geom from (select fid,geom,label_text,(case when vertical_alignment='Top' then 'l' when vertical_alignment='Bottom' then 'u' else 'c' end||case when horizontal_alignment='Center' then 'c' when horizontal_alignment='Left' then 'r' else 'l' end) as ms_txt_pos from park_lbl) AS new_table using unique fid"
EXTENT 650067 3981081 696398 4020127
SIZEUNITS INCHES
CLASS
LABEL
COLOR "#D2691EFF"
FONT "arial"
TYPE TRUETYPE
SIZE (10 * 39.36) # convert meter to inch
TEXT '[label_text]'
ANGLE 0
POSITION [ms_txt_pos]
OUTLINECOLOR "#FFFFFFFF"
OUTLINEWIDTH 39.36 # white buffer around text 10 * 39.36 / 10
FORCE true
END
END
END
In MapServer gibt das Attribut POSITION die Labelposition an. In Map3D/MapEdit bestimmen die Werte HORIZONTAL_ALIGNMENT und VERTICAL_ALIGNMENT (Referenz) den Ankerpunkt des Labels. Dies trägt zur Folge, dass die Werte entsprechend getauscht werden müssen! Beispiel: Map3D/MapEdit vertical_alignment = 'top' entspricht in MapServer L (lower).
Dynamische Beschriftung
Eine dynamische Beschriftung entspricht einer Beschriftung, die standardmäßig für ein bestimmtes Symbol angezeigt wird. Dies entspricht dem Symbol und einem Text. Beispielsweise ein Polygon, das eine Beschriftung von einem bestimmten Attribut enthält.
Die Generierung dynamischer Labels wird vom App Builder beim Konvertieren eines Darstellungsmodells in eine Mapserver-Karte nicht berücksichtigt. Dieses Element ist nur über das Mapfile konfigurierbar.
Um sie zu generieren, müssen Sie innerhalb der LAYER --> CLASS-Tags ein LABEL angeben. Wie im folgenden Beispiel:
Wichtiger Hinweise für Postgres
Bei Postgres müssen im "DATA" Tag die Tabellen/View und Spaltennamen immer in Kleinbuchstaben geschrieben werden, ansonsten funktioniert der Layer nicht.
Wenn Sie Tabellen/Views händisch via SQL angelegt haben und nicht via AppBuilder Benutzeroberfläche (wovon immer abzuraten ist) dann sind die Views/Tabellen nicht in der Tabelle GEOMETRY_COLUMNS registrieren.
Durch ausführen von "Spatial metadata erneuern" in der AppBuilder "Datenbankwartung" werden alle nicht registrierten Tabellen und Views in GEOMETRY_COLUMNS registriert.
Bekannte Probleme
The remote server returned an error: (500) Internal Server Error
Kann auftreten wenn ein MapServer Vector Symbol mehr als 100 Koordinaten hat. Reduzieren Sie die Anzahl der Koordinaten auf 100.
Im Map Server Symbole Dialog werden Symbol die mehr als 100 Koordinaten haben ab Version 24.1. in rot dargestellt.
The remote server returned an error: (404) Not Found.
Siehe auch Installation MapServer 8.
Wenn Sie Karten mit sehr vielen Layern haben, dann kann die MapServer URL unter Umständen länger als die standardmäßig zugelassenen 2048 Zeichen des IIS werden. Es wird deshalb geraten, den Wert im IIS höher als den Standardwert zu setzen da es ansonsten zu Fehlermeldungen kommen kann.
IIS -> "Default Web Site" -> Request Filtering -> Register "Query String" "Edit Feature Settings..." "Maximum query string (Bytes)" von 2048 auf 10000 setzen bzw auf eine länge in der ihre URL passt.
Only polygon or line shapes can be drawn using a line layer definition.
In Oracle kann diese Meldung (oder ähnlich) vorkommen wenn man Collection Feature Tabellen benutzt
msDrawMap(): Image handling error. Failed to draw layer named 'AP_PPO_L'.
msDrawShape(): General error message. Only polygon or line shapes can be drawn using a line layer definition.
MapServer kann keine Collection Feature anzeigen. d.h. für jeden Geometrie Typ muss ein eigener Layer angelegt werden und im SQL (DATA) die Datensätze auf den jeweiligen Typ beschränkt werden.
Wenn Sie das Map File automatisch mittels Export/Synchronizieren aus dem Darstellungsmodell erzeugen lassen, dann wird dies automatisch vom Programm für Sie richtig erzeugt.
Oracle geom.get_gtype() Werte
0 UNKNOWN_GEOMETRY
1 POINT
2 LINE or CURVE
3 POLYGON
4 COLLECTION
5 MULTIPOINT
6 MULTILINE or MULTICURVE
7 MULTIPOLYGON
für LINIE Layer
table a where a.geom.get_gtype() in (2,6)
für POLYGON Layer
table a where a.geom.get_gtype() in (3,7)
für POINT Layer
table a where a.geom.get_gtype() in (1,5)
msLoadMap(): Regular expression error. Filename validation failed.
Dies kann vorkommen wenn man die MapServer Config Datei verändert hat. Man muss nach dem Ändern immer den IIS neu starten.
Error (FEHLER: find_srid() - could not find the corresponding SRID - is the geometry registered in the GEOMETRY_COLUMNS table? Is there an uppercase/lowercase mismatch?
Im Log steht folgendes:
[Wed Jul 3 21:04:20 2024].985000 msPostGISLayerWhichShapes(): Error (FEHLER: find_srid() - could not find the corresponding SRID - is the geometry registered in the GEOMETRY_COLUMNS table? Is there an uppercase/lowercase mismatch?
CONTEXT: PL/pgSQL-Funktion find_srid(character varying,character varying,character varying) Zeile 17 bei RAISE
) executing query: select "id_type"::text,"id_disposition_state"::text,"ori_in_deg"::text,ST_AsBinary(("geom"),'NDR') as geom,"fid"::text from (select *,(100-orientation)*9/10 as ori_in_deg from VU_WA_WASSERZAEHLERSCHACHT) AS new_table where "geom" && ST_GeomFromText('POLYGON)',find_srid('','VU_WA_WASSERZAEHLERSCHACHT','geom'))
Im MapFile wurde der Layer so definiert:
DATA "geom from (select *,(100-orientation)*9/10 as ori_in_deg from VU_WA_WASSERZAEHLERSCHACHT) AS new_table using unique fid" # use connection pooling
Das Problem ist in dem Fall das der View/Tabellenname nicht in Kleinbuchstaben geschriebn wurde.
Lösung:
Bei Postgres muss der View/Tabellenname und Spaltennamen im "DATA" Tag immer in Kleinbuchstaben geschrieben werden.
In dem Fall so:
DATA "geom from (select *,(100-orientation)*9/10 as ori_in_deg from VU_WA_WASSERZAEHLERSCHACHT) AS new_table using unique fid" # use connection pooling
Wenn das bereits der Fall ist dann prüfen Sie bitte ob der View und die Geometry in der Tabelle GEOMETRY_COLUMNS steht.
SELECT * FROM GEOMETRY_COLUMNS ORDER BY F_TABLE_NAME
Der Eintrag für den View/Tabelle muss vorhanden sein und auch hier muss der Tabellen und Geom Spalten Namen in Kleinbuchstaben geschrieben sein.
Reparieren lässt sich diese Problem in dem man im AppBuilder die "Datenbankwartung" und dort "Spatial metadata erneuern" ausführt. Diese Problem kann enstehen wenn man einen View/Tabelle nicht mit der AppBuilder Benutzeroberfläche (UI) anlegen sondern händisch via SQL.