Dienstag, 11. Oktober 2011

Standardkonforme Speicherung von Geodaten in der Oracle Datenbank jetzt auf Youtube

Wir haben einen Überblick zu Oracle Spatial multimedial aufbereitet.
Sehen Sie jetzt also in 2 Teilen "Standardkonforme Speicherung von Geodaten": Dank an den Oracle-Werkstudenten Peter Lenke in Potsdam dafür. Und natürlich an Michal.

Dienstag, 27. September 2011

Oracle Spatial auf der "DOAG2011" in Nürnberg

Die Vorträge, die sich um das Thema Geodaten, Oracle Spatial, Locator und Maps drehen, sind im DOAG-Konferenzprogramm nicht so einfach zu finden. Für am Thema interessierte daher hier eine Zusammenstellung. Das gesamte Konferenzprogramm findet sich, wie immer auf der DOAG-Webseite.

  • Einsatz digitaler Landkarten in der Analyse von Business Informationen
    Gerrit Schreiber, GfK Geomarketing GmbH
    15.11.2011 14:00 - 14:45 Uhr - Raum Oslo
     
  • Get extreme performance with Oracle Spatial on Oracle Exadata
    Hans Viehmann, Oracle Deutschland B.V. & Co KG
    16.11.2011 10:00 - 10:45 Uhr - Raum Tokio
     
  • Management von standortbezogenen Daten mit Oracle Application Express
    Prof. Dr. Petra Sauer, Beuth Hochschule für Technik Berlin
    16.11.2011 13:00 - 13:45 Uhr - Raum Istabul
     
  • Geodaten intelligent nutzen
    Joachim Figura, CISS TDI GmbH
    16.11.2011 13:00 - 13:45 Uhr - Raum Neu Delhi
     
  • Das Navi in der Datenbank: Oracle11g has NAVTEQ on Board
    Till Kreiler, NAVTEQ und Carsten Czarski, ORACLE Deutschland B.V. & Co KG
    17.11.2011 12:00 - 12:45 Uhr - Raum Shanghai
     
  • Oracle Maps (Spatial) Karten in Java Anwendungen: How to... (ADF)
    Bernhard Fischer-Wasels, ORACLE Deutschland B.V. & Co KG
    17.11.2011 14:00 - 14:45 Uhr - Raum Istanbul
Und als "Bonus-Track" sei auch dieser Vortrag erwähnt - das Thema hat zwar nichts mit Geodaten zu tun, ist aber dennoch Bestandteil der Spatial-Option. Und daher gehört er auch auf die Liste
  • Ontologien und semantische Netze aus Sicht der Datenbank
    Karin Patenge, ORACLE Deutschland B.V. & Co KG
    16.11.2011 09:00 - 09:45 Uhr, Raum Seoul
Ich hoffe, ich habe keinen Vortrag übersehen.

Dienstag, 6. September 2011

Oracle und die INTERGEO 2011

Wir werden auch dieses Jahr wieder auf der INTERGEO sein.

Bewährtermassen werden wir wie in den vergangenen Jahren an den Ständen einiger unserer Oracle-Partner aus dem GIS-Umfeld "Flagge zeigen".
Besuchen Sie uns also einfach hier:
  • Firma grit - graphische Informationstechnik GmbH in Halle 7A Stand C45
  • Firma CISS TDI in Halle 7 Stand C50
  • Firma GDV Gesellschaft für geografische Datenverarbeitung mbH in Halle 7A Stand D46
Wir können gemeinsam über spannende Themen berichten, z.B.:
  • Wie kann man in der Oracle Datenbank eine gitterbasierte Transformation von Gauss-Krüger nach ETRS89 durchführen?
  • Wie sehen OpenStreetMap-Daten im Netzwerkdatenmodell von Oracle Spatial aus?
  • Oder wie funktioniert das Routing in der Oracle Datenbank ebenfalls auf der Basis des Netzwerkdatenmodells?
Wir freuen uns schon jetzt auf Ihren Besuch!

Freitag, 5. August 2011

Wie man Wartezeiten sinnvoll abkürzt oder wobei hilft mir SDO_JOIN?

Was passiert eigentlich auf einem Standard Notebook mit der Oracle Datenbank an Bord, wenn man alle Geometrien einer Tabelle mit allen (oder so gut wie allen) Geometrien einer anderen Tabellen verschneiden will?

Das habe ich mal ausprobiert am Beispiel des GfK GeoMarketing Deutschlanddatensets. Dazu habe ich mir folgendes Result Set überlegt:

Ich brauche eine Auflistung der

  • administrativen Ebene 3 (Name und Gemeindekennziffer der Stadt- und Landkreise)
  • administrativen Ebene 4 (Name und Gemeidekennziffer Gemeinden)
  • und der den Gemeinden zugeordneten 5-stelligen Postleitzahlen.
Frisch ans Werk und sozusagen straight forward habe ich es mal mit dieser SQL-Abfrage probiert:

select 
  d.id , 
  d.name "Name Stadt-/Landkreis", 
  d.new___z "Anzahl EW Stadt-/Landkreis",
  g.id "ID Gemeinde", 
  g.name "Name Gemeinde", 
  g.new___z "Anzahl EW Gemeinde",
  p.id "PLZ"
