29 November 2011

ADF mit Karte und Tabelle selektierter FOIs

Ein weiterer Schritt des typischen GIS "Verschneidens" soll hier dokumentiert werden -
mit dem aktuellen Mapviewer 11g PS3 bzw. Oracle Maps und JDeveloper 11.2.
Ich nutze dazu die ADF DVT (Data Visualisation Technology) im JDeveloper
Abb. 3 - "Verschneiden" (in Oracle Spatial: SDO_Relate) - Karte und Ergebnistabelle

Im Gegensatz zu meinem letzten BLOG Eintrag wollen wir jetzt die Getränkemärkte mit dem Redline Tool "Circle" oder "Rectangle" selektieren/verschneiden und entsprechend rechts daneben in der Tabelle die Namen und Umsätze darstellen....

Hier die Variante ohne lokale/eigene Mapviewer Installation und ohne Oracle Spatial... (;-) - ich nutze Addressdaten aus einer Tabelle und lasse den Oracle-Geocoder die Geokoordinaten "on-the-fly" berechnen.

Neben dem ausführlichen Viewlet (folgt) hier die Kurzform:

1. New "Fusion Web Application"
2. model -- New "ADF Business Components for tables"
3. Connection zur DB, Tabelle mit Addressdaten ist ausreichend... - Query - Tabelle selektieren
4. Seite: ViewController -- New Webtier - JSF Page - Format 2-spaltig / verticale Anordnung
5. Karte: Von rechts "Compoment Pallette" und ADV Data Visualisations -- Map -- Geographic map auf das linke facelet ziehen
6. Connection zum Mapviewer definieren
6.1 Mapviewer url: http://elocation.oracle.com/mapviewer und zum
6.2 Geocoder url: Geocoder url: http://elocation.oracle.com/geocoder/gcserver
Info: der Geocoder auf dem Oracle elocation server errechnet uns "on the fly" die Geokoordinaten..!! cool !
7. In Karte reinzoomen und Zentrum auf Deutschland setzen (Doppelklick in DE)
8. Toolbar: Aus Component Palette und "Map" den Toolbar über die Karte ziehen - optional im "Structure Pane" (links) oberhalb der "map"  loslassen - Map ID bestätigen (default ist m1, falls nicht umbenannt).
9. PointTheme/Layer erstellen: Aus "DataControls" das ViewObjekt anklicken und auf die Karte ziehen - PointMapTheme selektieren und im Wizard bei Location: "Address" anklicken und Variante "international address" mit "Street, city, location, zip" auswählen und folgend die Spalten aus der Tabelle (ViewObject) zuweisen. Bei "Point Data" den z.B. numerischen Umsatz-Wert selektieren und einen Namen wie "Umsatz" benennen. Wichtig: Checkbox "Enable Row Selection" LEER lassen! Ja !!! Dies muss jetzt ausprogrammiert werden über eine Managed Bean (s.u.)   
9. Tabelle: neben die Karte in das 2. Facelet eine "leere" Tabelle aus ADF Faces Components - Data Views - Table - ziehen
10. Im Table Wizard nur eine Column stehen lassen und "row.col1" in "row" in den geschweiften Klammern umbennnen. OK
11. Finetuning, Binding, SelctionListener, PartialTrigger
MapPointTheme im Structure Pane selektieren und im Properties Window bei "Behaviour" -- Selection Listener -- edit (ganz rechts) - New: Managed Bean erstellen namens "ShopSelectionBean" und Class (Neu) - Name egal - und jeweils anpassen
12. Managed Bean ausprogrammieren: d.h.: vorgenerierten Code mit Beispiel Code (siehe unten) per copy und Paste ersetzen. Wie ? Im Application explorer "ShopSelectionBean.java" öffnen...
13. Table anpassen in Properties Window: Value: Edit - Binding: managedBean -- Session -- ProcessSelection
14. Behaviours: PartialTriggers "::m1" setzen bzw. über Edit selektieren
... das sollte es sein...

Hier der Code für die Managed Bean: ShopSelectionBean: 

27 October 2011

ADF hilft Fusion Bottle & Co Getränkemärkte gegen Freibier

Mein Vortrag von der DOAG Konferenz 2011:

