Zum Hauptinhalt springen

Standard-Suche

Unter der Kategorie Standard verbirgt sich die u.a. in MapEdit Desktop bereitgestellte Suchfunktion - siehe Steuerungsfenster:

Standard-Suche im Steuerungsfenster MapEdit Desktop

Die oben abgebildeten Suchmöglichkeiten finden sich im AppBuilder unter dem entsprechenden Projekt wieder - nachfolgend am Beispiel der Suche "VK":

Beispielkonfiguration an Suche "VK"

Folgende Eingabefelder seien kurz erläutert:

  • Unter Titel erhält die konfigurierte Suche ihren Namen, welcher im linken Navigationsbereich präsentiert und die Suche zur Bearbeitung ausgewählt werden kann.
  • Unter Gruppe kann die Suche thematischen Gruppen zugewiesen werden.
  • Titel des Detailfensters spiegelt die Aufforderung zur Angabe des "Suchwertes" wider.
  • Unter Eingabe Typ können die unterschiedlichen Suchkategorien Textfeld, Liste und ComboBox definiert werden - siehe hierzu auch nachfolgende Beschreibung.
  • Die Listenhöhe stellt die maximale Anzeige von Suchen dar, die in dem Suchen- Fenster ausgeschrieben untereinander angezeigt werden.
  • Datenbankverbindung bietet die Auswahl eines schon eingerichteten Datenbankusers.
  • Das Drop-Down-Menü Cache Typ spiegelt die Einstellungen zum Cachen von Suchen wieder.
  • Im Feld SQL wird das SELECT aufgebaut und gleichzeitig die Ergebnisausgabe definiert.

Die im unteren Bereich angeordneten Buttons HINZUFÜGEN und ENTFERNEN bieten den Aufbau kaskadierender Suchabfragen.

Hinzufügen- und Entfernen-Buttons zum Aufbau kaskadierender Suchabfragen

Eingabe Typ

Bei der Erstellung einer Suche können Textfelder, Listen oder Comboboxen verwendet werden.

Drop-Down-Menü der Eingabetypen im AppBuilder

Bitte beachten

Bei mehr als 500 zu erwartenden Datensätzen sollte man immer die Einstellung "Textfeld" in Verbindung mit {Input} benutzen. Ergo: Viele Daten --> Textfeld, wenig Daten Liste oder Combobox.

Textfeld

Bei Verwendung des Textfeldes ist eine manuelle Eingabe erforderlich. Vergeben Sie einen Titel und wählen Sie die entsprechende Datenbankverbindung aus.

Beim Aufbau des Select-Statements in der Suchabfrage ist die Variable {Input} zu verwenden, diese Variable entspricht dem eingegebenen Text.

Liste

Bei Verwendung von Liste werden die Werte (Values) der in der Suchkonfiguration definierten Spalte in einer Liste. Hinweis: Dieser Such-Typ sollte nur bei einer geringen Anzahl von Werteinträgen verwendet werden. Über die Listenhöhe kann die Anzahl der in der Suche angebotenen Werte definiert werden, darüber hinausgehende Suchen können mittels Scrollfunktion ausgewählt werden.

Combo-Box

Bitte beachten

Bei Comboboxen ist die Anzahl der Rückgabewerte auf 2000 Einträge beschränkt. Das gilt für alle Datensätze des SQLs. Nur die ersten 2000 Datensätze werden zurückgeliefert. Und diese 2000 Datensätze stehen dann für die Eingabe zur Verfügung.

Über die Combo-Box werden ebenso wie bei der Liste Werte zur Auswahl vorgeschlagen, jedoch bietet die Combo-Box kaskadierende Suchen - wie wir sie z.B. bei der Suche nach Ort, Strasse und Hausnummer vorfinden. Auch ist bei Verwendung von Combo-Boxen die manuelle Eingabe von Werten möglich.

Kaskadierende Suche

Kaskadierende Suchen sind durch die Zusammenstellung von einzelnen Suchkonfigurationen möglich. So werden bei der Suche nach Ort, danach nach Strasse und final der Hausnummer die Suchen einzeln definiert und wie beim "Baukastenprinzip" in der Reihenfolge der Abfrage angeordnet. Das Ergebnis der zuvor ausgeführten Suche wird an die danach angeordnete Suche übergeben.

select strassenname, fid from strassen where gemeinde_fid={fid}

Die FID in { ... } entspricht der FID des gewählten Datensatzes aus der übergeordneten Suche - hier: Gemeinde.

Funktionsbutton Mehr...

Der Funktionsbutton Mehr... führt zu einem separaten Konfigurationsbereich:

Register "Geometrie" im AppBuilder

Geometrie

Im Register Geometrie ist die Datenbankverbindung und die Geometrietabelle anzugeben, in welcher die Geometrien für den Sprung auf die Karte gehalten werden. Unter dem Geometry-Feature-Key wird über ein SELECT die FID der Geometrietabelle ermittelt bzw. übergeben.

