APEX-Region "Karte" mit eigenen Karten verwenden
Erscheinungsmonat |
APEX-Version |
Datenbankversion |
September 2012 |
ab 4.0 |
ab 10.2 |
Seit der Version 4.0 bietet APEX den Diagrammtyp "Karte" an; dieser erlaubt die
sehr einfache Integration von Karten in eine APEX-Anwendung. Erzeugt man eine
neue Region vom Typ Karte, so bietet APEX eine Vielfalt von verfügbaren Karten an
(Abbildung 1).
Abbildung 1: Verfügbare Karten in einer Region vom Typ "Karte"
Deutschland findet sich unterhalb von Europe - die Karte Germany enthält
die Bundesländer, Germany (Second Level) enthält einige (nicht alle) Regierungsbezirke.
Abbildung 2: Für Deutschland verfügbare Karten in APEX 4.0
Nachdem man die üblichen Angaben zu Regionstitel und -Template gemacht hat,
wird im Bereich Query die SQL-Abfrage für die Kartendarstellung hinterlegt.
Die Karte ist dabei als Hintergrund zu verstehen; auf dieser werden die
Daten der SQL-Abfrage visualisiert. Es empfiehlt sich, die Links
Map Query Example und Map Reference Information aufzuklappen (Abbildung 3).
Abbildung 3: SQL Abfrage zur Region vom Typ Karte hinterlegen
Um Daten auf der Karte zu visualisieren, braucht es keine Koordinaten wie
Längen- und Breitengrade. Vielmehr wird die Abfrage wie eine typische
APEX Diagrammabfrage aufgebaut. Es müssen drei Spalten zurückgeliefert werden:
LINK, LABEL und VALUE. Die Visualisierung auf der Karte findet nun allein
über die Ergebnisspalte LABEL statt. Diese wird mit dem REGION_NAME aus
der MapReference Information zusammengebracht - und das entsprechende Gebiet
auf der Karte wird dann - je nach dem Inhalt der VALUE-Spalte - eingefärbt.
Hinterlegen Sie für die Karte Germany (Second Level) also folgende SQL-Abfrage
Speichern Sie alles ab und starten Sie die Seite. Die Karte sollte etwa wie
in Abbildung 4 aussehen ...
Abbildung 4: Deutschlandkarte (Second Level) in APEX
Diese Karte ist nicht wirklich zufriedenstellend. Für einige
Bundesländer sind Regierungsbezirke enthalten; für andere jedoch
nicht und das Land Brandenburg fehlt völlig. Nimmt man stattdessen die
Karte Germany, so wird mit den Namen der Bundesländer gearbeitet, was
in manchen Fällen sicherlich ausreicht, in vielen Fällen jedoch
zu wenig ist.
Wenn Sie mit Hilfe dieses Community-Tipps eigenes Kartenmaterial verwenden, achten Sie darauf, dass die Karten nicht
zu umfangreich sind. AnyChart lädt die ganze Karte in den Hauptspeicher des Browsers;
enthält diese zuviele Details (ein Test wurde bspw. mit den PLZ-Gebieten in Deutschland gemacht; das Shapefile hierfür ist ca. 13MB groß), so reagiert der Browser beim Bewegen der Karte recht
träge. Die AnyChart-Kartenkomponente ist nur für einfache Visualisierungsaufgaben
geeignet; für komplexere Aufgaben sollte man den ebenfalls in einigen Community Tipps
näher erläuterten Weg mit Oracle Locator / Spatial und Oracle Maps wählen. Am Ende dieses Tipps finden Sie entsprechende Links.
Zum Glück ist es möglich, hier eigene Karten einzubinden und
zu verwenden. Als Beispiel verwenden wir die Stadtteile von
Köln, die von der Stadt Köln unter einer Creative Commons Lizenz zum
freien Download
bereitgestellt werden. Sie können diese Daten also frei verwenden und nutzen.
Laden Sie das ZIP-Archiv herunter und packen Sie
es aus. Sie sollten darin folgende Dateien vorfinden.
Sie haben ein sog. ESRI Shapefile vor sich, eine sehr gängiges
Dateiformat für den Austausch von Geodaten. Solche Shapedateien sind
der Ausgangspunkt für eigene Karten in APEX. Als nächstes muss die Shapedatei
in ein AnyChart-Format (AMAP-Datei) umgewandelt werden. Hierzu stellt AnyChart
ein kostenloses Werkzeug, den AnyChart Map Converter, bereit.
Laden Sie diesen
von der AnyChart Webseite herunter und installieren Sie
das Programm auf Ihrem Rechner. AnyChart stellt auch ein sehr ausführliches
Tutorial zum Umgang mit dem Converter bereit. Darin
sind auch die Eigenschaften und Inhalte der AMAP-Dateien erklärt.
Abbildung 5: Tutorial für den AnyChart Map Converter
Das Tutorial enthält im Abschnitt Input SHP Requirements einige wertvolle Hinweise,
wie die Shapedateien beschaffen sein müssen, damit sie in AMAP-Dateien umgewandelt
werden können:
- Die Datei muss Polygone, also geschlossene Flächen beinhalten. Ein Shapefile voller
Punkte ist also nutzlos.
- Das Shapefile darf keine projizierten Daten beinhalten - oder anders gesagt: Das Shapefile
muss die Daten in Längen- und Breitengraden (Koordinatensystem WGS84) enthalten. In
der Praxis ist das recht häufig der Fall, aber eben nicht immer. Und auch die
Stadtteile von Köln stellen uns hier zunächst vor ein Problem - denn diese liegen
in der Projektion ETRS 1989 / UTM Zone 32N vor.
Wir können die Shapedatei also nicht direkt verwenden, sondern müssen Sie zunächst
umwandeln - und zwar von ETRS89 / UTM Zone 32N nach WGS84. Wie das geht, ist im
AnyChart Tutorial ebenfalls beschrieben - das angehängte Reprojection Tutorial
beschreibt die Vorgehensweise mit Hilfe eines freien, kostenlosen Werkzeugs - stellen
Sie jedoch sicher, dass Sie beim Download des MapWindow-Werkzeugs wirklich die Version 4.6 (und keine neuere) nehmen.
AnyChart Map Converter: Reprojection Tutorial
Nachdem Sie die Shapedatei ins Koordinatensystem WGS84 gebracht oder eine
bereits in Längen- und Breitengraden vorliegende Shapedatei beschafft haben, starten
Sie dan AnyChart Map Converter - er sollte wie in Abbildung 6
aussehen.
Abbildung 6: AnyChart Map Converter
Öffnen Sie nun das Shapefile, in dem Sie zunächst auf File und dann
auf Load Shapefile klicken. Wählen Sie dann die Datei mit der Endung
.shp aus. Die anderen Dateien sind aber ebenso wichtig (nicht löschen), denn auch diese
werden im Hintergrund geöffnet und ausgelesen (Abbildung 7).
Abbildung 7: Die Stadtgebiete von Köln im AnyChart Map Converter
Stellen Sie die Auswahlliste unter Group Polygons By Column auf NAME
um. Daraufhin sehen Sie anstelle von IDs die Stadtteilnamen. Danach
klicken Sie rechts unten auf Save AMAP File und speichern die AMAP-Datei
auf Ihrer Festplatte ab.
Nun muss die AMAP-Datei für die in APEX eingebettete AnyChart Engine verfügbar
gemacht werden. Leider kann sie nicht bei den Gemeinsamen Komponenten unter
Dateien abgelegt werden - Sie muss unterhalb des Webserver-Pfades /i/
und dort unterhalb von flashchart/swf/maps zum Download bereitstehen (Abbildung 8). Es ist also Arbeit am Webserver nötig.
Abbildung 8: Die AMAP-Datei muss zu den anderen Dateien unterhalb von /i/ gebracht werden
Je nach
verwendetem Webserver ist die Vorgehensweise also unterschiedlich:
Wenn Sie
den Apache Webserver mit mod_plsql verwenden, müssen Sie die amap-Datei
einfach nur ins Verzeichnis $APEX_HOME/images/flashcharts/swf/maps kopieren. Wenn
Sie das PL/SQL Embedded Gateway verwenden, muss die Datei ins XML DB Repository
übernommen werden. Hierzu kann der datenbankeigene FTP-Server verwendet werden.
Dieser muss aber vorher als SYS mit
DBMS_XDB.SETFTPPORT(2100) aktiviert werden ...
Navigieren Sie nun zum vorhin erzeugten Chart und wandeln Sie die
SQL-Abfrage so um, dass sie zu den Stadtteilen von Köln passt.
Navigieren Sie dann zu den Diagrammattributen und dort zum Bereich
Custom XML. Stellen Sie ein, dass Custom XML verwendet werden soll, denn
die Verwendung Ihrer neuen Karte müssen Sie im XML-Dokument einstellen;
in den APEX-Auswahllisten erscheint sie nicht (Abbildung 9).
Abbildung 9: Die Karte wird per "Custom XML" eingerichtet
Navigieren Sie im XML-Dokument dann zum in Abbildung 10 gezeigten Bereich und
nehmen Sie mindestens die folgenden vier Änderungen vor.
Abbildung 10: Das XML-Dokument muss angepasst werden, damit die Karte von Köln verwendet wird
- Tragen Sie den Namen der AMAP-Datei ins Attribut source des Tags map_series ein. Tragen Sie
ihn relativ zum Verzeichnis $APEX_HOME/images/flashcharts/swf/maps ein. Wenn Sie die
Datei also ins Verzeichnis europe gelegt haben, müssen Sie europe/stadtteile-koeln.amap eintragen.
- Tragen Sie die Spalte mit den Stadtteilnamen, die Sie im AnyChart Map Converter eingestellt hatten (NAME) ins Attribut ID_COLUMN ein.
- Ändern Sie schließlich innerhalb des Tags format, welches sich innerhalb von tooltip_settings und label_settings befindet, etwaige Vorkommen von %value1 nach %Value - achten Sie dabei auf Groß- und Kleinschreibung. Anders ausgedrückt: Stellen Sie sicher, dass %Value immer mit großem "V" hinterlegt ist und dass keine Zahl anhängt - wie in Abbildung 10.
Sie können das XML natürlich auch noch weiter ändern. Beschreibungen der Tags und Attribute sowie
deren Bedeutung, finden Sie in der AnyChart Dokumentation. Damit lässt sich die Karte beliebig anpassen.
Speichern Sie danach die Änderungen ab und starten Sie die Seite. Da Sie die
SQL-Abfrage ja bereits geändert haben, sieht die Karte nun wie folgt aus (Abbildung 11).
Abbildung 11: Die neue Karte mit den Stadtteilen von Köln
Das war zwar etwas Aufwand, aber die in APEX eigebaute Kartenfunktion konnte
um eine ganz spezielle Karte (hier: für Köln) erweitert werden. Und diese
Erweiterungen dürften in der Praxis häufig vonnöten sein, denn die
im Lieferumfang enthaltenen Karten sind wahrscheinlich nicht ausreichend.
Generell ist diese Art der Kartendarstellung jedoch nur für einfache Visualisierungen
geeignet. Sobald man mit "richtigen" Koordinaten arbeiten und ggfs. sogar
räumliche Operationen auf den Daten direkt durchführen möchte, kommt man an der
Arbeit mit Geodaten nicht mehr vorbei. In der APEX Community sind auch dazu einige
Tipps vorhanden, die zwar schon etwas älter, aber immer noch aktuell und funktionstüchtig
sind - schauen Sie mal rein.
Zurück zur Community-Seite
|