Karten in Java Anwendungen einbinden -  ADF und Oracle Maps

Herausforderung:
"Fusion Bottle & Co" will expandieren... wo sollen die nächsten Getränkemärkte gebaut werden?
Wir wollen das Management der Firma bei der Entscheidung durch aussagekräftiges Kartenmaterial und Marktdaten unterstützen.

Umsetzung:
Ziel soll es sein, mittels JDeveloper und ADF eine Karte in die Anwendung zu zaubern, die auf Oracle Spatial bzw. Oracle Mapviewer/Oracle Maps basiert. Ich werde Marktdaten der GfK Marketing zu Hilfe nehmen. Wir wollen die Bier-/ Wein-Konsumdaten bzw. die dahinter steckende Kaufkraft in Deutschland im Verhältnis zur Bevölkerung bzw. Bevölkerungsdichte anschauen können..., um zu entscheiden, wo wir für Fusion Bottle & Co noch einen Getränkemarkt hinbauen sollten - und endlich unser Freibier bekommen...(;-).

So wird das Ergebnis aussehen:
















1. Welche Komponenten brauchen wir?
- Oracle Datenbank (10g, 11g)
- Oracle Mapviewer, Mapbuilder (optional)
- Oracle Weblogic Server oder Oracle AS (OC4J) mit Quickstart Kit
- Kartendaten bzw. demografische Daten (hier: von GFK Marketing)
- JDeveloper 11g

2. Vorgehensweise

Step 1: Zunächst installiere ich eine Oracle Datenbank 11g - Editon egal, XE tut es auch.

Step 2: Danach besorge ich mir Karten und Marktforschungsdaten von GfK Marketing.

Step 3:
Danach importiere ich die GFK Marketing Demodaten mittels "Load_DE_2010.sql" und gemäß des ReadME.txt

Step 4: Mapviewer - ich download
e den aktuellen Mapviewer, Mapbuilder und das Mapviewer Quickstart Kit (OC4J inkl. Mapviewer installiert) - benötigt wird noch ein aktuelles JDK - recommended JDK 6.

