23 January 2007

SQL-Developer 1.0.1557 mit Georaptor extension


Entwickelt für den "Raptor" - die Entwicklungsversion des SQL-Developers - gibt es den "GEORAPTOR" (daher der Name). Der GEORAPTOR läuft allerdings nur mit der SQL-Developer Version 1.0.1557 und nicht mehr mit der aktuellen Version 1.0.2093 (;-(.
[UPDATE: 13.02.07: siehe letzten Absatz/pls see last paragraph!]
Infos von Matic Petek über den "Georaptor" hier: http://mygeoraptor.googlepages.com/
Über das Update-center (bei Help) des SQL-Developers kann man die Extension installieren und hat eine recht komfortable Kartendarstellung aller "Themes" (Ebenen) , die in Oracle Spatial gespeichert sind. Speziell zum Erlernen und Prüfen der Oracle Syntax für den Datentyp SDO_GEOMETRY und auch Oracle (Abfrage-) Funktionen ist es sehr hilfreich. Man kann die Layer/Themes der Karte hinzufügen, rin-/rauszoomen, verschieben, ein Rechteck markieren und dorthin zoomen und über den "Identify-Mode" (erst auf den Name des Themes klicken, dann auf "I") ein Objekt anklicken und die Daten zum Objekt unterhalb der Karte angezeigt bekommen
A) im "Attribute Data" - Mode oder
B) Geometry Data - Mode angezeigt bekommen.

Editieren kann man mit dem GEORAPTOR nicht. Hier kannst Du die alte SQL-Developer Version 1.0.0.15.57 runterladen. Ich konnte die Oracle Projektmanagerin Sue Harper davon überzeugen, nochmal in den SourceCode einzusteigen und den Georaptor für die aktuelle Version zum Laufen zu bringen. Schaun wir mal.

Zumindest "a great Thank You" - ein großes Dankeschön - an Matic Petek für die Entwicklung dieser tollen GEORAPTOR Extension ! Matic hat scheinbar momentan keine Zeit für sein Projekt und konnte noch keine Anpassung oder neue Version für den neuen SQL-Developer bereitstellen. Ich konnte ihn auch nicht über sein (alte) E-Mail Adresse erreichen.
Schaun wir mal !!

UPDATE: Neue Version für SQL Developer 11g (28.01.2010).

10 January 2007

Mapviewer installieren und in APEX integrieren - "How To ?"

Eine Kurzanleitung

Mapviewer installieren:
(Englische Version als PDF)
Deutsche Beschreibung:
1. Du gehst auf die Oracle AS Mapviewer/Software Download Seite.
2. Downloade für die aktuelle Version 10.1.3.1 die folgende Software runter:
3. MapViewer Quickstart kit—The MapViewer Quickstart kit includes a ready-to-run standalone OC4J with MapViewer 10.1.3.1 pre-deployed and configured (Zip - 89.6MB)
4. Demo Data Set—A MapViewer demo dataset (MVDEMO) specifically prepared for this release (Zip - 4.3MB)
5 View/Download the Users Guide—An updated PDF version of the MapViewer User's Guide (4.9MB)
6. Readme (Text)
Optional: Map Builder kit—The new Map Builder desktop application (um Themes/Layer zu editieren)

Vereinfacht geht es dann so weiter:

Step 1:
Voraussetzung ist natürlich eine Oracle Datenbank (möglichst 10g oder 9i) mit der Spatial Funktionalität installiert hast. Du kannst das wie folgt überprüfen :

SQL> SELECT COMP_NAME, STATUS FROM DBA_REGISTRY
WHERE COMP_NAME = 'Spatial';

COMP_NAME STATUS
----------------------------- -----------
Spatial VALID

Zum Installieren verfahre wie folgt:
SQL> connect SYS as SYSDBA
SQL> @?/md/admin/mdinst.sql

Step 2:
Das "MVDEMO" Demo Dataset (siehe 4.) auspacken und gemäß Readme.txt über SQL-Plus in die Datenbank installieren. Es werden dann Demodaten in Form von Tabellen, Karten und Layern, Themes, Base_maps usw. angelegt und indiziert; sprich die Funktionalitäten des Spatial Schemas MDSYS für die Daten nutzbar gemacht.

Step 3:
Den Mapviewer Quickstart Kit auspacken und (man braucht dazu Java SDK 1.5 wird auch JDK 5 genannt), den Pfad in der Start.bat oder Start.sh anpassen, dass es in etwa so aussieht und
-------------------------------------
C:
cd C:\mv10131_qs\oc4j\j2ee\home
java -server -Xmx384M -jar oc4j.jar
-------------------------------------
(start.bat oder start.sh - Startdatei für den Oracle Application Server)

Step4:
den OC4J (Oracle Containers for Java, die J2EE Version des Oracle Application Servers) starten (Doppelklick auf die "start.bat" und obige Datei wird gestartet)

Step5:
Aufruf des Mapviewer mittels:
http://localhost:8888/mapviewer oder gleich:
http://localhost:8888/mapviewer/faces/home.jspx
Jetzt landest Du im "kleinen Enterprise Manager" (EM) des AS Mapviewers.
Unten auf der Seite siehst Du dann auch den Link zu Oracle Maps Tutorial.