from 
  de_municipalities_2010 g,
  de_districts_2010 d,
  de_5digpc_2010 p
where
  substr(g.id,1,5) = d.id and 
  sdo_relate(g.geometry, p.geometry, 'mask=anyinteract') = 'TRUE' and 
  p.id = '16515'
group by
  d.id , 
  d.name, 
  d.new___z,
  g.id, 
  g.name, 
  g.new___z,
  p.id
order by
  d.id , 
  d.name, 
  g.id, 
  g.name,
  p.id
/
Aus Erfahrung weiss man um die Nützlichkeit von Filtern, welche die zu vergleichenden Datenmengen zunächst erst einmal einschränken. Von daher die Betrachtung erst mal nur einer einzigen Postleitzahl.

Ein bisschen mutiger geworden, wird der Filter dann gelockert, um ihn ganz zu entfernen. Denn Ziel war ja, den kompletten Datenbestand beider Tabellen räumlich in Beziehung zu setzen, um auch die Postleitzahlen zu ermitteln, welchen den Gemeinden zugeordnet sind. Das sind knapp 11600 Gemeinden und gut 8200 PLZs.

So und das war es dann auch erst mal für den Nachmittag, den Abend ... und auch am nächsten Morgen hatte sich noch kein Result Set einstellen wollen.

Also muss es wohl noch besser gehen.

Folgende überlegungen führten dann zu weiteren Vesuchen:

  • Ich stelle sicher, dass für beide Tabellen der räumliche Index benutzt wird.
  • Ich nutze erst mal nur den Primary Filter, um ein annäherndes Ergebnis zu erhalten. Danach wird der exakte Vergleich nur noch mit dem dann schon eingeschränkten Datenset vorgenommen.
Mit diesen beiden Gedanken im Hinterkopf und ggf. auch noch mal einem Blick ins Oracle Spatial Handbuch, wird man bei SDO_JOIN fündig.

Wie funktioniert dabei SDO_JOIN?

select
  rowid1 as municipalities_id,
  rowid2 as plz5_id
from
  table(
    sdo_join(
   'DE_MUNICIPALITIES_2010',
   'GEOMETRY',
   'DE_5DIGPC_2010',
   'GEOMETRY',
   'mask=anyinteract'))
/
Und siehe da: Diese Abfrage dauert keine 2 Minuten.
Allerdings fehlt ja auch noch der Join mit der 3. Tabelle und auch group by und order by sollen schon sein und kosten die Datenbank so einiges an Ressourcen und damit Zeit.

Also muss der Rest auch noch her und ergibt dann diese SQL Abfrage:

with spatial_join_result as (
select
  rowid1 as municipalities_id,
  rowid2 as plz5_id
from
  table(
    sdo_join(
   'DE_MUNICIPALITIES_2010',
   'GEOMETRY',
   'DE_5DIGPC_2010',
   'GEOMETRY',
   'mask=anyinteract')))
select 
  d.name "Name Stadt-/Landkreis", 
  d.new___z "Anzahl EW Stadt-/Landkreis",
  g.name "Name Gemeinde", 
  g.new___z "Anzahl EW Gemeinde",
  p.id "PLZ"  
from
  spatial_join_result a, 
  de_municipalities_2010 g,
  de_5digpc_2010 p,
  de_districts_2010 d  
where
  a.municipalities_id = g.rowid and
  a.plz5_id = p.rowid and
  sdo_relate(g.geometry, p.geometry, 'mask=anyinteract') = 'TRUE' and
  substr(g.id, 1, 5) = d.id  
-- Hierarchische Verknüpfung Admin Ebene 3 mit Admin Ebene 4
group by
  d.name,
  d.new___z,
  g.name,
  g.new___z,
  p.id
order by
  d.name,
  d.new___z,
  g.name,
  g.new___z,
  p.id
/
Jetzt habe ich, was ich mir zum Ziel gesetzt hatte und zwar in einer Zeit von 14 Minuten. Das reicht zwar immer noch für einen Plausch mit den Kollegen zwischendurch. Aber diese Zeit ist erst mal akzeptabel.

Für diejenigen Leserinnen und Leser dieses Blogeintrags, die im Besitz einer (gern auch mehrerer) Oracle DB Enterprise Edition Lizenz sind, sei gesagt, dass sie damit noch mehr Optimierungspotential haben. Das verheissungsvolle Wort an dieser Stelle ist Parallisierung.
Wie das funktioniert, dafür verweise ich jetzt einfach mal auf diesen Link. Denn sonst verpasse ich vielleicht noch meinen Flieger in den Urlaub.

Montag, 4. Juli 2011

Aktueller MapViewer Patch (11g PS4) released

Wir sind hier mit dem Oracle Spatial Blog zwar auf der Datenbank-Seite. Aber ohne Visualisierung sind Geodaten zwar zu benutzen im Sinne einer Prozessierung, aber halt nicht besonders anschaulich. Von daher sei die nachfolgende Mitteilung gestattet:

Der aktuelle Patch (11g PS4) für Oracle Fusion Middleware MapViewer (MapViewer version 11.1.1.5) steht hier zum Download bereit.