Step 5: Mapviewer Quickstart-Kit
unzippen und mittels start.bat oder start.sh starten, nachdem die Verzeichnisstruktur im start-Batchfile angepasst wurde.
Während des Startvorgangs werden wir aufgefordert, für den Standart-Administrator "OC4JAdmin" ein Passwort zu vergeben.(z.B. Oracle 123).., welches wir uns bitte merken (aufschreiben!!!(;-)

Step 6: Mapviewer konfigurieren
- um das in der Datenbank liegende Kartenmaterial nutzen zu können, muss die Datenbank Connection angepasst werden.
Dazu rufen wir den Mapviewer im Browser auf:
http://localhost:8888/mapviewer (wir werden weitergeleitet zur Startseite).
Auf der Mapviewer Startseite klicken wir oben rechts den Link "ADMIN" und gelangen auf die Login-Seite: User: OC4JAdmin, Passwort: Oracle 123
Linker Hand im Menue: Manage Mapviewer klicken wir auf "Configuration".
Hier erscheint ein Editor für die "mapViewerConfig.xml" - wir scrollen bis zum Ende nach unten...
Dort finden sich die permanenten Einträge für die DB connections:
(möglicherweise auskommentiert - als bitte "scharf schalten" und <--- bzw. --> rausnehmen.

<map_data_source name="MVDEMO"
jdbc_host="localhost"
jdbc_sid="xe"
jdbc_port="1521"
jdbc_user="mvdemo"
jdbc_password="BBZwqpVvIIOAUp6UlVxgBQdri7Z6VvtW"
jdbc_mode="thin"
number_of_mappers="3"
allow_jdbc_theme_based_foi="true"
/>
Wir kopieren uns am Besten diesen Block und passen ihn an wie folgt:

<map_data_source name="GFK-Daten"
jdbc_host="localhost"
jdbc_sid="xe"
jdbc_port="1521"
jdbc_user="GFK"
jdbc_password="!gfk"
jdbc_mode="thin"
number_of_mappers="3"
allow_jdbc_theme_based_foi="true"
/>

Dann unten: Save & Restart klicken - eine positive Bestätigung sollte oben auf der Seite erscheinen.

Tipp zum Quickstart-Kit: Sollte im nächsten Schritt keine Verbindung zur DB angezeigt werden, bitte Passwort überprüfen/anpassen. Es sind nur "kleingeschriebene" Passwörter zulässig im Quickstart-Kit 10g. - oder Treiber aktualisieren - aber Passwort anpassen auf SQL Ebene geht schneller (SQL-Plus: connect as SYS as SYSDBA, dann
SQL-plus>alter user gfk identified by gfk; ) - bei mir war der GFK Account (=Schema) "gelockt"... dann:
SQL-plus>alter user gfk identified by gfk account unlock;

Wenn wir dann auf "Datasources" klicken erscheinen die Datasources und "GFK-Daten" sollte dabeisein:


Step 7: GFK-Germany Basemap erzeugen
Wir gehen im Mapviewer Admin Menue zu: Manage Map Tile Layers und klicken links Create --> Internal (eine interne, auf unserem Server liegende Karte ; external wäre: WebMapService) --> Continue -->
Name: GfK-Germany
Datasource: GFK
Base-Map: Germany
- alle anderen default Werte können wir so übernehmen; fertig ist die Karte im Mapviewer.
Zum Überprüfen: Wiede im Menue: Manager Map Tile Layer links Manage anklicken.
In der Übersicht erscheint unsere GfK-Germany Karte
--> Checkbox selektieren --> View Map - manage Tiles anklicken.

Es erscheint das Karten Test UI - die Karte erscheint, nachdem wir den Button Show Map anklicken und 2x Doppelklick auf die Karten (zum Vergrössern):


Die Basemap zur Nutzung in ADF/JDeveloper ist fertig.

Step 8 - Anwendung erstellen:


Nach dem JDeveloper Download starten wir den JDeveloper 11g (11.1...)


1. Application anlegen vom Typ: Fusion Web App - Name: FusionMapApp --> alles default --> Finish



Entity Objekte erstellen (Verbindung zu Tabellen/DB):



2. --> "model" --> New --> "Business Tier" --> "ADf Bus. Components" --> "Business Components from Tables"



3. Connection zu DB (XE) User/Passwort gfk/gfk



4. DE_COUNTIES2010 als Tabelle für "Entity Object" und "View Objekt" nutzen



Seite erstellen:



5. --> Viewcontroller --> New --> Webtier --> JSF/Facelets --> Page --> Name anpassen --> Quickstart Layout --> Browse

--> Two Columns --> Layout mit 2 übereinanderliegenden Regionen auswählen.



Karte einbinden:



6. Karte auf "First" (obere Region) ziehen: --> Component Palette --> "ADF Data Visualizations" auswählen --> Map

--> "Geographic Map" auf "first"(obere)-Region ziehen.



7. Karten-Wizard: Name eingeben: "Mapviewer" - url für Mapviewer eingeben (standard: http://localhost:8888/mapviewer)

7a. Mapviewer starten

7b. Authentication: "Basic" auswählen - user: gfk - pwasswort: gfk (muss natürlich mit dem Schema korrespondieren)

7c. Connection Testen : Success! --> OK

7d. "BaseMap" auswählen und durch Doppelklick positionieren bzw. Zoom Level (Schieberegler) einstellen --> OK



8. Layer auf der Karte einbinden: --> "DataControls" (refresh!) --> DECOUNTIES2010View1 auswählen und auf Karte ziehen.

8a. Start "Layer Wizard" --> Layer/Theme Typ "Color Theme" auswählen

8b. ThemeID: (sieht der User!) Name: "Kaufkraft Bier in Euro p/Person" --> Map Theme --> Name: DECounties2010 auswählen

--> Location Column: Name Ascii

--> Appearance/Buckets: Werte übernehmen

--> Data: Location "Name Ascii"

---------> Location Label: "Name Ascii"

---------> Location Value: "Nr0122e"

---------> Location Data Label: "Kaufkraft Bier"

Wichtig! --> (x) "Enable Row Selection" anklicken !

--> OK - Layer fertig (sieht man auf Karte nicht - nur im Structure Pane unter "map" (links unten)



9. Details synchron zum Layer in unterer Region anzeigen:

--> DataControls --> DECOUNTIES2010View1 auf die untere (second facelet) ziehen

aus dem Kontext Menü "Create" auswählen: "Form" --> dann: "ADF Read-Only Form"

Der Form Layout Wizard startet --> nur 2 Spalten des Entity Objekts auswählen: "NameAscii" und "Nr.0122e" -

die anderen Spalten löschen --> OK

9a. (optional) Label "Nr.0122e" anklicken und im Property Inspector (rechts unten)

bei "Common" --> Label: umbenennen in: "Kaufkraft für Bier pro Person in Euro:"


Ergebnis im JDeveloper 11g:




















10. Anwendung testen: mit rechte Maustaste auf die Seite klicken --> Kontextmenü --> Run (grüner Pfeil)

Falls der Weblogic Server noch nicht gestartet wurde, startet er jetzt und "deployed" die Anwendung

optional: unten Tab "Deployment" anklicken und Fortschritt beobachten.

wenn Anwendung fertig deployed, öffnet der Default Browser mit der Anwendung - oder man klickt auf den angebotenen Link.



11. Beim Klicken auf die Regionen in der Karte, sollten "Name" und "Nr122e" (Kaufkraft Bier) synchron angezeigt werden.

Edit 28.11.2011:
Ich habe ein kommentiertes Viewlet erstellt zur besseren Illustration und Erklärung der Architektur.




07 September 2011

Oracle Maps und Spatial mit ADF - How To presentation auf DOAG Konferenz 15.-17. Nov. 2011

Auf der diesjährigen DOAG Konferenz (15.-17.11.11 in Nürnberg) werde ich einen Vortrag halten zum Thema "Oracle Maps (Spatial) - Karten in Java Anwendungen: How to... (ADF)" (am 3. Tag - 14h) schaut gerne vorbei !

Im "Abstract" habe ich in der Einleitung geschrieben:

Daten-Visualisierungs-Komponenten (Grafiken, Karten) können mittels ADF im JDeveloper 11g bereits
mit wenigen Mausklicks eingebunden werden.
Wie das speziell mit geografischen Karten basierend auf der Spatial Technologie und Oracle Maps
funktioniert, soll in diesem Beitrag vorgestellt werden.
Die beispielhafte Darstellung von Marketing Daten wird den Vortrag abrunden wie: Kaufkraft,
Einwohnerdichte, Konsumenten pro Region.

Das Ergebnis sieht so aus (kleiner Vorgeschmack):



Für diejenigen, "die arbeiten müssen" (;-(, werde ich eine Nachlese des How To's hier veröffentlichen...

Zum Thema "Die Konferenz rockt" gibt es übrigens auf der DOAG Party coole Acts!


Die DOAG schreibt: Am Mittwoch, 16. November 2011, sorgen Rolf Stahlhofen und Freunde für einen unvergesslichen Abendevent. Der frühere Frontmann der Söhne Mannheims präsentiert ein musikalisches Programm, das keine Wünsche übrig lässt und sorgt mit PopSoul, Funk-und Rockeinflüssen für beste Stimmung. An seiner Seite sind dieses Jahr der Entertainer Max Mutzke sowie die ehemalige Gesangspartnerin von Mousse T. Emma Lanford zu hören.

18 August 2011

Messstellen-Verwaltung in der Wasserwirtschaft

Das Landesamt für Umwelt, Wasserwirtschaft und Gewerbeaufsicht Rheinland-Pfalz in Mainz, Deutschland (www.luwg.rlp.de) hat bereits im letzten Jahr eine Anwendung für eine kartengestützten Messstellen-Verwaltung in Dienst genommen (AKSMS.web – Zentrales Auskunftssystem für unterschiedlichste Anforderungen) - es wurde mit großer Unterstützung des Oracle Partners GDV entwickelt:



Es kamen APEX und Oracle Maps zum Einsatz.



Eine ausführliche Beschreibung als "Case Study" wurde dazu auf Oracle.com veröffentlicht.
Wer näheres erfahren möchte, lese bitte obigen Artikel.





12 August 2011

Aus Länge/Breite mache SDO_GEOMETRY

Immer wieder mal angefragt und bei LJ gefunden:

Ich halte derzeitig die Lokationen (von Kunden, Lagerhäusern, etc.) in einer Tabelle in 2 separaten Spalten: Länge und Breite - nun möchte ich diese aber "Spatial adequat" nutzen und in meiner SDO_GEOMETRY Spalte haben.
So geht es - beschrieben von LJ Qian, dem Chefentwickler von Oracle Maps. Danke LJ! (auch wenn er deutsch nicht versteht! (;-) )
Ich hoffe es hilft dem einen oder anderen . Viel Spass damit!

20 June 2011

BI und Oracle Maps

Eine sehr ausführliche Zusammenstellung der Integrationsmöglichkeit - ohne Programmierung - der Oracle BI Suite EE und Oracle Maps/Spatial ist kürzlich als PDF (7,9 MB) vom Oracle Partner Peak Indicators Limited veröffentlicht worden.
Ich wollte es Euch nicht vorenthalten.
Auch Basisfunktionen von Oracle Spatial werden zum besseren Verständnis erläutert.

Solch Funktionen sind möglich und werden ausführlich beschrieben:

23 February 2011

Treffen der DOAG SIG Spatial in Potsdam

Am 15. März trifft sich die DOAG SIG Spatial in Potsdam. Auf der Agenda stehen interessante Themen wie OpenStreetMap-Daten in Oracle, Geodaten und XML, Tipps & Tricks, Netzwerke und Routing.

Und darüber hinaus steht natürlich das Kennenlernen und Networking im Vordergrund; ein wichtiger Termin der deutschsprachigen Oracle-Spatial-Community, den man sich nicht entgehen lassen sollte ...

17 February 2011

Dashboard Examples

The Directions Magazine has published an article with Dashboards based on Oracle Maps - one looks as follows:



Feel free to look into the article further .

08 February 2011

Oracle Maps mit ADF Data Visualisation components in JDeveloper 11g

Die Funktionalitäten der "Map-Komponente" ist in JDeveloper 11g und ADF weiter ausgebaut worden.
Solche anspruchsvolle Anwendungen sind deklarativ möglich:



Ein Demo dazu hier.

Dokumentation zu Karte und Point-Themes here.
Aus der "Component Palette" können neben ADF auch folgende "ADF Data Visualisation" Komponenten ausgewählt und auf den Designer Teil von JDeveloper gezogen werden:


Man kann deklarativ - also ohne Programmierung - eine Synchronisierung der obigen Komponenten mit der Karte herstellen... - wie ganz oben zu sehen - cool !

Über das Point Theme war ich zunächst etwas "entsetzt", da offensichtlich nicht mit SDO_GEOMETRY der Spatial Technik gearbeitet wurde... - aber das trügt!
Es ist nur EINE Option von mehreren, wie mit den POI/FOIs umgegangen wird.
Der Point-Theme Wizard ermöglicht auch die Nutzung lediglich einer Adresse und nutzt den Oracle Geocoder Server zur Errechnung von Länge/Breite für die Standorte - on the fly.
Man braucht lediglich eine Tabelle mit Adressen.
Testweise kann man obiges Beispiel erstellen ohne eigene Spatial/Mapviewer Infrastruktur, indem man bei Mapviewer und Geocoder den elocation.oracle.com nutzt.

Zum "Probieren" bietet sich die "berühmte" Fusion Order Demo als "How To" an.
Die Einbindung der "DVTs" wird im st_curriculum beschrieben.

JDeveloper 11g Version 11.1.1.4:



Resultat im Browser:



Weiterführende Infos im Oracle® Fusion Middleware Web User Interface Developer's Guide for Oracle Application Development Framework.

Viel Spass damit!

10 January 2011

Spatial Basics... - "How to insert Spatial Data"

Eine gute ausführliche Dokumentation in Form eines "How To" über das "Befüllen" der Spatial Funktionalität ist auf dieser Wiki Seite zu finden.
Es wird zwar noch auf "Georaptor" Bezug genommen, aber diese "MapView" Funktionalität besteht jetzt ja auch direkt (ohne Plugin/Extension) im SQL Developer 3.0
Ist eigentlich "Basic Stuff" - aber für den einen oder anderen doch hilfreich (zumal in der Ausführlichkeit).
 
/** heise encoder fw */