Tipps, Tricks, Best Practices und Aktuelles zu Oracle Spatial Technologies
Dienstag, 11. Oktober 2011
Standardkonforme Speicherung von Geodaten in der Oracle Datenbank jetzt auf Youtube
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
- 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
- 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
Dienstag, 6. September 2011
Oracle und die INTERGEO 2011
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
- 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?
Freitag, 5. August 2011
Wie man Wartezeiten sinnvoll abkürzt oder wobei hilft mir SDO_JOIN?
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.
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 /
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.
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'))
/
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
/
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
Der aktuelle Patch (11g PS4) für Oracle Fusion Middleware MapViewer (MapViewer version 11.1.1.5) steht hier zum Download bereit.