Step6:
Schau Dir zunächst mal das 3. Kapitel Demo Setup an und gehe die Steps durch.
die 1. haben wir oben mit dem Import des Demo Datasets MVDEMO schon erledigt. In der Regel mußt Du das MVDEMO Schema nicht "droppen" , da Du es ja wahrscheinlich gerade erst eben mit den Demodaten angelegt hast.
Dann folgt 2. : Es muß über den ADMIN Teil (oben rechts Button im EM) eine Datasource angelegt werden (Verbindung vom Application Server OC4J zur Datenbank).
Das Einloggen geschieht mit (normalerweise) oc4jadmin/oc4jadmin.
Und Du mußt das Skript "mcsdefinition.sql" erwähnt in 3.) laufen lassen.
Dann kannst Du über "Running the Demos" Dir die ersten Karten ansehen. Na hoffentlich! Glückwunsch !

Step 7:
Im Oracle Maps Tutorial findest Du im Inhaltsverzeichnis oben links: Getting Started.
Hier werden die 3 Schritte zum Bau eines Oracle Maps API beschrieben:
The essential steps to building any Oracle Maps application or mashup using the JavaScript API are:
(1) Loading the Oracle Maps JavaScript library in the beginning of a web page
(2) Placing an HTML DIV component that serves as the master map container on the page
(3) Writing custom JavaScript code to set up initial map contents (base-map, FOI layers, etc) and implement application specific logic.

Wo kommt das in APEX nun hin ? Berechtigte Frage.

Oracle Maps in APEX integrieren:

Step 1 - laden der Oracle Maps Javascript library am Seitenanfang
Wir legen eine neue Anwendung in APEX mit einer leeren Seite und ohne Authentication an (empfehle ich).
Zu (1) - Wir rufen die Seite auf und gehen bei "Page Rendering"/"Seitenwiedergabe" auf Page/Seite und in dem Kasten oben rechts auf das Icon "Page Attributes/Seiten Eigenschaften.
Dort gehen wir zum HTML Header und kopieren den unter Step 1 und Step 3 (des Tutorials) erwähnten Quellcode hinein.
Also die Zeile:

'<'script language="Javascript" src="/mapviewer/fsmc/jslib/oraclemaps.js"'>'<'/script'>'

und den großen Block unter Step 3. (nur den großen Block!.)
Bei Anzeigeattribute und "Cursor Focus" muß ausgewählt sein: "Cursor nicht als Focus"
Als (vor-) letztes gehen wir auf der APEX Seite unterhalb des "HTML Header" zu "Beim Laden"/"On Load" und kopieren die untere Zeile


'<'body onLoad="javascript:showMap();"'>'
dort hinein.
Das Javascript von Oracle Maps wird nun zu Beginn der Seite immer aufgerufen.

Step 2 - Anzeige der Karte in einer Region:
Wohin soll aber die Karte kommen ?
Dafür richten wir eine Region ein vom Typ HTML und kopieren den Quellcode von Step 2 in "Quelle"/"Sources" wie folgt:

'<'div id="map" style="left:1%; top:1%; width:99%; height:99%"'>'<'/div'>'
d.h. ein sogen. DIV Container namens "map" nimmt die Ergebnisse auf und stellt sie dar, die das Javascript und der Mapviewer beim Aufbau der Seite zusammenspoolen;
die Seite ist (fast) fertig.
Eine kleine Anpassung müssen wir noch vornehmen:
Im HTML Header bei den Seitenattributen heisst es ja:


src="/mapviewer/fsmc/jslib/oraclemaps.js


und das müssen wir abändern in:


"src="#IMAGE_PREFIX#javascript/oraclemaps.js"

Das macht aber natürlich nur Sinn, wenn wir die "oraclemaps.js" auch in das Verzeichnis der APEX images unter javascript



...??\?htmldb?\images\javascript

kopiert haben.
Dazu mußt Du bitte in das Verzeichnis des ausgepackten OC4J (Application Server) gehen und nach der Datei "oraclemaps.js" suchen.
Sie sollte in:


..??\oc4j\j2ee\home\applications\mapviewer\web\fsmc\jslib

liegen und muß nach



..??\?htmldb?\images\javascript
kopiert werden.

Ein allerletzter Schritt - das war es dann auch, ehrlich! -

Da APEX ja auch Javascript benutzt, welches in APEX liegt und der Mapviewer auch Javascript nutzt und ein "Cross-Scripting" APEX und der OC4J nicht erlauben, müssen wir dem Apache/http server dies nun noch beibringen:
Wir gehen in die "httpd.conf" in:

...??\htmldb\Apache\Apache\conf

und ergänzen in der Section:


#
# Proxy Server directives. Uncomment the following lines to
# enable the proxy server:
#
ProxyRequests On
ProxyPass /mapviewer/ http://localhost:8888/mapviewer/
ProxyPassReverse /mapviewer/ http://localhost:8888/mapviewer/
NoCache *
#
#


F E R T I G ! ! ! !
Jetzt sollte es laufen. Zumindest schonmal mit einer Karte in APEX.
Wenn Du das Oracle Maps Tutorial nochmal studierst, wirst Du sehen, wie einfach es ist, die Karte um zusätzlich "Features" zu ergänzen oder eine andere als die Demo-Karte anzuzeigen.
Falls die Anleitung noch etwas holperig sein sollte, laß es mich bitte wissen, damit ich sie verbessern kann.
Viel Spaß damit - es lohnt sich.