Wenn der Zoom Level leer ist wird der Zoom Level verwendet der im AppBuilder bei "Einstellungen" im Register "Karte" -> "Desktop" -> "Default Zoomlevel" angegeben wurde.

Es wird immer versucht auf diesen Zoom Level zu zoomen.

Für nicht Punkt Objekte gilt:
Wenn das Objekt nicht in den Zoom Level passt weil es zu gross ist wird auf den ersten Stützpunkt des Objektes gezoomt. Wenn das Objekt kleiner als 20 Pixel ist wird der Zoom Level so lange vergrößert bis das Objekt grösser als 20 Pixel ist.

Ab Version 23.2.223
Wird bei Zoom Level der Wert -1 eingetragen dann wird auf die Ausdehnung des Objekts gezoomt. Diese Option sollte bei Punkt Featuren nicht verwendet werden da diese keine Ausdehnung haben.

Bitte beachten

Das zommen kann in keinem Fall den bei der Kartenverwaltung eingestellten Minimum/Maximum Zoom Level über/unterschreiten.

Dialog

Im Register Dialog steuert das Öffnen des Formulars nach Auswahl eines Objektes aus dem Suchergebnis. Hierzu ist der Haken Show Open Dialog Button zu setzen. Bei Setzen des Hakens für Auto Open Dialog wird nach Ausführung der Suche automatisch das Formular geöffnet.

Im Feld Dialogname kann eine andere Tabelle angesprochen werden, die mit dem Geometrieobjekt allerdings verknüpft sein muss. Beispielhaft seien hier die Attribut-Objektklassen in den Utility-Modellen genannt - im Formular soll ja nicht die "neutrale" Geometrietabelle, sondern z.B. die Attribut-Objektklasse "Trafostation" geöffnet werden. Im Feld Dialog-Filter wird die Filterbedingung eingetragen, der Wert aus den { } wird dabei aus dem SELECT der Suche entnommen und muss in diesem SELECT mit angegeben sein.

Im Register Hyperlink können ein oder mehrere Links auf eine URL angegeben werden.
Je Link erscheint dann unter der Suche ein Knopf.
Wird der Knopf gedrückt dann wird eine vom Anwender spezifizierte Web Seite geöffnet.

Drücken Sie den "hinzufügen" Knopf und geben Sie bei "Label" einen beliebigen den Knopf Titel ein.

Bei "URL" geben Sie die URL der Webseite ein die Sie öffnen wollen.
Sie können Parameter in die URL einsetzen in dem Sie Feldnamen des letzten Abfrage Ergebnisses in geschweiften Klammern eingeben.

Die Feldwerte werden dann in die URL eingesetzt.

Beispiel:

https://www.schachtbauwerke.de?FidSchacht={FID}

Temporary Layers

Im Register Temporary Layers können temporäre WMS-Layer definiert werden, die atomatisch bei Ausführen der Suche eingeblendet werden. Weitere Erläuterungen finden Sie im Kapitel "Einbindung von dynamischen Kartenlayern".

Layer ein-/ausschalten

Hier können über die Suche gezielt Karten oder Layer ein- oder ausgeschaltet werden. D.h. bei Ausführen spezieller Suchen kann hierüber gewährleistet werden, dass entsprechende Karten oder Layern mit im Suchergebnis "ausgegeben" - konkret: dargestellt - werden.

Neu ab Version 23.2.28
Es wird nur noch auf eine "Ebenen Umschalter" Definition verwiesen.
Dadurch können nun Einstellungen wiederverwendet werden.

In älteren aufgesetzte Einstellungen werden vom System beim Versionsupdate in "Ebenen Umschalter" Definitionen umgewandelt. Diese sind bei den "Ebenen Umschalter" Definition am Namen "X_" plus "Name der Suche" plus "_Nummer" zu erkennen.

Gruppe

Die Suchen aus den Kategorien Standard und Schnell können thematischen Gruppen zugewiesen werden. Die Gruppe wird durch manuellen Eintrag in das Textfeld erstellt.

Suche aus Map 3D übernehmen

In Map3D erstellte Suchen können nach MapEdit Professional überführt und nach Durchführung nachfolgend beschriebener Anpassungen genutzt werden:

  • Im SELECT entspricht der erste Spaltenname dem in der Suche anzuzeigenden Attribut, als zweiter Spaltenname ist die FID anzugeben.
  • Übergabe des Ergebnisses aus übergeordneten Suchen nicht über die { }, sondern als {<Spaltenname>}
  • Per Pipe zusammengesetzte Attribute müssen mit dem Alias as ident versehen werden. Bsp.: select bezeichnung, gemeinde||land||regierungsbezirk||kreis||lage as ident from AX_LAGBEZKATALOGEINT
  • Für die Geometrie ist nicht die Spalte GEOM, sondern die eindeutige Spalte FID zu verwenden.

Nachfolgend ein Beispiel auf Basis des aktuellen MUM ALKIS-Datenmodells definiert im Infrastructure Administrator:

Aufbau der Objektsuche "Ort" im Infrastructure Administrator

map3d1-2-1024x374

Aufbau der Objektsuche "Strasse" im Infrastructure Administrator

map3d2-1-1024x433

Aufbau der Objektsuche "Hausnummer" im Infrastructure Administrator

map3d3-1-1024x346

Überführt nach AppBuilder

Suche 1 - Ort

Im MapEdit muss folgendes angepasst werden. Nach dem Select steht als erstes die Spalte, die in der Suche angezeigt werden soll, dann mit Komma getrennt die FID bzw. die eindeutige Spalte, auf die im Folgenden wieder gesucht wird:

Select  bezeichnung, schluesselgesamt from AX_gemeinde where schluesselgesamt in (select distinct(land||regierungsbezirk||kreis||gemeinde) from ax_lagebezeichnung ) order by bezeichnung 
Suche 2 - Straße

Im MapEdit funktioniert die Übergabe vom Ergebnis der übergeordneten Suche nicht mit der Zahl in { }, sondern hier muss der Spaltenname in die geschweifte Klammer geschrieben werden. Und da in der nächsten Stufe Bezug genommen wird auf gemeinde||land||regierungsbezirk||kreis||lage muss dieser Wert für MapEdit einen Alias bekommen – hier „as ident“.

select bezeichnung, gemeinde||land||regierungsbezirk||kreis||lage as ident from AX_LAGBEZKATALOGEINTG where substr(schluesselgesamt,1,8)={schluesselgesamt} order by bezeichnung
Suche 3 - Hausnummer

Die Übergabe der Straße erfolgt hier durch den Alias {Ident}.

select hausnummer, fid from AX_LAGBEZMITHNR  where fid_lagebezeichnung in (select fid from ax_lagebezeichnung where gemeinde||land||regierungsbezirk||kreis||lage = {ident}) order by hausnummer
Geometriespalte in MapEdit

MapEdit benötigt nicht die Spalte GEOM sondern die eindeutige Spalte aus der Tabelle der Hausnummern. Auch hier steht in den { } der Spaltenname und dieser Spaltenname muss in Suche 3 auch definiert sein.

select fid from ax_lagbezmithnr_tbl where fid_parent={FID}

Suche mit mehr als einem Objekt im Ergebnis

Ist mit der Ausgabe von mehreren Ergebnisdatensätzen pro Suche zu rechnen - z.B. in der Situation mehrerer vorhandener Hausanschlüsse pro Hausnummer - so ist die SELECT-Anweisung zu erweitern:

select fid from strassen where fid = {fid} and Name = '{Input}'
select fid from strassen where fid = {fid} and Name like '{Input}%'

Dialog-Auswahl bei Liste aus mehreren Tabellen

Will man eine Liste anzeigen die aus mehreren Tabellen kommt und will dazu den jeweils richtigen Dialog öffnen, muss man bei dem SQL für die Suche folgendes konfigurieren:

Beispiel:

select strname || '(Strassen)', fid, 'OSNAB.STRASSEN' as DIALOGNAME from STRASSEN where strname is not null
union select POINAME || '(Poi)', fid, 'OSNAB.POI' as DIALOGNAME from POI where poiname is not null

Erstes Feld ist der Anzeige Name, zweites Feld ist die FID (oder sonstige ID) und im dritten oder folgenden Feld definiert man den Dialognamen hier 'OSNAB.STRASSEN' also Datenbankverbindung PUNKT Tabellenname. Dann den MEHR Button drücken und im Register Hyperlink bei URL das hier eintragen:

OPENDIALOG {DIALOGNAME}, FID={FID}

Zur Laufzeit wird dann {DIALOGNAME} und {FID} durch das Ergebnis aus dem vorigen SQL ersetzt. Der Befehl ist OPENDIALOG Dialogname , Filter. (Das ist der gleiche Befehl wie bei den Tooltipps Hyperlinks wo es auch den OPENDIALOG-Befehl gibt)

Bei kaskadierender Suche

Wenn man eine kaskadierende Suche hat kann man auch in der Folgesuche den Tabellenamen (oder beliebigen Ausdruck) durch einen Parameter der vorigen Suche definieren.

Beispiel:

select strname || '(Strassen)', fid, 'STRASSEN' as MYTABLENAME from STRASSEN where strname is not null
union select POINAME || '(Poi)', fid, 'POI' as MYTABLENAME from POI where poiname is not null

im Kind-Select sieht der SQL(kaskadierendes SQL) dann folgendermaßen aus::

select fid,fid from {MYTABLENAME}

oder man kann den ganzen SQL definieren:

select strname || '(Strassen)', fid, 'fid,fid from STRASSEN' as MYSQL from STRASSEN where strname is not null
union select POINAME || '(Poi)', fid, 'fid,fid from POI' as MYSQL from POI where poiname is not null

im Kind-Select sieht der SQL (kaskadierendes SQL) dann folgendermaßen aus:

select {MYSQL}