<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1109619187990598765</id><updated>2012-02-17T03:50:29.771+01:00</updated><category term='plsql'/><category term='xml'/><category term='epsg'/><category term='SDO_UTIL Multipolygone EXTRACT'/><category term='tts'/><category term='OpenWorld Oracle Spatial MapViewer'/><category term='gpx convert sdo_geometry'/><category term='srid'/><category term='import'/><category term='doag'/><category term='gk'/><category term='OOW 2011 OpenWorld Oracle Spatial MapViewer  OpenWorld'/><category term='sql developer'/><category term='export'/><category term='SDO_UTIL Rectify duplicate vertices'/><category term='user_sdo_geom_metadata'/><category term='potsdam'/><category term='sql'/><category term='osm'/><category term='projektion'/><category term='view'/><category term='MapViewer MAPS PS4'/><category term='sig'/><category term='network'/><category term='tablespace'/><category term='transform'/><category term='SecureFiles LOB Rasterdaten Vektordaten'/><title type='text'>Geodaten für Alle: Oracle Spatial</title><subtitle type='html'>Tipps, Tricks und Best Practice zu Oracle Locator und Oracle Spatial</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://oracle-spatial.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://oracle-spatial.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Carsten Czarski</name><uri>http://www.blogger.com/profile/15040474428905002855</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>31</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1109619187990598765.post-8935140155366735172</id><published>2011-11-09T15:16:00.000+01:00</published><updated>2011-11-09T15:16:24.516+01:00</updated><title type='text'>Oracle sponsort das Geospatial World Forum 2012 vom 23.-27. April 2012 in Amsterdam</title><content type='html'>&lt;div&gt;
Ein Geospatial World Forum in Europa gab es schon eine Weile nicht. &lt;br /&gt;
Aber jetzt ist eines in Vorbereitung und ich m&amp;ouml;chte alle diejenigen motivieren, sich aktiv daran zu beteiligen, welche tolle Projekte auf Basis von Oracle Spatial Technologien auf die Beine gestellt haben. &lt;br /&gt;
&lt;a href="http://www.geospatialworldforum.org/2012/call-for-abstracts.htm"&gt;Abstracts &lt;/a&gt; k&amp;ouml;nnen noch bis zum 20. November 2011 eingereicht werden.&lt;br /&gt;
Mehr Informationen zur Veranstaltung finden sich &lt;a href="http://www.geospatialworldforum.org/2012/index.htm"&gt;hier&lt;/a&gt;.
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109619187990598765-8935140155366735172?l=oracle-spatial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle-spatial.blogspot.com/feeds/8935140155366735172/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://oracle-spatial.blogspot.com/2011/11/oracle-sponsort-das-geospatial-world.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/8935140155366735172'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/8935140155366735172'/><link rel='alternate' type='text/html' href='http://oracle-spatial.blogspot.com/2011/11/oracle-sponsort-das-geospatial-world.html' title='Oracle sponsort das Geospatial World Forum 2012 vom 23.-27. April 2012 in Amsterdam'/><author><name>Karin Patenge</name><uri>http://www.blogger.com/profile/07393355977167541886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-61GiEwKbfwU/TeOFBhD8F9I/AAAAAAAAAB4/viI6bc5LLSo/s220/IMG_2722_2.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109619187990598765.post-2382993020138532261</id><published>2011-10-11T23:09:00.000+02:00</published><updated>2011-10-11T23:09:37.436+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OOW 2011 OpenWorld Oracle Spatial MapViewer  OpenWorld'/><title type='text'>Beiträge zu "Spatial" auf der Oracle OpenWorld im Oktober 2011</title><content type='html'>Die Beitr&amp;auml;ge zur Oracle OpenWorld 2011 sind bereits zum großen Teil aus dem Internet abrufbar, so auch die zu Spatial. Einfach den &lt;a href="https://oracleus.wingateweb.com/scheduler/eventcatalog/eventCatalog.do"&gt;Content Catalog&lt;/a&gt; aufrufen, das Stichwort "Spatial" in das Suchfeld eintragen und auf die Schaltfl&amp;auml;che &lt;i&gt;Search&lt;/i&gt; klicken.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109619187990598765-2382993020138532261?l=oracle-spatial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle-spatial.blogspot.com/feeds/2382993020138532261/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://oracle-spatial.blogspot.com/2011/10/beitrage-zu-spatial-auf-der-oracle.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/2382993020138532261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/2382993020138532261'/><link rel='alternate' type='text/html' href='http://oracle-spatial.blogspot.com/2011/10/beitrage-zu-spatial-auf-der-oracle.html' title='Beiträge zu &quot;Spatial&quot; auf der Oracle OpenWorld im Oktober 2011'/><author><name>Karin Patenge</name><uri>http://www.blogger.com/profile/07393355977167541886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-61GiEwKbfwU/TeOFBhD8F9I/AAAAAAAAAB4/viI6bc5LLSo/s220/IMG_2722_2.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109619187990598765.post-3157477251395586281</id><published>2011-10-11T22:52:00.000+02:00</published><updated>2011-10-11T22:52:17.033+02:00</updated><title type='text'>Standardkonforme Speicherung von Geodaten in der Oracle Datenbank jetzt auf Youtube</title><content type='html'>Wir haben einen &amp;Uuml;berblick zu Oracle Spatial multimedial aufbereitet. &lt;br /&gt;Sehen Sie jetzt also in 2 Teilen "Standardkonforme Speicherung von Geodaten":
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=jj_bEDI94kE"&gt;Teil 1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=Mn19P_ZmvY"&gt;Teil 2&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
Dank an den Oracle-Werkstudenten Peter Lenke in Potsdam daf&amp;uuml;r. Und nat&amp;uuml;rlich an Michal.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109619187990598765-3157477251395586281?l=oracle-spatial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle-spatial.blogspot.com/feeds/3157477251395586281/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://oracle-spatial.blogspot.com/2011/10/standardkonforme-speicherung-von.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/3157477251395586281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/3157477251395586281'/><link rel='alternate' type='text/html' href='http://oracle-spatial.blogspot.com/2011/10/standardkonforme-speicherung-von.html' title='Standardkonforme Speicherung von Geodaten in der Oracle Datenbank jetzt auf Youtube'/><author><name>Karin Patenge</name><uri>http://www.blogger.com/profile/07393355977167541886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-61GiEwKbfwU/TeOFBhD8F9I/AAAAAAAAAB4/viI6bc5LLSo/s220/IMG_2722_2.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109619187990598765.post-5763963792066936120</id><published>2011-09-27T17:17:00.001+02:00</published><updated>2011-10-11T23:11:31.494+02:00</updated><title type='text'>Oracle Spatial auf der "DOAG2011" in Nürnberg</title><content type='html'>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&amp;nbsp;am Thema interessierte daher hier eine Zusammenstellung. Das gesamte Konferenzprogramm findet sich, wie immer auf &lt;a href="http://www.doag.org/de/events/konferenzen/doag-2011/das-programm.html" target="_blank"&gt;der DOAG-Webseite&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Einsatz digitaler Landkarten in der Analyse von Business Informationen&lt;/b&gt; &lt;br /&gt;
Gerrit Schreiber, GfK Geomarketing GmbH&lt;br /&gt;
15.11.2011 14:00 - 14:45 Uhr - Raum Oslo&lt;br /&gt;
&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Get extreme performance with Oracle Spatial on Oracle Exadata&lt;/b&gt;&lt;br /&gt;
Hans Viehmann, Oracle Deutschland B.V. &amp;amp; Co KG&lt;br /&gt;
16.11.2011 10:00 - 10:45 Uhr - Raum Tokio&lt;br /&gt;
&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Management von standortbezogenen Daten mit Oracle Application Express&lt;/b&gt;&lt;br /&gt;
Prof. Dr. Petra Sauer, Beuth Hochschule für Technik Berlin&lt;br /&gt;
16.11.2011 13:00 - 13:45 Uhr - Raum Istabul&lt;br /&gt;
&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Geodaten intelligent nutzen&lt;/b&gt;&lt;br /&gt;
Joachim Figura, CISS TDI GmbH&lt;br /&gt;
16.11.2011 13:00 - 13:45 Uhr - Raum Neu Delhi&lt;b&gt;&lt;br /&gt;
&amp;nbsp; &lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Das Navi in der Datenbank: Oracle11g has NAVTEQ on Board&lt;/b&gt;&lt;br /&gt;Till Kreiler, NAVTEQ und Carsten Czarski, ORACLE Deutschland B.V. &amp;amp; Co KG&lt;br /&gt;
17.11.2011 12:00 - 12:45 Uhr - Raum Shanghai&lt;br /&gt;
&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Oracle Maps (Spatial) Karten in Java Anwendungen: How to... (ADF)&lt;/b&gt;&lt;br /&gt;
Bernhard Fischer-Wasels, ORACLE Deutschland B.V. &amp;amp; Co KG&lt;br /&gt;
17.11.2011 14:00 - 14:45 Uhr - Raum Istanbul&lt;/li&gt;
&lt;/ul&gt;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&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Ontologien und semantische Netze aus Sicht der Datenbank&lt;/b&gt;&lt;br /&gt;
Karin Patenge, ORACLE Deutschland B.V. &amp;amp; Co KG&lt;br /&gt;
16.11.2011 09:00 - 09:45 Uhr, Raum Seoul&lt;/li&gt;
&lt;/ul&gt;Ich hoffe, ich habe keinen Vortrag übersehen.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109619187990598765-5763963792066936120?l=oracle-spatial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle-spatial.blogspot.com/feeds/5763963792066936120/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://oracle-spatial.blogspot.com/2011/09/oracle-spatial-auf-der-doag2011-in.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/5763963792066936120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/5763963792066936120'/><link rel='alternate' type='text/html' href='http://oracle-spatial.blogspot.com/2011/09/oracle-spatial-auf-der-doag2011-in.html' title='Oracle Spatial auf der &quot;DOAG2011&quot; in Nürnberg'/><author><name>Carsten Czarski</name><uri>http://www.blogger.com/profile/15040474428905002855</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109619187990598765.post-2020021359984064081</id><published>2011-09-06T21:42:00.000+02:00</published><updated>2011-09-06T21:42:03.077+02:00</updated><title type='text'>Oracle und die INTERGEO 2011</title><content type='html'>&lt;div&gt;Wir werden auch dieses Jahr wieder auf der INTERGEO sein.&lt;/p&gt;Bew&amp;auml;hrtermassen werden wir wie in den vergangenen Jahren an den St&amp;auml;nden einiger unserer Oracle-Partner aus dem GIS-Umfeld &amp;quot;Flagge zeigen&amp;quot;. &lt;br /&gt;Besuchen Sie uns also einfach hier: 
&lt;ul&gt;
&lt;li&gt;Firma grit - graphische Informationstechnik GmbH in Halle 7A Stand C45&lt;/li&gt;
&lt;li&gt;Firma CISS TDI in Halle 7 Stand C50&lt;/li&gt;
&lt;li&gt;Firma GDV Gesellschaft für geografische Datenverarbeitung mbH in Halle 7A Stand D46&lt;/li&gt;
&lt;/ul&gt;
Wir k&amp;ouml;nnen gemeinsam &amp;uuml;ber spannende Themen berichten, z.B.:
&lt;ul&gt;
&lt;li&gt;Wie kann man in der Oracle Datenbank eine gitterbasierte Transformation von Gauss-Kr&amp;uuml;ger nach ETRS89 durchf&amp;uuml;hren?&lt;/li&gt;
&lt;li&gt;Wie sehen OpenStreetMap-Daten im Netzwerkdatenmodell von Oracle Spatial aus?&lt;/li&gt;
&lt;li&gt;Oder wie funktioniert das Routing in der Oracle Datenbank ebenfalls auf der Basis des Netzwerkdatenmodells?&lt;/li&gt;
&lt;/ul&gt;
Wir freuen uns schon jetzt auf Ihren Besuch!
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109619187990598765-2020021359984064081?l=oracle-spatial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle-spatial.blogspot.com/feeds/2020021359984064081/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://oracle-spatial.blogspot.com/2011/09/oracle-und-die-intergeo-2011.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/2020021359984064081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/2020021359984064081'/><link rel='alternate' type='text/html' href='http://oracle-spatial.blogspot.com/2011/09/oracle-und-die-intergeo-2011.html' title='Oracle und die INTERGEO 2011'/><author><name>Karin Patenge</name><uri>http://www.blogger.com/profile/07393355977167541886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-61GiEwKbfwU/TeOFBhD8F9I/AAAAAAAAAB4/viI6bc5LLSo/s220/IMG_2722_2.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109619187990598765.post-2263909326237789610</id><published>2011-08-05T18:01:00.001+02:00</published><updated>2011-09-21T09:14:36.533+02:00</updated><title type='text'>Wie man Wartezeiten sinnvoll abkürzt oder wobei hilft mir SDO_JOIN?</title><content type='html'>&lt;div&gt;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?&lt;p&gt;
Das habe ich mal ausprobiert am Beispiel des &lt;a href="http://www.oracle.com/technetwork/database/options/spatial/downloads/partners/spatial-partners-data-087203.html"&gt;GfK GeoMarketing Deutschlanddatensets&lt;/a&gt;. Dazu habe ich mir folgendes Result Set &amp;uuml;berlegt:&lt;p&gt;
Ich brauche eine Auflistung der 
&lt;ul&gt;
&lt;li&gt;administrativen Ebene 3 (Name und Gemeindekennziffer der Stadt- und Landkreise)&lt;/li&gt;
&lt;li&gt;administrativen Ebene 4 (Name und Gemeidekennziffer Gemeinden)&lt;/li&gt;
&lt;li&gt;und der den Gemeinden zugeordneten 5-stelligen Postleitzahlen.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
Frisch ans Werk und sozusagen &lt;i&gt;straight forward&lt;/i&gt; habe ich es mal mit dieser SQL-Abfrage probiert:&lt;/p&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;pre name="code" class="sql"&gt;
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
/
&lt;/pre&gt;
&lt;div&gt;
Aus Erfahrung weiss man um die N&amp;uuml;tzlichkeit von Filtern, welche die zu vergleichenden Datenmengen zun&amp;auml;chst erst einmal einschr&amp;auml;nken. Von daher die Betrachtung erst mal nur einer einzigen Postleitzahl.&lt;p&gt;
Ein bisschen mutiger geworden, wird der Filter dann gelockert, um ihn ganz zu entfernen. Denn Ziel war ja, den kompletten Datenbestand beider Tabellen r&amp;auml;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.&lt;p&gt;
So und das war es dann auch erst mal f&amp;uuml;r den Nachmittag, den Abend ... und auch am n&amp;auml;chsten Morgen hatte sich noch kein Result Set einstellen wollen.&lt;p&gt;
Also muss es wohl noch besser gehen.&lt;p&gt;
Folgende &amp;uuml;berlegungen f&amp;uuml;hrten dann zu weiteren Vesuchen:
&lt;ul&gt;
&lt;li&gt;Ich stelle sicher, dass f&amp;uuml;r beide Tabellen der r&amp;auml;umliche Index benutzt wird.&lt;/li&gt;
&lt;li&gt;Ich nutze erst mal nur den Primary Filter, um ein ann&amp;auml;herndes Ergebnis zu erhalten. Danach wird der exakte Vergleich nur noch mit dem dann schon eingeschr&amp;auml;nkten Datenset vorgenommen.&lt;/li&gt;
&lt;/ul&gt;
Mit diesen beiden Gedanken im Hinterkopf und ggf. auch noch mal einem Blick ins &lt;a href="http://download.oracle.com/docs/cd/E11882_01/appdev.112/e11830.pdf"&gt;Oracle Spatial Handbuch&lt;/a&gt;, wird man bei SDO_JOIN f&amp;uuml;ndig.&lt;p&gt;
Wie funktioniert dabei SDO_JOIN?
&lt;/div&gt;
&lt;pre name="code" class="sql"&gt;
select
  rowid1 as municipalities_id,
  rowid2 as plz5_id
from
  table(
    sdo_join(
   'DE_MUNICIPALITIES_2010',
   'GEOMETRY',
   'DE_5DIGPC_2010',
   'GEOMETRY',
   'mask=anyinteract'))
/
&lt;/pre&gt;
&lt;div&gt;
Und siehe da: Diese Abfrage dauert keine 2 Minuten.&lt;br /&gt;
Allerdings fehlt ja auch noch der Join mit der 3. Tabelle und auch &lt;i&gt;group by&lt;/i&gt; und &lt;i&gt;order by&lt;/i&gt; sollen schon sein und kosten die Datenbank so einiges an Ressourcen und damit Zeit.&lt;p&gt;
Also muss der Rest auch noch her und ergibt dann diese SQL Abfrage:
&lt;/div&gt;
&lt;pre name="code" class="sql"&gt;
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&amp;uuml;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
/
&lt;/pre&gt;
&lt;div&gt;
Jetzt habe ich, was ich mir zum Ziel gesetzt hatte und zwar in einer Zeit von 14 Minuten. Das reicht zwar immer noch f&amp;uuml;r einen Plausch mit den Kollegen zwischendurch. Aber diese Zeit ist erst mal akzeptabel.&lt;p&gt;
F&amp;uuml;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 &lt;i&gt;Parallisierung&lt;/i&gt;. &lt;br /&gt;
Wie das funktioniert, daf&amp;uuml;r verweise ich jetzt einfach mal auf &lt;a href="http://download.oracle.com/otndocs/products/spatial/pdf/osuc2011_presentations/osuc2011_bestprac_exadata.pdf"&gt;diesen Link&lt;/a&gt;. Denn sonst verpasse ich vielleicht noch meinen Flieger in den Urlaub.
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109619187990598765-2263909326237789610?l=oracle-spatial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle-spatial.blogspot.com/feeds/2263909326237789610/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://oracle-spatial.blogspot.com/2011/08/wie-man-wartezeiten-sinnvoll-abkurzt.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/2263909326237789610'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/2263909326237789610'/><link rel='alternate' type='text/html' href='http://oracle-spatial.blogspot.com/2011/08/wie-man-wartezeiten-sinnvoll-abkurzt.html' title='Wie man Wartezeiten sinnvoll abkürzt oder wobei hilft mir SDO_JOIN?'/><author><name>Karin Patenge</name><uri>http://www.blogger.com/profile/07393355977167541886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-61GiEwKbfwU/TeOFBhD8F9I/AAAAAAAAAB4/viI6bc5LLSo/s220/IMG_2722_2.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109619187990598765.post-3796150942668594241</id><published>2011-07-04T15:47:00.000+02:00</published><updated>2011-07-04T15:47:09.483+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MapViewer MAPS PS4'/><title type='text'>Aktueller MapViewer Patch (11g PS4) released</title><content type='html'>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:&lt;p&gt;
Der aktuelle Patch (11g PS4) für Oracle Fusion Middleware MapViewer (MapViewer version 11.1.1.5) steht &lt;a href="http://www.oracle.com/technetwork/middleware/mapviewer/downloads/index.html"&gt;hier&lt;/a&gt;
 zum Download bereit.&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109619187990598765-3796150942668594241?l=oracle-spatial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle-spatial.blogspot.com/feeds/3796150942668594241/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://oracle-spatial.blogspot.com/2011/07/aktueller-mapviewer-patch-11g-ps4.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/3796150942668594241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/3796150942668594241'/><link rel='alternate' type='text/html' href='http://oracle-spatial.blogspot.com/2011/07/aktueller-mapviewer-patch-11g-ps4.html' title='Aktueller MapViewer Patch (11g PS4) released'/><author><name>Karin Patenge</name><uri>http://www.blogger.com/profile/07393355977167541886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-61GiEwKbfwU/TeOFBhD8F9I/AAAAAAAAAB4/viI6bc5LLSo/s220/IMG_2722_2.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109619187990598765.post-5643302606367900860</id><published>2011-06-09T18:11:00.031+02:00</published><updated>2011-06-17T10:09:27.831+02:00</updated><title type='text'>Geodatenschätze heben - Räumliche Analysen und Data Mining</title><content type='html'>&lt;div&gt;
&amp;Uuml;ber g&amp;auml;ngige r&amp;auml;umliche Operatoren und Funktionen hinaus bietet Oracle Spatial Methoden, um den Einfluss von Nachbarschaftsbeziehungen auf der Basis der Verortung von Objekten zu untersuchen, abzusch&amp;auml;tzen und vorauszusagen. 
&lt;/div&gt;
&lt;div&gt;Diese sind den folgenden Anwendungsbereichen zugeordnet und im PL/SQL Package &lt;a href="http://download.oracle.com/docs/cd/E11882_01/appdev.112/e11830/sdo_sam_ref.htm#SPATL190"&gt;SDO_SAM&lt;/a&gt; implementiert:
&lt;ul&gt;
&lt;li&gt;Location Prospecting Analysis&lt;/li&gt;
&lt;li&gt;Clustering Analysis&lt;/li&gt;
&lt;li&gt;Spatial Mining&lt;/li&gt;
&lt;li&gt;Neighborhood-Bases Estimation&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
Der heutige Blogeintrag gibt einen ersten kleinen Einblick in die von diesem Package bereitgetellten Methoden.&lt;/div&gt;
&lt;p&gt;&lt;h2&gt;
&lt;i&gt;SDO_SAM.AGGREGATES_FOR_LAYER&lt;/i&gt; in Anwendung&lt;/h2&gt;
&lt;div&gt;
Betrachten wir folgenden Anwendungsfall:&lt;/div&gt;
&lt;div&gt;F&amp;uuml;r die Beurteilung der Auswirkungen von Flugl&amp;auml;rm sollen die Bewohnerinnen und Bewohner im Umkreis von 5 km um die Flugh&amp;auml;fen ermittelt werden.&lt;p&gt;
F&amp;uuml;r die notwendige Analyse wird als Datengrundlage bew&amp;auml;hrtermassen das von der GfK GeoMarketing f&amp;uuml;r die Oracle Datenbank bereitgestellte Deutschland-Datenset verwendet. Darin enthalten sind (u.a.) die Tabellen: 
&lt;ul&gt;
&lt;li&gt;DE_AIRPORTS mit allen Flugh&amp;auml;fen in Deutschland&lt;/li&gt;
&lt;li&gt;DE_5DIGPC_2010 mit den 5-stelligen PLZ-Geometrien und u.a. der Population als Kennzahl&lt;/li&gt;
&lt;/ul&gt;
Diese nutzen wir ebenso wie die Prozedur AGGREGATES_FOR_LAYER im PL/SQL-Package SDO_SAM. &lt;br/&gt;
Im nachfolgenden SQL-Befehl, welcher einen &lt;i&gt;View&lt;/i&gt; anlegt, sind die Parameter-Werte f&amp;uuml;r die Prozedur kommentiert, um ihre Verwendung zu erkl&amp;auml;ren.
&lt;/div&gt;
&lt;pre name="code" class="sql"&gt;
-- Berechnet thematisches Aggregat f&amp;uuml;r einen Geometrielayer 
create or replace view de_stats_pop_around_airports
as
select 
  a.name,
  a.type,
  round(b.aggregate_value) aggregate_value,
  b.geometry
from
  table(  
    sdo_sam.aggregates_for_layer(
      'DE_5DIGPC_2010',      -- Theme-Tabelle. 5-stellige PLZ Geometrien
      'GEOMETRY',            -- Geometriespalte der Theme-Tabelle
      'SUM',                 -- Aggregatsfunktion (Summe)
      'NEW___Z',             -- Zu aggregierender Wert (Bev&amp;ouml;lkerung absolut)
      'DE_AIRPORTS',         -- Data Mining Tabelle (Flugh&amp;auml;fen)
      'GEOMETRY',            -- Geometriespalte in Data Mining Tabelle
      'distance=5 unit=km')  -- Distanzspezifikation (Umkreis von 5km um Flugh&amp;auml;fen)
  ) b,
  de_airports a
where 
  b.region_id = a.rowid;
&lt;/pre&gt;
&lt;div&gt;
Die in diesem View aggregierten Daten sollen auf einer Karte dargestellt werden. Daf&amp;uuml;r ben&amp;ouml;tigen wir zun&amp;auml;chst einmal die Metadaten. Die Syntax f&amp;uuml;r den entsprechenden INSERT-Befehl ist sichert vertraut.
&lt;/div&gt;
&lt;pre name="code" class="sql"&gt;
-- Metadaten
insert into user_sdo_geom_metadata (
  table_name, 
  column_name, 
  diminfo,
  srid) 
values (
  'DE_STATS_POP_AROUND_AIRPORTS',
  'GEOMETRY',
  sdo_dim_array(sdo_dim_element('Lon',-180,180,0.005),
  sdo_dim_element('Lat',-90,90,0.005)),
  8307);
&lt;/pre&gt;
&lt;div&gt;
Der Rest ist dann Arbeit f&amp;uuml;r den &lt;i&gt;Oracle MapBuilder&lt;/i&gt;. Dort wird ein enstprechender &lt;i&gt;Style&lt;/i&gt; definiert (Kreis roter F&amp;uuml;llung und schwarzer Umrandung). Dieser &lt;i&gt;Style&lt;/i&gt; wird f&amp;uuml;r ein &lt;i&gt;Theme&lt;/i&gt; verwendet, welches als &lt;i&gt;Advanced Theme &amp;gt; Variable Marker&lt;/i&gt; definiert ist.&lt;br /&gt;
Das Ergebnis ist im nachfolgenden Bild dargestellt. Um die thematische Kartenebene r&amp;auml;umlich besser einordnen zu k&amp;ouml;nnen, wurde eine weitere Kartenebene hinterlegt, welche die Bundesl&amp;auml;ndergrenzen von DE abbildet.
&lt;/div&gt;
&lt;br /&gt;
&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-D1IOgm1I3ag/TeTXo2AVxXI/AAAAAAAAACY/iVZGRcrDfBA/s1600/Capture01_20110531.JPG" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="280" src="http://3.bp.blogspot.com/-D1IOgm1I3ag/TeTXo2AVxXI/AAAAAAAAACY/iVZGRcrDfBA/s400/Capture01_20110531.JPG" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Thematische Karte mit Population im Umkreis von 5 km um Flughäfen dargestellt als &lt;i&gt;Ranged Variable Markers&lt;/i&gt;&lt;br /&gt;
(basierend auf einem Deutschland-Datenset der GfK GeoMarketing für die Oracle DB)&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;
&lt;div&gt;
Mit SDO_SAM.AGGREGATES_FOR_LAYER liegt damit ein Einstieg ins Thema vor. Weitere Tipps &amp;amp; Tricks zum Thema werden folgen.
&lt;/div&gt;
&lt;p&gt;
&lt;div&gt;
Der Vollst&amp;auml;ndigkeit halber sind nachfolgend noch die XML-Dokumente f&amp;uuml;r den &lt;i&gt;Advanced Style&lt;/i&gt; und das &lt;i&gt;Theme&lt;/i&gt; eingef&amp;uuml;gt.
&lt;p&gt;
&lt;pre name="code" class="sql"&gt;
&amp;lt;?xml version="1.0" ?&amp;gt;
&amp;lt;AdvancedStyle&amp;gt;
  &amp;lt;VariableMarkerStyle basemarker="CITIES_OVER_100K" startsize="5" increment="4"&amp;gt;
    &amp;lt;Buckets&amp;gt;
      &amp;lt;RangedBucket seq="0" label="&amp;lt;5K" low="-Infinity" high="5000" label_style="LABELS"/&amp;gt;
      &amp;lt;RangedBucket seq="1" label="5-10K" low="5000" high="10000" label_style="LABELS"/&amp;gt;
      &amp;lt;RangedBucket seq="2" label="10-20K" low="10000" high="20000" label_style="LABELS"/&amp;gt;
      &amp;lt;RangedBucket seq="3" label="20-50K" low="20000" high="50000" label_style="LABELS"/&amp;gt;
      &amp;lt;RangedBucket seq="4" label="50-100K" low="50000" high="100000" label_style="LABELS"/&amp;gt;
      &amp;lt;RangedBucket seq="5" label="100-200K" low="100000" high="200000" label_style="LABELS"/&amp;gt;
      &amp;lt;RangedBucket seq="6" label="200-500K" low="200000" high="500000" label_style="LABELS"/&amp;gt;
      &amp;lt;RangedBucket seq="7" label="&amp;gt;500K" low="500000" high="Infinity"/&amp;gt;
    &amp;lt;/Buckets&amp;gt;
  &amp;lt;/VariableMarkerStyle&amp;gt;
&amp;lt;/AdvancedStyle&amp;gt;
&lt;/pre&gt;
&lt;pre name="code" class="sql"&gt;
&amp;lt;?xml version="1.0" standalone="yes"?&amp;gt;
&amp;lt;styling_rules&amp;gt;
    &amp;lt;hidden_info&amp;gt;
        &amp;lt;field column="NAME" name="Name des Flughafens"/&amp;gt;
        &amp;lt;field column="AGGREGATE_VALUE" name="Population absolut"/&amp;gt;
        &amp;lt;field column="TYPE" name="Typ des Flughafens"/&amp;gt;
  &amp;lt;/hidden_info&amp;gt;
    &amp;lt;rule column="AGGREGATE_VALUE"&amp;gt;
        &amp;lt;features style="V.DE_POP_AROUND_AIRPORTS"&amp;gt; &amp;lt;/features&amp;gt;
        &amp;lt;label column="NAME" style="LABELS"&amp;gt; 1 &amp;lt;/label&amp;gt;
  &amp;lt;/rule&amp;gt;
&amp;lt;/styling_rules&amp;gt;
&lt;/pre&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109619187990598765-5643302606367900860?l=oracle-spatial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle-spatial.blogspot.com/feeds/5643302606367900860/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://oracle-spatial.blogspot.com/2011/06/geodatenschatze-heben-r-analysen-und.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/5643302606367900860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/5643302606367900860'/><link rel='alternate' type='text/html' href='http://oracle-spatial.blogspot.com/2011/06/geodatenschatze-heben-r-analysen-und.html' title='Geodatenschätze heben - R&amp;auml;umliche Analysen und Data Mining'/><author><name>Karin Patenge</name><uri>http://www.blogger.com/profile/07393355977167541886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-61GiEwKbfwU/TeOFBhD8F9I/AAAAAAAAAB4/viI6bc5LLSo/s220/IMG_2722_2.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-D1IOgm1I3ag/TeTXo2AVxXI/AAAAAAAAACY/iVZGRcrDfBA/s72-c/Capture01_20110531.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109619187990598765.post-8765021996414835768</id><published>2011-05-30T16:12:00.003+02:00</published><updated>2011-05-31T08:47:02.544+02:00</updated><title type='text'>Aus Oracle nach Google Earth mit Hilfe von KML</title><content type='html'>&lt;div style="text-align: justify;"&gt;
Das &lt;a href="http://download.oracle.com/docs/cd/E11882_01/appdev.112/e11830/sdo_util.htm"&gt;SDO_UTIL Package (Utility)&lt;/a&gt; bietet seit der Version 11g der Oracle Datenbank neue Möglichkeiten für einen direkten Umgang mit der Keyhole Markup Language (KML).&amp;nbsp;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
So können beispielsweise spatiale Geometrien mit Hilfe der Funktion &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;sdo_util.to_kmlgeometry&lt;/span&gt; in KML umgewandelt werden. Umgekehrt können mit Hilfe der Funktion &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;sdo_util.from_kmlgeometry&lt;/span&gt; KML-Geometrien in spatiale Geometrien umgewandelt werden.&amp;nbsp;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
In diesem Artikel erfahren Sie, wie die Funktion&amp;nbsp; &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;sdo_util.to_kmlgeometry&lt;/span&gt; angewendet wird und wie Sie das Ergebnis zu einem vollständigen KML-Dokument, welches anschließend in Google Earth geladen wird, umwandeln können. &amp;nbsp; &lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Schauen wir uns einen einfachen Anwendungsfall an:&lt;/div&gt;
&lt;/div&gt;
&lt;blockquote style="background-color: #eeeeee;"&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;
&lt;b&gt;&lt;span style="color: #1f497d; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;SELECT&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt; sdo_util.to_kmlgeometry(geometry) KML&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;
&lt;b&gt;&lt;span style="color: #1f497d; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;FROM&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="color: #1f497d; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;nbsp; M_ADMIN_AREA2&lt;br /&gt;WHERE&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt; feature_name = &lt;span style="color: #4f81bd;"&gt;'BERLIN'&lt;/span&gt;;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;
Als Ergebnis dieser Abfrage erhalten wir eine KML-Geometrie für das Bundesland Berlin:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote style="background-color: #eeeeee;"&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;
&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;KML&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;
&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;---------------------------------------------------------------------------&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; text-align: justify;"&gt;
&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;lt;Polygon&amp;gt;&amp;lt;extrude&amp;gt;0&amp;lt;/extrude&amp;gt;&amp;lt;tessellate&amp;gt;0&amp;lt;/tessellate&amp;gt;&amp;lt;altitudeMode&amp;gt;relativeToGround&amp;lt;/altitudeMode&amp;gt;&amp;lt;outerBoundaryIs&amp;gt;&amp;lt;LinearRing&amp;gt;&amp;lt;coordinates&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; text-align: justify;"&gt;
&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="color: red; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;13.56177,52.5804
13.54188,52.58915 13.53483,52.59068 13.50847,52.59241 13.49723,52.60583
13.49827,52.60961 13.50573,52.62563 13.51852,52.63162 13.52244,52.64464
13.5124,52.64478 13.49034,52.65466 13.48478,52.65872&amp;nbsp; &lt;br /&gt;
...&lt;br /&gt;
...&lt;br /&gt;
13.65677,52.52511 13.65713,52.52987 13.62592,52.53013 13.62523,52.53815
13.63451,52.53879 13.63662,52.54234 13.58706,52.54958 13.58239,52.56993
13.56894,52.57295 13.56177,52.5804&lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;lt;/coordinates&amp;gt;&amp;lt;/LinearRing&amp;gt;&amp;lt;/outerBoundaryIs&amp;gt;&amp;lt;/Polygon&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; text-align: justify;"&gt;
&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;---------------------------------------------------------------------------&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div style="text-align: justify;"&gt;
Wenn Sie dieses Ergebnis in einer KML-Datei abspeichern und diese Datei in Google Earth öffnen, dann wird die oben abgefragte Geometrie zunächst nicht angezeigt. Zu einem vollständigen KML-Dokument fehlen neben dem XML-Header noch einige Angaben, die wir mit Hilfe der XML DB, einem Feature welches in jeder Oracle Datenbank enthalten ist, ergänzen werden.&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Überprüfen Sie zuerst, ob XML DB bei der Datenbank-Installation mit installiert wurde. Führen Sie dazu im SQL*PLUS die folgende Abfrage aus:&lt;/div&gt;
&lt;blockquote style="background-color: #eeeeee;"&gt;
&lt;div style="text-align: justify;"&gt;
&lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;select comp_name, status from dba_registry where comp_name='Oracle XML Database';&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div style="text-align: justify;"&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;b&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;b&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;b&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;b&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
&lt;b&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style="text-align: justify;"&gt;
Falls diese Funktionalität in Ihrer Datenbank nicht installiert sein sollte, dann können Sie das XML DB Repository mit Hilfe des folgenden Scripts nachinstallieren&lt;/div&gt;
&lt;blockquote&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; text-align: justify;"&gt;
&lt;b style="background-color: #eeeeee;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;nbsp;$ORACLE_HOME/rdbms/admin/catqm.sql&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/blockquote&gt;
Kommen wir zu unserer Ausgangsabfrage zurück und ergänzen diese um die fehlenden Angaben:&lt;br /&gt;
&lt;blockquote style="background-color: #eeeeee;"&gt;
&lt;b&gt;&lt;span style="color: #1f497d; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; line-height: 115%;"&gt;SELECT&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; line-height: 115%;"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 11pt; line-height: 115%;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; line-height: 115%;"&gt;&amp;nbsp; &lt;span style="color: #1f497d;"&gt;xmlelement&lt;/span&gt;("kml", &lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;span style="color: #1f497d;"&gt;xmlattributes&lt;/span&gt;('http://www.opengis.net/kml/2.2'
as "xmlns"),&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &lt;span style="color: #1f497d;"&gt;xmlelement&lt;/span&gt;("Document",&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #1f497d;"&gt;xmlelement&lt;/span&gt;("Placemark",
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #1f497d;"&gt;xmlelement&lt;/span&gt;("name",
'Berlin'),&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #1f497d;"&gt;xmlelement&lt;/span&gt;("Description",
'Flaeche des Bundeslandes Berlin'),&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #1f497d;"&gt;xmltype&lt;/span&gt;(sdo_util.to_kmlgeometry(geometry))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;br /&gt;
&amp;nbsp;&amp;nbsp; )&lt;br /&gt;
&amp;nbsp; )&lt;br /&gt;
&lt;span style="color: #1f497d;"&gt;FROM&amp;nbsp; M_ADMIN_AREA2&lt;/span&gt; &lt;span style="color: #1f497d;"&gt;WHERE&lt;/span&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; line-height: 115%;"&gt;feature_name =&lt;b&gt; &lt;span style="color: #4f81bd;"&gt;'BERLIN'&lt;/span&gt;;&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
&amp;nbsp;Das Ergebnis bildet ein vollständiges KML-Dokument:&lt;br /&gt;
&lt;blockquote style="background-color: #eeeeee;"&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;
&lt;span lang="DE" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span lang="DE" style="color: #990000; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;kml&lt;/span&gt;&lt;span lang="DE" style="color: red; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt; xmlns&lt;/span&gt;&lt;span lang="DE" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;="&lt;/span&gt;&lt;b&gt;&lt;span lang="DE" style="color: red; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;http://www.opengis.net/kml/2.2&lt;/span&gt;&lt;/b&gt;&lt;span lang="DE" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;"&amp;gt;&lt;/span&gt;&lt;span lang="DE" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;
&lt;span lang="DE" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span lang="DE" style="color: #990000; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;Document&lt;/span&gt;&lt;span lang="DE" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span lang="DE" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;
&lt;span lang="DE" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span lang="DE" style="color: #990000; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;Placemark&lt;/span&gt;&lt;span lang="DE" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span lang="DE" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;
&lt;span lang="DE" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span lang="DE" style="color: #990000; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;name&lt;/span&gt;&lt;span lang="DE" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;gt;&lt;/span&gt;&lt;b&gt;&lt;span lang="DE" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;Berlin&lt;/span&gt;&lt;/b&gt;&lt;span lang="DE" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span lang="DE" style="color: #990000; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;name&lt;/span&gt;&lt;span lang="DE" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span lang="DE" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;
&lt;span lang="DE" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span lang="DE" style="color: #990000; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;Description&lt;/span&gt;&lt;span lang="DE" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;gt;&lt;/span&gt;&lt;b&gt;&lt;span lang="DE" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;Flaeche des Bundeslandes Berlin&lt;/span&gt;&lt;/b&gt;&lt;span lang="DE" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span lang="DE" style="color: #990000; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;Description&lt;/span&gt;&lt;span lang="DE" style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span lang="DE" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;
&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #990000; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;Polygon&lt;/span&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;
&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #990000; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;extrude&lt;/span&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;gt;&lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;0&lt;/span&gt;&lt;/b&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #990000; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;extrude&lt;/span&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;
&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #990000; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;tessellate&lt;/span&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;gt;&lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;0&lt;/span&gt;&lt;/b&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #990000; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;tessellate&lt;/span&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;
&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #990000; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;altitudeMode&lt;/span&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;gt;&lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;relativeToGround&lt;/span&gt;&lt;/b&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #990000; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;altitudeMode&lt;/span&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;
&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #990000; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;outerBoundaryIs&lt;/span&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;
&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #990000; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;LinearRing&lt;/span&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;
&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #990000; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;coordinates&lt;/span&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: red; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;13.56177,52.5804
13.54188,52.58915 13.53483,52.59068 13.50847,52.59241 13.49723,52.60583
13.49827,52.60961 13.50573,52.62563 13.51852,52.63162 13.52244,52.64464
13.5124,52.64478 13.49034,52.65466 ...&lt;br /&gt;
...&lt;br /&gt;
...&lt;br /&gt;13.62592,52.53013 13.62523,52.53815 13.63451,52.53879 13.63662,52.54234
13.58706,52.54958 13.58239,52.56993 13.56894,52.57295 13.56177,52.5804&lt;/span&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #990000; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;coordinates&lt;/span&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;
&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #990000; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;LinearRing&lt;/span&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;
&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #990000; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;outerBoundaryIs&lt;/span&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;
&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #990000; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;Polygon&lt;/span&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;
&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #990000; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;Placemark&lt;/span&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;
&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #990000; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;Document&lt;/span&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; line-height: 115%;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #990000; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; line-height: 115%;"&gt;kml&lt;/span&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; line-height: 115%;"&gt;&amp;gt;&lt;/span&gt;&lt;/blockquote&gt;
Speichern Sie das Dokument ab und öffnen Sie es in Google Earth:&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/---7GjKF7u5Y/TeOdCYNtWfI/AAAAAAAAAHc/f3hzqGPbvSk/s1600/Berlin_GE.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="262" src="http://3.bp.blogspot.com/---7GjKF7u5Y/TeOdCYNtWfI/AAAAAAAAAHc/f3hzqGPbvSk/s320/Berlin_GE.jpg" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Spatiale Geometrie in Google Earth &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div style="text-align: justify;"&gt;
Mit Hilfe der XML-Funktionen können Sie das KML-Dokument erweitern und weitere Attribute hinzufügen. Probieren Sie diese Abfrage aus: &lt;/div&gt;
&lt;br /&gt;
&lt;blockquote style="background-color: #eeeeee;"&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; text-align: justify;"&gt;
&lt;b&gt;&lt;span style="color: #1f497d; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;SELECT&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; text-align: justify;"&gt;
&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;nbsp; &lt;span style="color: #1f497d;"&gt;xmlelement&lt;/span&gt;("kml", &lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; text-align: justify;"&gt;
&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: #1f497d;"&gt;xmlattributes&lt;/span&gt;('http://www.opengis.net/kml/2.2' as
"xmlns"),&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; text-align: justify;"&gt;
&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: #1f497d;"&gt;xmlelement&lt;/span&gt;("Document",&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; text-align: justify;"&gt;
&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #1f497d;"&gt;xmlelement&lt;/span&gt;("name", 'Berlin.kml'),&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; text-align: justify;"&gt;
&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #1f497d;"&gt;xmlelement&lt;/span&gt;("StyleMap", XMLATTRIBUTES('mp' as
"id"),&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; text-align: justify;"&gt;
&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color: #1f497d;"&gt;xmlelement&lt;/span&gt;("Pair", &lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; text-align: justify;"&gt;
&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #1f497d;"&gt;xmlelement&lt;/span&gt;("key",'normal'),&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; text-align: justify;"&gt;
&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #1f497d;"&gt;xmlelement&lt;/span&gt;("styleUrl",'#mp_border')&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; text-align: justify;"&gt;
&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;)&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; text-align: justify;"&gt;
&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ),&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; text-align: justify;"&gt;
&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #1f497d;"&gt;xmlelement&lt;/span&gt;("Style", XMLATTRIBUTES('mp_border' as
"id"),&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; text-align: justify;"&gt;
&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color: #1f497d;"&gt;xmlelement&lt;/span&gt;("LineStyle",&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; text-align: justify;"&gt;
&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #1f497d;"&gt;xmlelement&lt;/span&gt;("color",'ffff0000'),&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; text-align: justify;"&gt;
&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #1f497d;"&gt;xmlelement&lt;/span&gt;("width",'10')&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; text-align: justify;"&gt;
&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;)&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; text-align: justify;"&gt;
&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ),&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; text-align: justify;"&gt;
&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #1f497d;"&gt;xmlelement&lt;/span&gt;("Placemark", &lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; text-align: justify;"&gt;
&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #1f497d;"&gt;xmlelement&lt;/span&gt;("name", 'Berlin'),&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; text-align: justify;"&gt;
&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #1f497d;"&gt;xmlelement&lt;/span&gt;("styleUrl", '#mp'),&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; text-align: justify;"&gt;
&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span lang="DE" style="color: #1f497d; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;xmlelement&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span lang="DE" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;("Description",
'Flaeche des Bundeslandes Berlin'),&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; text-align: justify;"&gt;
&lt;b&gt;&lt;span lang="DE" style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="color: #1f497d; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;xmltype&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;(sdo_util.to_kmlgeometry(geometry))&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; text-align: justify;"&gt;
&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt; text-align: justify;"&gt;
&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt;"&gt;&amp;nbsp;&amp;nbsp; )&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; line-height: 115%;"&gt;&amp;nbsp; )&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; line-height: 115%;"&gt;
&lt;span style="color: #1f497d;"&gt;FROM&amp;nbsp; M_ADMIN_AREA2&lt;/span&gt; &lt;span style="color: #1f497d;"&gt;WHERE&lt;/span&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; line-height: 115%;"&gt;feature_name =&lt;b&gt; &lt;span style="color: #4f81bd;"&gt;'BERLIN'&lt;/span&gt;;&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
Als Ergebnis erhalten Sie einen blauen Rand um die angezeigte Geometrie:&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-HnugajqOh20/TeOfnuvZ6VI/AAAAAAAAAHg/rR10ZbU7lus/s1600/Berlin_GE_OR.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="262" src="http://4.bp.blogspot.com/-HnugajqOh20/TeOfnuvZ6VI/AAAAAAAAAHg/rR10ZbU7lus/s320/Berlin_GE_OR.jpg" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Spatiale Geometrie mit blauer Umrandung in Google Earth&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109619187990598765-8765021996414835768?l=oracle-spatial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle-spatial.blogspot.com/feeds/8765021996414835768/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://oracle-spatial.blogspot.com/2011/05/aus-oracle-nach-google-earth-mit-hilfe.html#comment-form' title='1 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/8765021996414835768'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/8765021996414835768'/><link rel='alternate' type='text/html' href='http://oracle-spatial.blogspot.com/2011/05/aus-oracle-nach-google-earth-mit-hilfe.html' title='Aus Oracle nach Google Earth mit Hilfe von KML'/><author><name>Michal Soszynski</name><uri>http://www.blogger.com/profile/07311106828172193258</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/---7GjKF7u5Y/TeOdCYNtWfI/AAAAAAAAAHc/f3hzqGPbvSk/s72-c/Berlin_GE.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109619187990598765.post-1173074161675185879</id><published>2011-05-26T10:50:00.011+02:00</published><updated>2011-06-17T10:10:32.907+02:00</updated><title type='text'>Toleranz und Performanz bei räumlichen Abfragen</title><content type='html'>&lt;div&gt;
In diesem Blogeintrag soll es um die Frage gehen, ob unterschiedliche Werte für den Toleranzparameter Einfluss auf die Performanz räumlicher Abfragen haben.
&lt;/div&gt;
&lt;div&gt;
Die Datenbank arbeitet mit Toleranzen sowohl bei der Definition der SDO-Metadaten als auch bei räumlichen Abfragen. Die Toleranz steht dabei für den Abstand, den 2 (Stütz-)Punkte maximal haben dürfen, um sie als identisch anzusehen. Die Toleranz ist somit ein Mass für die Genauigkeit räumlicher Daten.
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;h2&gt;

Testsituation&lt;/h2&gt;
Um die anfangs aufgeworfene Frage zu beantworten, wurden zwei Testreihen aufgesetzt, bei denen verschiedene räumliche Funktionen mit skalierenden Toleranzen zur Anwendung kommen. Zwei Testreihen deshalb, um die Auswirkungen für einen relativ kleinen (~8.200 Sätze) und einen größeren Datenbestand (~830.000 Sätze) zu untersuchen.&lt;br /&gt;
Die Testdaten, ausschliesslich Polygone  mit den 5-stelligen Postleitzahlgeometrien von Deutschland, wurden vom Oracle-Partner &lt;a href="http://www.gfk-geomarketing.de/landkarten/landkartensamples/oracle.html"&gt;GfK GeoMarketing&lt;/a&gt; bereitgestellt. Das verwendete Koordinatensystem ist 8307, die Metadaten sind mit einer Toleranz von 0,05 (5 cm) registriert. &lt;/div&gt;
&lt;div&gt;
An räumlichen Funktionen wurden verwendet:
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;SDO_GEOM.RELATE
&lt;/li&gt;
&lt;li&gt;SDO_GEOM.SDO_ALPHA_SHAPE&lt;/li&gt;
&lt;li&gt;SDO_GEOM.SDO_AREA&lt;/li&gt;
&lt;li&gt;SDO_GEOM.SDO_BUFFER&lt;/li&gt;
&lt;li&gt;SDO_GEOM.SDO_CENTROID&lt;/li&gt;
&lt;li&gt;SDO_GEOM.SDO_CONCAVEHULL&lt;/li&gt;
&lt;li&gt;SDO_GEOM.SDO_CONVEXHULL&lt;/li&gt;
&lt;li&gt;SDO_GEOM.SDO_CONCAVEHULL&lt;/li&gt;
&lt;li&gt;SDO_GEOM.SDO_DIFFERENCE&lt;/li&gt;
&lt;li&gt;SDO_GEOM.SDO_DISTANCE&lt;/li&gt;
&lt;li&gt;SDO_GEOM.SDO_INTERSECTION&lt;/li&gt;
&lt;li&gt;SDO_GEOM.SDO_TRIANGULATE&lt;/li&gt;
&lt;li&gt;SDO_GEOM.SDO_UION&lt;/li&gt;
&lt;li&gt;SDO_GEOM.SIMPLIFY_GEOMETRY&lt;/li&gt;
&lt;/ul&gt;
Die Toleranz wurde angefangen mit dem Wert 0.1 (10 cm) pro Iteration verdoppelt bis zum Maximalwert von ~205 (m).&lt;/div&gt;
&lt;div&gt;
Für die Testsituation wurden nach dem Anlegen der Testtabellen aktuelle Statistiken berechnet.
&lt;/div&gt;
&lt;pre name="code" class="sql"&gt;
begin 
&amp;nbsp;&amp;nbsp;DBMS_STATS.GATHER_TABLE_STATS (
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ownname =&amp;gt; '"GFK"',
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tabname =&amp;gt; '"TEST_TOL_IMPACT"',
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;estimate_percent =&amp;gt; 100
&amp;nbsp;&amp;nbsp;);
end;
&lt;/pre&gt;
&lt;div&gt;
Außerdem wurden bei jeder Iteration sowohl Shared Pool als auch Buffer Cache geleert. 
&lt;/div&gt;
&lt;pre name="code" class="sql"&gt;
alter system flush buffer_cache;
alter system flush shared_pool;
-- Hierfür benötigt der Nutzer &lt;i&gt;alter system&lt;/i&gt; Recht 
&lt;/pre&gt;
&lt;div&gt;
Dieses Vorgehen ist ausdrücklich nicht für produktive Umgebungen zu empfehlen, dient aber hier der Vergleichbarkeit der Ausführungszeiten.&lt;br /&gt;
Diese wurden gemessen, indem für jede räumliche Abfrage vorher als auch hinterher die &lt;i&gt;Total Time&lt;/i&gt; sowie &lt;i&gt;CPU Time&lt;/i&gt; mittels zweier PL/SQL Funktionen gemessen wurde. 
&lt;/div&gt;
&lt;pre name="code" class="sql"&gt;
-- Gesamtzeit
create or replace function measure_total_time 
return 
  pls_integer
is
begin
  return dbms_utility.get_time;
end measure_total_time;
/
-- CPU Zeit
create or replace function measure_cpu_time 
return 
  pls_integer
is
begin
  return dbms_utility.get_cpu_time;
end measure_cpu_time;
/
-- Für die Ausführung benötigt der Nutzer das Recht EXECUTE auf dem Package &lt;i&gt;dbms_utility&lt;/i&gt;
&lt;/pre&gt;
&lt;div&gt;
Die Differenz der vorher und nachher gemessenen &lt;a href="http://download.oracle.com/docs/cd/E11882_01/appdev.112/e16760/d_util.htm#i1003768"&gt;Werte jeweils geteilt durch 100&lt;/a&gt; ergibt die Ausführungs- bzw. CPU-Zeit in Sekunden.
&lt;/div&gt;
&lt;div&gt;
Alle Messwerte wurden in 2 Ergebnistabellen festgehalten, mit APEX-Bordmitteln  ausgewertet und grafisch als &lt;i&gt;2D Line Charts&lt;/i&gt; mit je einer Serie pro räumlicher Funktion aufbereitet. Die Ergebnisse sind in den  Abbildungen am Ende dieses Blogeintrags zu sehen.
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;h2&gt;

Welche Erkenntnisse liefern die Messwerte?&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Die Annahme, dass die Ausführungszeiten mit geringer werdenden Toleranzwerten (also höherer Genauigkeit) korreliert, hat sich bei keiner der räumlichen Funktionen bestät.&lt;/li&gt;
&lt;li&gt;Die gemessenen Zeiten für Testreihe 2 (~830.000 Sätze) sind vergleichbar mit denen von Testreihe 1 (~8.200 ätze).&lt;/li&gt;
&lt;li&gt;Mit gemessenen CPU-Zeiten bis maximal 0,3 sec und durchschnittlichen Gesamtzeiten von 1,3 (Testreihe 1) und 1,5 (Testreihe 2) waren die Abfragen trotz &lt;i&gt;flush shared_pool&lt;/i&gt; und &lt;i&gt;flush buffer_cache&lt;/i&gt; recht performant.&lt;br /&gt; Als Testsystem diente ein 64bit Laptop mit Intel i5 Prozessor und 4 GB als maximaler SGA Grösse.&lt;/li&gt;
&lt;/ul&gt;
An dieser Stelle möchte ich noch mal darauf hinweisen, dass im Gegensatz zu den Ausführungszeiten die jeweiligen Ergebnismengen &lt;u&gt;nicht&lt;/u&gt; im Fokus der Tests standen.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;h2&gt;

Fazit&lt;/h2&gt;
Räumliche Abfragen können jeweils mit einer im Hinblick 
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;auf die Genauigkeit des Datenbestandes und&lt;/li&gt;
&lt;li&gt;die erwartete Ergebnismenge&lt;/li&gt;
&lt;/ul&gt;
passenden Toleranz ausgeführt werden, &lt;u&gt;ohne&lt;/u&gt; dass dies signifikante Auswirkungen auf die Performanz hat.
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;h2&gt;

Abbildungen&lt;/h2&gt;
&lt;/div&gt;
&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-YMgrOkjQTws/Td4FFGms69I/AAAAAAAAABc/aoO_pEXIujo/s1600/Capture_Testreihe1_ElapsedTime.JPG" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="262" src="http://1.bp.blogspot.com/-YMgrOkjQTws/Td4FFGms69I/AAAAAAAAABc/aoO_pEXIujo/s400/Capture_Testreihe1_ElapsedTime.JPG" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Testreihe 1 - Total Time&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-72esx_8Rz6c/Td4E8aDe8bI/AAAAAAAAABU/YTY_gbqIoCs/s1600/Capture_Testreihe1_CPUTime.JPG" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="262" src="http://4.bp.blogspot.com/-72esx_8Rz6c/Td4E8aDe8bI/AAAAAAAAABU/YTY_gbqIoCs/s400/Capture_Testreihe1_CPUTime.JPG" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Testreihe 1 - CPU Time&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-EnfvGjuJnO4/Td4F0lxvryI/AAAAAAAAABk/6GFOd1O3GE0/s1600/Capture_Testreihe2_ElapsedTime.JPG" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="263" src="http://2.bp.blogspot.com/-EnfvGjuJnO4/Td4F0lxvryI/AAAAAAAAABk/6GFOd1O3GE0/s400/Capture_Testreihe2_ElapsedTime.JPG" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Testreihe 2 - Total Time&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-pv5li2QAWPU/Td4F606a1jI/AAAAAAAAABs/agYbPEKCFDQ/s1600/Capture_Testreihe2_CPUTime.JPG" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="264" src="http://2.bp.blogspot.com/-pv5li2QAWPU/Td4F606a1jI/AAAAAAAAABs/agYbPEKCFDQ/s400/Capture_Testreihe2_CPUTime.JPG" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Testreihe 2 - CPU Time&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109619187990598765-1173074161675185879?l=oracle-spatial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle-spatial.blogspot.com/feeds/1173074161675185879/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://oracle-spatial.blogspot.com/2011/05/toleranz-und-performanz-bei-raumlichen.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/1173074161675185879'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/1173074161675185879'/><link rel='alternate' type='text/html' href='http://oracle-spatial.blogspot.com/2011/05/toleranz-und-performanz-bei-raumlichen.html' title='Toleranz und Performanz bei räumlichen Abfragen'/><author><name>Karin Patenge</name><uri>http://www.blogger.com/profile/07393355977167541886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-61GiEwKbfwU/TeOFBhD8F9I/AAAAAAAAAB4/viI6bc5LLSo/s220/IMG_2722_2.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-YMgrOkjQTws/Td4FFGms69I/AAAAAAAAABc/aoO_pEXIujo/s72-c/Capture_Testreihe1_ElapsedTime.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109619187990598765.post-8814658137918098650</id><published>2011-05-05T16:02:00.003+02:00</published><updated>2011-05-05T16:06:24.190+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tts'/><category scheme='http://www.blogger.com/atom/ns#' term='export'/><category scheme='http://www.blogger.com/atom/ns#' term='tablespace'/><category scheme='http://www.blogger.com/atom/ns#' term='import'/><title type='text'>Große Geodatenmengen: In Nullkommanix mit Transportable Tablespaces</title><content type='html'>&lt;p&gt;
 Gerade im Geodaten-Bereich ist das Übertragen größerer Datenmengen von einer Datenbank
 zur anderen nicht selten. Die Standardlösung ist meist Export und Import - ab Oracle10g 
 gerne auch mit der Data Pump. Wenn man die dazu benötigte Zeit betrachtet, schlägt neben
 der Zeit, die das reine Bewegen der Daten benötigt, auch die Zeit zum Indexaufbau 
 zu Buche; denn ein Export/Import ist im Grunde genommen nichts weiter als das automatisierte
 Neu-Erstellen der Tabellen, dann finden SQL-INSERT-Operationen zum Einfügen der neuen Daten statt
 und schließlich werden die Indizies &lt;i&gt;neu gebaut&lt;/i&gt;. Und wenn die Datenmengen größer
 sind, muss man für den letzten Punkt schon etwas Zeit einplanen.
&lt;/p&gt;
&lt;p&gt;
 NAVTEQ stellt seine Daten für Oracle Spatial (Kartendarstellung, Geocoding und Routing in der Datenbank)
 daher als Transportable Tablespace bereit. 150G Daten für die EU lassen sich so in 15 Minuten 
 einspielen - obwohl die Neu-Erstellung aller Spatial-Indizes alleine sicherlich mehrere Stunden
 brauchen würde. Und diese Möglichkeit ist nicht NAVTEQ alleine vorbehalten. Transportable Tablespaces
 können mit jeder Datenbank bereitgestellt werden (Export), möchte man sie importieren, so wird
 eine Enterprise Edition benötigt.
&lt;/p&gt;
&lt;p&gt;
 Verwendet man Transportable Tablespaces, so exportiert das Export-Werkzeug (expdp) nur noch
 die Metadaten - es wird keine einzige Tabellenzeile bewegt. Zum Übertragen der Daten wird dann
 schließlich die &lt;i&gt;Orginal-Datendatei&lt;/i&gt; vom Quell- auf das Zielsystem kopiert. Beim Importieren
 der Metadaten wird die Datei schließlich in die Datenbank eingehängt und alle Daten sind sofort 
 da - auch alle Spatial-Indizes stehen &lt;i&gt;sofort&lt;/i&gt; bereit. Und im folgenden ist anhand eines
 Beispiels beschrieben, wie man mit Transportable Tablespaces arbeitet.
&lt;/p&gt;
&lt;h1&gt;
 Export: Vorbereitungen
&lt;/h1&gt;
&lt;p&gt;
 Zunächst muss überpüft werden, ob das Tablespace &lt;i&gt;self-contained&lt;/i&gt; ist, das heißt, dass keine
 Abhängigkeiten zu Objekten in anderen Tablespaces vorhanden sind. Diese Prüfung muss man nicht selbst
 machen, die Prozedur &lt;a href="http://download.oracle.com/docs/cd/E11882_01/appdev.112/e16760/d_tts.htm#BEIBHJBJ" target="_blank"&gt;DBMS_TTS.TRANSPORT_SET_CHECK&lt;/a&gt; übernimmt das. Der folgende Aufruf prüft also nach,
 ob der Tablespace &lt;b&gt;GEOWS&lt;/b&gt; problemlos zu einer anderen Datenbank transportiert werden kann.
&lt;/p&gt;
&lt;pre&gt;
begin
  DBMS_TTS.TRANSPORT_SET_CHECK('GEOWS', TRUE, TRUE);
end;
&lt;/pre&gt;  
&lt;p&gt;
 Die Ergebnisse der Prüfung finden sich dann in der Dictionary View &lt;b&gt;TRANSPORT_SET_VIOLATIONS&lt;/b&gt;.
&lt;/p&gt;
&lt;pre&gt;
SQL&amp;gt; select * from transport_set_violations;

no rows selected.
&lt;/pre&gt;
&lt;p&gt;
Wenn man auf einer 11.2-Datenbank arbeitet, kann der nächste Schritt übersprungen werden. Alle anderen
müssen nun die Spatial-Indizes "vorbereiten"; es müssen Metainformationen aufgezeichnet werden, damit 
die Indizes auf der Zieldatenbank wiederhergestellt werden können. Das geht mit der Prozedur 
&lt;a href="http://download.oracle.com/docs/cd/E11882_01/appdev.112/e11830/sdo_util.htm#BJEIJDBG" target="_blank"&gt;SDO_UTIL.PREPARE_FOR_TTS&lt;/a&gt; wie folgt (man muss als
Eigentümer der Daten eingeloggt sein).
&lt;/p&gt;
&lt;pre&gt;
begin
  sdo_util.prepare_for_tts;
end;
&lt;/pre&gt;
&lt;p&gt;
 Wie gesagt: Ab Datenbankversion 11.2 ist das nicht mehr nötig. Die dann folgenden Schritte
müssen wiederum bei allen Datenbankversionen durchgeführt werden: Da die Datendatei mit Betriebssystem-Mitteln kopiert werden wird, darf die Datenbank sie nicht mehr verändern. Jetzt ist also der richtige Zeitpunkt, das
 Tablespace &lt;i&gt;read only&lt;/i&gt; zu setzen. Also als DBA:
&lt;/p&gt; 
&lt;pre&gt;
alter tablespace geows read only;
&lt;/pre&gt;
&lt;h1&gt;
 Export
&lt;/h1&gt;
&lt;p&gt;
Nun erfolgt das eigentliche Exportieren mit der Data Pump. Es wird ein Directory-Objekt benötigt, in welches
die Data Pump das Dumpfile (welches nur noch Metadaten enthält) schreiben soll. Das wird als DBA angelegt.
&lt;/p&gt;
&lt;pre&gt;
create directory expdir as '/path/to/folder/for/dumpfile';
&lt;/pre&gt;
&lt;p&gt;
Und dann kommt das eigentliche Exportieren ... auch das wird als DBA durchgeführt und nicht als
Schema-Eigentümer.
&lt;/p&gt;
&lt;pre&gt;
$ expdp userid=system/&lt;i&gt;{password}&lt;/i&gt; 
        dumpfile=geows.dmp 
        directory=expdir 
        transport_tablespaces=geows 
        logfile=exp_geows.log

Export: Release 11.2.0.2.0 - Production on Thu May 5 13:44:03 2011

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining
and Real Application Testing options
Starting "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01":  userid=system/******** dumpfile=geows.dmp directory=homedir transport_tablespaces=geows logfile=exp_geows.log
Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK
Processing object type TRANSPORTABLE_EXPORT/TABLE
Processing object type TRANSPORTABLE_EXPORT/GRANT/OWNER_GRANT/OBJECT_GRANT
Processing object type TRANSPORTABLE_EXPORT/TABLE_STATISTICS
Processing object type TRANSPORTABLE_EXPORT/DOMAIN_INDEX/TABLE
Processing object type TRANSPORTABLE_EXPORT/DOMAIN_INDEX/INDEX
Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
Master table "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01" successfully loaded/unloaded
******************************************************************************
Dump file set for SYSTEM.SYS_EXPORT_TRANSPORTABLE_01 is:
  /path/to/folder/for/dumpfile/geows.dmp
******************************************************************************
Datafiles required for transportable tablespace GEOWS:
  /opt/oracle/oradata/orcl/geows01.dbf
Job "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01" successfully completed at 13:45:30
&lt;/pre&gt;
&lt;p&gt;
 Die letzten vier Zeilen der Ausgabe beschreiben, wo die nötigen Dateien zu finden sind;
 diese können jetzt mit Betriebssystemmitteln kopiert, als Archiv gepackt und auf das
 Zielsystem übertragen, auf CD gebrannt oder zum Download bereitgestellt werden.
&lt;/p&gt;
&lt;h1&gt;
 Import: Vorbereitungen
&lt;/h1&gt;
&lt;p&gt;
 Auf dem Zielsystem muss zunächst das Datenbankschema angelegt werden. Es sollte (wie immer)
 alle Privilegien haben, die auch auf dem Quellsystem vorhanden waren. Als nächstes muss ein 
 Blick auf die Betriebssystem-Plattformen von Quell- und Zielsystem geworfen werden.
&lt;/p&gt;
&lt;p&gt;
 Denn wie Oracle die Bytes in seinen Datendateien anordnet, hängt von der Plattform ab. 
 &lt;i&gt;Big Endian&lt;/i&gt;-Plattformen arbeiten anders als &lt;i&gt;Little Endian&lt;/i&gt;-Plattformen. Aber
 die Datenbank weiß Bescheid.
&lt;/p&gt;
&lt;pre&gt;
SQL&amp;gt; SELECT * FROM V$TRANSPORTABLE_PLATFORM ORDER BY PLATFORM_NAME

PLATFORM_ID PLATFORM_NAME                        ENDIAN_FORMAT
----------- ------------------------------------ --------------
          6 AIX-Based Systems (64-bit)           Big
         16 Apple Mac OS                         Big
         21 Apple Mac OS (x86-64)                Little
         19 HP IA Open VMS                       Little
          4 HP-UX IA (64-bit)                    Big
         18 IBM Power Based Linux                Big
          9 IBM zSeries Based Linux              Big
         10 Linux IA (32-bit)                    Little
         11 Linux IA (64-bit)                    Little
         13 Linux x86 64-bit                     Little
          7 Microsoft Windows IA (32-bit)        Little
         12 Microsoft Windows x86 64-bit         Little
         17 Solaris Operating System (x86)       Little
          : :                                    :
&lt;/pre&gt;
&lt;p&gt;
 Die Datendateien können also von einer Linux- problemlos auf eine Windows-Plattform
 übertragen werden, da beide Plattformen &lt;i&gt;Little-Endian&lt;/i&gt;-Plattformen sind. Beim
 Übertragen von Windows auf bspw. HP-UX IA 64bit wird es dagegen Probleme geben - die Datenbank
 dort könnte die Dateien gar nicht lesen. Aber das ist kein Problem - denn die Dateien können
 konvertiert werden. Diese Konvertierung wird mit dem RMAN-Werkzeug und dem Kommando
 &lt;a href="http://download.oracle.com/docs/cd/E11882_01/backup.112/e10643/rcmsynta012.htm#RCMRF192" target="_blank"&gt;CONVERT&lt;/a&gt; entwieder auf dem Quell-
 oder auf dem Zielsystem durchgeführt - je nachdem, ob man die Zielplattform beim Exportieren 
 schon kennt oder nicht.  
&lt;/p&gt;
&lt;p&gt;
 Konvertiert man auf dem Quellsystem, so verwendet man das RMAN-Kommando &lt;b&gt;CONVERT TABLESPACE&lt;/b&gt;.
&lt;/p&gt;
&lt;pre&gt;
$ RMAN TARGET /
 
Recovery Manager: Release 11.2.0.2.0
 
Copyright (c) 1982, 2009, Oracle.  All rights reserved.

connected to target database: ORCL (DBID=1277326448)

RMAN&amp;gt; convert tablespace geows
      to_platform = "HP-UX (64-bit)"
      format='/home/oracle/hpux%U';

Starting conversion at source at 05-MAY-11
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile conversion
input datafile file number=00008 name=/opt/oracle/oradata/orcl/geows01.dbf
converted datafile=/home/oracle/hpuxdata_D-ORCL_I-1277326448_TS-GEOWS_FNO-8_01mbiqgn
channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:25
Finished conversion at source at 05-MAY-11
&lt;/pre&gt;
&lt;p&gt;
 Konvertiert man auf dem Zielsystem, so nutzt man das Kommando &lt;b&gt;CONVERT DATAFILE&lt;/b&gt;.
&lt;/p&gt;
&lt;pre&gt;
$ RMAN TARGET /
 
Recovery Manager: Release 11.2.0.2.0
 
Copyright (c) 1982, 2009, Oracle.  All rights reserved.

connected to target database: ORCL (DBID=1277326448)

RMAN&amp;gt; convert datafile '/home/oracle/geows01_hpux.dbf'
      TO PLATFORM="Linux IA (32-bit)"
      FROM PLATFORM="HP-UX (64-bit)"
      DB_FILE_NAME_CONVERT=
        '/geows01_hpux'
        '/geows01_linux';

Starting conversion at target at 05-MAY-11
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=61 device type=DISK
channel ORA_DISK_1: starting datafile conversion
input file name=/home/oracle/geows01_hpux.dbf
converted datafile=/home/oracle/geows01_linux.dbf
channel ORA_DISK_1: datafile conversion complete, elapsed time: 00:00:16
Finished conversion at target at 05-MAY-11
&lt;/pre&gt;
&lt;h1&gt;
 Importieren
&lt;/h1&gt;
&lt;p&gt;
 Als nächstes wird die (ggfs. konvertierte) Datendatei dorthin kopiert, wo sie später liegen soll; 
 auf den meisten Systemen dürfte das dort sein, wo auch schon die anderen Datenbankdateien liegen.
 Der nächste Schritt ist nun das Einspielen der Metadaten und das Einhängen der Datendatei in
 die Datenbank mit dem Data Pump-Werkzeug &lt;b&gt;impdp&lt;/b&gt;.
&lt;/p&gt;
&lt;pre&gt;
$ impdp userid=system/oracle 
        dumpfile=geows.dmp 
        directory=homedir 
        transport_datafiles=/location/where/datafile/has/been/copied/to/geows01_linux.dbf 
        logfile=import.log

Import: Release 11.2.0.2.0 - Production on Thu May 5 14:26:10 2011

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Produc               tion
With the Partitioning, Oracle Label Security, OLAP, Data Mining
and Real Application Testing options
Master table "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" successfully loaded/unloaded
Starting "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01":  userid=system/******** dumpfil               e=geows.dmp directory=homedir transport_datafiles=/opt/oracle/oradata/orcl/geows               01.dbf logfile=import.log
Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK
Processing object type TRANSPORTABLE_EXPORT/TABLE
Processing object type TRANSPORTABLE_EXPORT/GRANT/OWNER_GRANT/OBJECT_GRANT
Processing object type TRANSPORTABLE_EXPORT/TABLE_STATISTICS
Processing object type TRANSPORTABLE_EXPORT/DOMAIN_INDEX/TABLE
Processing object type TRANSPORTABLE_EXPORT/DOMAIN_INDEX/INDEX
Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
Job "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" successfully completed at 14:26:31
&lt;/pre&gt;
&lt;p&gt;
 Dieser Vorgang dauert unabhängig von der Größe der übertragenen Tablespaces nur wenige Sekunden. Auch
 extrem große Datenmengen lassen sich so sehr einfach einspielen. Wenn &lt;b&gt;impdp&lt;/b&gt; fertig ist, sind alle
 Daten im Schema vorhanden und man kann schon (fast) loslegen.
&lt;/p&gt;
&lt;h1&gt;
 Spatial-Indizes initialisieren
&lt;/h1&gt;
&lt;p&gt;
 Weiter oben wurde bereits geschrieben, dass die Spatial-Indizes mit &lt;b&gt;SDO_UTIL.PREPARE_FOR_TTS&lt;/b&gt;
 "vorbereitet" werden müssen, &lt;i&gt;wenn die Datenbankversion 11.1 oder niedriger ist&lt;/i&gt;. Ab Datenbankversion
 11.2 ist der Schritt nicht nötig. Werden auf diese Weise "vorbereitete" Spatial-Indizes in das Zielsystem
 eingespielt, so müssen diese mit &lt;a href="http://download.oracle.com/docs/cd/E11882_01/appdev.112/e11830/sdo_util.htm#BJEIFEEH" target="_blank"&gt;SDO_UTIL.INITIALIZE_INDEXES_FOR_TTS&lt;/a&gt; initialisiert werden. Die 
  &lt;a href="http://download.oracle.com/docs/cd/E11882_01/appdev.112/e11830/sdo_util.htm#BJEIFEEH" target="_blank"&gt;Dokumentation&lt;/a&gt; beschreibt, wie das Kommando ausgeführt werden muss. Die Initialisierung muss auch 
 durchgeführt werden, wenn das Quellsystem zwar eine 11.2-Datenbank ist, die Datendateien aber wegen
 unterschiedlicher Plattformen konvertiert werden mussten. Der Aufruf ist in beiden Fällen recht
 einfach:
&lt;/p&gt;
&lt;pre&gt;
begin
  sdo_util.initialize_indexes_for_tts;
end;
&lt;/pre&gt;
&lt;p&gt;
 Wurden die Daten aus einer Datenbankversion "vor" 11.2 exportiert, so muss für jeden Spatial-Index
 noch folgendes Kommando ablaufen ...
&lt;/p&gt;
&lt;pre&gt;
ALTER INDEX &lt;i&gt;{spatial-index-name}&lt;/i&gt; PARAMETERS ('CLEAR_TTS=TRUE');
&lt;/pre&gt;
&lt;p&gt;
 Das kann recht einfach per Skript erledigt werden.
&lt;/p&gt;
&lt;pre&gt;
&lt;font color="#804040"&gt;&lt;b&gt;declare&lt;/b&gt;&lt;/font&gt;
  v_ddl &lt;font color="#2e8b57"&gt;&lt;b&gt;varchar2&lt;/b&gt;&lt;/font&gt;(&lt;font color="#ff00ff"&gt;200&lt;/font&gt;);
&lt;font color="#804040"&gt;&lt;b&gt;begin&lt;/b&gt;&lt;/font&gt;
  &lt;font color="#804040"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/font&gt; i &lt;font color="#804040"&gt;&lt;b&gt;in&lt;/b&gt;&lt;/font&gt; (
    &lt;font color="#008080"&gt;select&lt;/font&gt; sdo.sdo_index_name
    &lt;font color="#008080"&gt;from&lt;/font&gt; user_sdo_index_metadata sdo, user_tables ut 
    &lt;font color="#008080"&gt;where&lt;/font&gt; ut.table_name &lt;font color="#804040"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt; sdo.sdo_index_table
    &lt;font color="#804040"&gt;&lt;b&gt;and&lt;/b&gt;&lt;/font&gt; ut.tablespace_name &lt;font color="#804040"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/font&gt; &lt;font color="#ff00ff"&gt;'GEOWS'&lt;/font&gt;
  ) &lt;font color="#804040"&gt;&lt;b&gt;loop&lt;/b&gt;&lt;/font&gt;
    v_ddl &lt;font color="#804040"&gt;&lt;b&gt;:=&lt;/b&gt;&lt;/font&gt; &lt;font color="#ff00ff"&gt;'alter index '&lt;/font&gt; &lt;font color="#804040"&gt;&lt;b&gt;||&lt;/b&gt;&lt;/font&gt; i.sdo_index_name &lt;font color="#804040"&gt;&lt;b&gt;||&lt;/b&gt;&lt;/font&gt; &lt;font color="#ff00ff"&gt;' parameters (''CLEAR_TTS=TRUE'')'&lt;/font&gt;;
    &lt;font color="#804040"&gt;&lt;b&gt;execute&lt;/b&gt;&lt;/font&gt; &lt;font color="#804040"&gt;&lt;b&gt;immediate&lt;/b&gt;&lt;/font&gt; v_ddl;
    dbms_output.put_line(v_ddl &lt;font color="#804040"&gt;&lt;b&gt;||&lt;/b&gt;&lt;/font&gt; &lt;font color="#ff00ff"&gt;' executed.'&lt;/font&gt;);
  &lt;font color="#804040"&gt;&lt;b&gt;end loop&lt;/b&gt;&lt;/font&gt;;
&lt;font color="#804040"&gt;&lt;b&gt;end&lt;/b&gt;&lt;/font&gt;;
&lt;/pre&gt;   
&lt;p&gt;
 Und dann ist der Vorgang abgeschlossen. Im Vergleich zu einem "normalen" Export und Import ist
 das sicherlich etwas aufwändiger und es sind mehr Dinge, auf die man achten muss ... aber die
 Vorteile kommen, sobald die Datenmengen etwas größer werden. Als ich vor einigen Wochen einen
 größeren Datenbestand (gezippt 400MB) einspielen musste, war der "klassische" Import ca. 
 2 Stunden beschäftigt. Mit Transportable Tablespaces wäre es eine Sache von drei Minuten gewesen. Und
 wenn man nun daran denkt, dass manche Datenbestände regelmäßig aktualisiert werden müssen ... 
&lt;/p&gt;
&lt;p&gt;
 ... ach ja: genau hier kann man auch von Anbietern wie NAVTEQ lernen. Denn bei regelmäßigen
 Aktualisierungen kommt es ja unter Umständen zur Situation, dass man das neue Tablespace gerne
 einspielen, die alte Version aber vielleicht gerne behalten möchte. In solchen Fällen ist es also
 durchaus sinnvoll, die "Versionsnummer" in den Namen des Tablespace und des Datenbankschemas
 aufzunehmen. NAVTEQ macht es so: Das ODF-Dataset Q3/2010 wird in den Tablespace &lt;b&gt;ODF_EU_Q310&lt;/b&gt; und
 das Datenbankschema &lt;b&gt;ODF_EU_Q310&lt;/b&gt; eingespielt. Für andere Schemas kann man die Daten ja dann
 mit GRANT- und CREATE SYNONYM-Anweisungen sichtbar machen.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109619187990598765-8814658137918098650?l=oracle-spatial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle-spatial.blogspot.com/feeds/8814658137918098650/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://oracle-spatial.blogspot.com/2011/05/groe-geodatenmengen-in-nullkommanix-mit.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/8814658137918098650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/8814658137918098650'/><link rel='alternate' type='text/html' href='http://oracle-spatial.blogspot.com/2011/05/groe-geodatenmengen-in-nullkommanix-mit.html' title='Große Geodatenmengen: In Nullkommanix mit Transportable Tablespaces'/><author><name>Carsten Czarski</name><uri>http://www.blogger.com/profile/15040474428905002855</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109619187990598765.post-8093249267810210095</id><published>2011-03-10T11:20:00.000+01:00</published><updated>2011-03-10T11:21:02.592+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gpx convert sdo_geometry'/><title type='text'>SDO nach GPX konvertieren - ein Beispiel</title><content type='html'>&lt;div&gt;
 Für das &lt;a href="https://mydoag.doag.org/termine/termine.php?tid=417338"&gt;Treffen der DOAG SIG Spatial&lt;/a&gt;
 nächste Woche in Potsdam bereite ich gerade meinen Vortrag zum Thema &lt;b&gt;"Geodaten und XML in der Oracle-Datenbank"&lt;/b&gt;
 vor. Dabei werde ich (unter anderem) darauf eingehen, wie man mit den Mitteln der Datenbank aus
 einem SDO_GEOMETRY ein GPX-File erzeugen kann. Das kann interessant sein, wenn eine  Geometrie eine
 Route repräsentiert und man diese auf ein Navigationsgerät laden möchte ...
&lt;/div&gt;
&lt;div&gt;
 Das Generieren der GPX-Datei ist (verwendet man die &lt;a href="http://sql-plsql-de.blogspot.com/2008/11/xml-erzeugen-in-der-datenbank-ein.html"&gt;SQL/XML-Funktionen&lt;/a&gt;) sehr einfach. Hier ist eine PL/SQL-Funktion, die
 ein SDO_GEOMETRY entgegennimmt und ein GPX-File zurückgibt. 
&lt;/div&gt;
&lt;pre&gt;
&lt;font color="#804040"&gt;&lt;b&gt;create&lt;/b&gt;&lt;/font&gt; &lt;font color="#804040"&gt;&lt;b&gt;or&lt;/b&gt;&lt;/font&gt; replace &lt;font color="#6a5acd"&gt;function&lt;/font&gt; make_gpx(
  p_name &lt;font color="#804040"&gt;&lt;b&gt;in&lt;/b&gt;&lt;/font&gt; &lt;font color="#2e8b57"&gt;&lt;b&gt;varchar2&lt;/b&gt;&lt;/font&gt;,
  p_geom &lt;font color="#804040"&gt;&lt;b&gt;in&lt;/b&gt;&lt;/font&gt; sdo_geometry
) &lt;font color="#6a5acd"&gt;return&lt;/font&gt; xmltype &lt;font color="#6a5acd"&gt;is&lt;/font&gt; 
  v_gpx  xmltype;
  v_geom sdo_geometry;
&lt;font color="#6a5acd"&gt;begin&lt;/font&gt;
  &lt;font color="#0000ff"&gt;-- CHECK FOR LINESTRING GEOMETRY&lt;/font&gt;
  &lt;font color="#6a5acd"&gt;if&lt;/font&gt; &lt;font color="#804040"&gt;&lt;b&gt;not&lt;/b&gt;&lt;/font&gt; p_geom.get_gtype() = &lt;font color="#ff00ff"&gt;2&lt;/font&gt; &lt;font color="#6a5acd"&gt;then&lt;/font&gt;   
   raise_application_error(&lt;font color="#ff00ff"&gt;-20000&lt;/font&gt;, &lt;font color="#ff00ff"&gt;'CAN BUILD GPX TRACK ONLY FOR LINESTRING GEOMETRIES'&lt;/font&gt;);
  &lt;font color="#6a5acd"&gt;end&lt;/font&gt; &lt;font color="#6a5acd"&gt;if&lt;/font&gt;;
  &lt;font color="#0000ff"&gt;-- CHECK FOR LATLON GEOMETRY - TRANSFORM IF NOT &lt;/font&gt;
  &lt;font color="#6a5acd"&gt;if&lt;/font&gt; p_geom.sdo_srid &lt;font color="#804040"&gt;&lt;b&gt;not&lt;/b&gt;&lt;/font&gt; &lt;font color="#804040"&gt;&lt;b&gt;in&lt;/b&gt;&lt;/font&gt; (&lt;font color="#ff00ff"&gt;4326&lt;/font&gt;, &lt;font color="#ff00ff"&gt;8307&lt;/font&gt;) &lt;font color="#6a5acd"&gt;then&lt;/font&gt;
   v_geom := sdo_cs.transform(p_geom, &lt;font color="#ff00ff"&gt;4326&lt;/font&gt;);
  &lt;font color="#6a5acd"&gt;else&lt;/font&gt; 
   v_geom := p_geom;
  &lt;font color="#6a5acd"&gt;end&lt;/font&gt; &lt;font color="#6a5acd"&gt;if&lt;/font&gt;;
  &lt;font color="#0000ff"&gt;-- CONSTRUCT GPX XML &lt;/font&gt;
  &lt;font color="#804040"&gt;&lt;b&gt;select&lt;/b&gt;&lt;/font&gt;
   xmlelement(&lt;font color="#ff00ff"&gt;&amp;quot;gpx&amp;quot;&lt;/font&gt;, 
    xmlattributes(&lt;font color="#ff00ff"&gt;'&lt;a href="http://www.topografix.com/GPX/1/1"&gt;http://www.topografix.com/GPX/1/1&lt;/a&gt;'&lt;/font&gt; &lt;font color="#6a5acd"&gt;as&lt;/font&gt; &lt;font color="#ff00ff"&gt;&amp;quot;xmlns&amp;quot;&lt;/font&gt;),
    xmlelement(&lt;font color="#ff00ff"&gt;&amp;quot;trk&amp;quot;&lt;/font&gt;,
     xmlelement(&lt;font color="#ff00ff"&gt;&amp;quot;name&amp;quot;&lt;/font&gt;, p_name),
     xmlelement(&lt;font color="#ff00ff"&gt;&amp;quot;trkseg&amp;quot;&lt;/font&gt;, 
     (
      &lt;font color="#804040"&gt;&lt;b&gt;select&lt;/b&gt;&lt;/font&gt; 
       xmlagg(
        xmlelement(&lt;font color="#ff00ff"&gt;&amp;quot;trkpt&amp;quot;&lt;/font&gt;,
         xmlattributes(v.y &lt;font color="#6a5acd"&gt;as&lt;/font&gt; &lt;font color="#ff00ff"&gt;&amp;quot;lat&amp;quot;&lt;/font&gt;, v.x &lt;font color="#6a5acd"&gt;as&lt;/font&gt; &lt;font color="#ff00ff"&gt;&amp;quot;lon&amp;quot;&lt;/font&gt;)
        )
       )
       &lt;font color="#6a5acd"&gt;from&lt;/font&gt; &lt;font color="#6a5acd"&gt;table&lt;/font&gt;(sdo_util.getvertices(v_geom)) v
      )
     )
    )
   ) &lt;font color="#6a5acd"&gt;into&lt;/font&gt; v_gpx 
  &lt;font color="#6a5acd"&gt;from&lt;/font&gt; dual;
  &lt;font color="#6a5acd"&gt;return&lt;/font&gt; v_gpx;
&lt;font color="#6a5acd"&gt;end&lt;/font&gt;;
/
sho err
&lt;/pre&gt;
&lt;div&gt;
 Viel Spaß beim Ausprobieren ... und wer noch mehr zum Thema "Geodaten und XML" wissen
 möchte (und spontan ist), der kommt nächste Woche nach Potsdam zur &lt;b&gt;DOAG SIG Spatial&lt;/b&gt;.
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109619187990598765-8093249267810210095?l=oracle-spatial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle-spatial.blogspot.com/feeds/8093249267810210095/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://oracle-spatial.blogspot.com/2011/03/sdo-nach-gpx-konvertieren-ein-beispiel.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/8093249267810210095'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/8093249267810210095'/><link rel='alternate' type='text/html' href='http://oracle-spatial.blogspot.com/2011/03/sdo-nach-gpx-konvertieren-ein-beispiel.html' title='SDO nach GPX konvertieren - ein Beispiel'/><author><name>Carsten Czarski</name><uri>http://www.blogger.com/profile/15040474428905002855</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109619187990598765.post-5017488802643194064</id><published>2011-02-23T12:52:00.003+01:00</published><updated>2011-02-23T12:55:28.428+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='network'/><category scheme='http://www.blogger.com/atom/ns#' term='osm'/><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='sig'/><category scheme='http://www.blogger.com/atom/ns#' term='doag'/><category scheme='http://www.blogger.com/atom/ns#' term='potsdam'/><title type='text'>Treffen der DOAG SIG Spatial in Potsdam</title><content type='html'>&lt;p&gt;Am 15. März trifft sich die &lt;a href="https://mydoag.doag.org/termine/termine.php?tid=417338" target="_blank"&gt;DOAG SIG Spatial&lt;/a&gt; in Potsdam. Auf der Agenda stehen interessante Themen wie &lt;b&gt;OpenStreetMap-Daten in Oracle&lt;/b&gt;, &lt;b&gt;Geodaten und XML&lt;/b&gt;, &lt;b&gt;Tipps &amp;amp; Tricks&lt;/b&gt;, &lt;b&gt;Netzwerke und Routing&lt;/b&gt;. 
&lt;/p&gt;
&lt;p&gt;
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 ...
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109619187990598765-5017488802643194064?l=oracle-spatial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle-spatial.blogspot.com/feeds/5017488802643194064/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://oracle-spatial.blogspot.com/2011/02/treffen-der-doag-sig-spatial-in-potsdam.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/5017488802643194064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/5017488802643194064'/><link rel='alternate' type='text/html' href='http://oracle-spatial.blogspot.com/2011/02/treffen-der-doag-sig-spatial-in-potsdam.html' title='Treffen der DOAG SIG Spatial in Potsdam'/><author><name>Carsten Czarski</name><uri>http://www.blogger.com/profile/15040474428905002855</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109619187990598765.post-6769607031114131632</id><published>2011-01-27T17:03:00.000+01:00</published><updated>2011-01-27T17:03:51.397+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SecureFiles LOB Rasterdaten Vektordaten'/><title type='text'>SecureFiles - Ein kleiner Exkurs in die Niederungen der Oracle Datenbank</title><content type='html'>Vor kurzem wurde ich von einem Kunden gefragt, welche Empfehlungen es in Bezug auf die &lt;i&gt;DB Block Size&lt;/i&gt; f&amp;uuml;r das Speichern von Rasterdaten als &lt;i&gt;Large Objects&lt;/i&gt; (LOBs) gibt.&lt;br /&gt;
F&amp;uuml;r die Beantwortung dieser Frage ist das Wissen um Kernfunktionalit&amp;auml;t der Oracle Datenbank unabdingbar. Daher m&amp;ouml;chte ich einige &amp;Uuml;berlegungen an dieser Stelle mit anderen Interessierten teilen.&lt;br /&gt;
Seit Freigabe der Version 11.1 gibt es einen neuen Datentyp f&amp;uuml;r die Speicherung von grossen Objekten in der Datenbank, &lt;i&gt;SecureFiles&lt;/i&gt; genannt.&lt;br /&gt; 
Einen sehr guten Einstieg in die Nutzung von &lt;i&gt;SecureFiles&lt;/i&gt; gibt &lt;a href="http://www.oracle.com/global/de/community/dbadmin/tipps/securefile/index.html"&gt;dieser Tipp&lt;/a&gt; in der deutschsprachigen Oracle DBA Community. &lt;br /&gt;
Dar&amp;uuml;berhinaus m&amp;ouml;chte ich auch noch auf &lt;a href="http://www.databasejournal.com/features/oracle/article.php/3798546/SecureFiles-in-Oracle-Database-11g.htm"&gt;diesen Artikel&lt;/a&gt; im &lt;i&gt;Database Journal&lt;/i&gt; verweisen. Hat man sich durch die ersten beiden Kapitel gearbeitet, finden sich einige Hinweise auf u.a. relevante DB Parameter oder Tabellen-Eigenschaften.&lt;br /&gt;
Wichtig ist zun&amp;auml;chst einmal zu wissen, dass bis Version 11 f&amp;uuml;r &lt;i&gt;LOBs&lt;/i&gt; nicht so sehr die &lt;i&gt;DB Block Size&lt;/i&gt; wichtig ist - hier braucht man eigentlich nur darauf zu achten, dass diese m&amp;ouml;chst nicht gr&amp;ouml;sser als das &lt;i&gt;LOB&lt;/i&gt; selbst ist - , sondern die Gr&amp;ouml;sse der sogenannten &lt;i&gt;CHUNKs&lt;/i&gt; (zu deutsch: Brocken, Klumpen, großes St&amp;uuml;ck).&lt;br /&gt;
Seit 11.1 und &lt;i&gt;SecureFiles&lt;/i&gt; hat die &lt;i&gt;DB Block Size&lt;/i&gt; nur minimalen Einfluss auf die Performanz und auch die &lt;i&gt;CHUNK&lt;/i&gt; Gr&amp;ouml;sse muss nicht explizit angegeben werden. Die DB &amp;uuml;bernimmt es, nach bestem "Wissen und Gewissen" die optimale &lt;i&gt;CHUNK&lt;/i&gt; Gr&amp;ouml;sse zu bestimmen. Die variiert zwischen der &lt;i&gt;DB Block Size&lt;/i&gt; (Minimum) und 64 MB (Maximum). Unsere DB EntwicklerInnen nennen das "Super Chunk".&lt;br /&gt;
M&amp;ouml;chte man trotzdem Einfluss nehmen, so bleibt die M&amp;ouml;glichkeit, das Minimum durch Setzen einer entsprechenden &lt;i&gt;DB Block Size&lt;/i&gt; pro &lt;i&gt;Tablespace&lt;/i&gt; zu regulieren.&lt;br /&gt;
Das ist auch schon das Stichwort f&amp;uuml;r einen anderen Hinweis: In jedem Falle empfehle ich, einen eigenen &lt;i&gt;Tablespace&lt;/i&gt; f&amp;uuml;r &lt;i&gt;LOBs&lt;/i&gt; vorzusehen, ggf. mehrere f&amp;uuml;r unterschiedliche Arten von &lt;i&gt;LOBs&lt;/i&gt; oder verschiedene Datenst&amp;auml;nde dieser. &lt;br /&gt;
Dann gibt es beim Anlegen von &lt;i&gt;Tablespaces&lt;/i&gt; den wichtigen Begriff der &lt;i&gt;Extents&lt;/i&gt;, bei denen es sich um physisch zusammenh&amp;auml;ngende Speicherbereiche handelt, in welche die Datenbankobjekte gespeichert werden. Je n&amp;auml;her die Daten in zusammenh&amp;auml;ngenden Plattenbereichen liegen, umso geringer sind nat&amp;uuml;rlich die Zugriffszeiten beim Lesen.&lt;br /&gt;
Eine Empfehlung an dieser Stelle ist also, die Gr&amp;ouml;sse der &lt;i&gt;Extents&lt;/i&gt; so zu anzugeben, dass m&amp;ouml;glichst wenige solcher w&amp;auml;hrend eines Ladevorgangs neu angelegt werden m&amp;uuml;ssen.&lt;br /&gt;
Wem es generell auf Geschwindigkeit beim Ladevorgang ankommt, sollte sich &amp;uuml;berlegen, die Daten mit &lt;i&gt;NOLOGGING&lt;/i&gt; zu laden, um das Mitschreiben von &lt;i&gt;ReDo&lt;/i&gt;-Informationen zu reduzieren.&lt;br /&gt;
Nach dem Laden kann man wieder auf &lt;i&gt;LOGGING&lt;/i&gt; setzen und am Besten gleich noch ein Online-Backup ziehen.  &lt;br /&gt;
&lt;pre&gt;
ALTER TABLE my_lob_tab NOLOGGING;

ALTER TABLE my_lob_tab MODIFY (lob_col CLOB)
  LOB(lob_col) STORE AS SECUREFILE (
    NOCACHE NOLOGGING       -- NOCACHE muss zusammen mit NOLOGGING gesetzt werden
  );

... 

ALTER TABLE my_lob_tab MODIFY LOB (lob_col) (CACHE);
ALTER TABLE my_lob_tab LOGGING;
&lt;/pre&gt;
Weitere Hinweise dazu finden sich in der Online-Dokumentation &lt;a href="http://download.oracle.com/docs/cd/E11882_01/appdev.112/e18294.pdf"&gt;&lt;i&gt;SecureFiles and Large Objects Developer´s Guide&lt;/i&gt;&lt;/a&gt;.&lt;br /&gt;
Was ist noch wichtig?&lt;br /&gt;
Datenbank-Objekte werden als sogenannte Segmente gespeichert. Es gibt einige unterschiedliche davon, z.B. Tabellen-, Index- oder auch LOB-Segmente.&lt;br /&gt;
Letztere werden standardm&amp;auml;ssig erzeugt, wenn die Gr&amp;ouml;sse des &lt;i&gt;LOBs&lt;/i&gt; &amp;gt; 4000 Bytes ist. Das nennt man dann &lt;i&gt;Outline&lt;/i&gt;-Speicherung. Das Gegenteil davon &lt;i&gt;Inline&lt;/i&gt; speichert die ganze Tabellenzeile inklusive &lt;i&gt;LOB&lt;/i&gt; in einem Tabellen-Segment und ist das Standardverhalten bei LOBs &amp;lt; 4000 Bytes.&lt;br /&gt;
Will man ausschliesslich &lt;i&gt;Outline&lt;/i&gt; speichern, z.B. um LOBs und die sonstigen (relationalen) Daten in verschiedene Segmente (m&amp;ouml;glicherweise wegen unterschiedlicher &lt;i&gt;Tablespaces&lt;/i&gt;) aufzuteilen, so kann man in der &lt;i&gt;Storage&lt;/i&gt;-Klausel der Tabellendefinition &lt;i&gt;DISABLE STORAGE IN ROW&lt;/i&gt; spezifizieren. &lt;br/&gt;
Aber Achtung: Das muss man am zum Zeitpunkt des Anlegens der Tabelle bereits tun, da es sich nachtr&amp;auml;lglich nicht &amp;auml;ndern l&amp;auml;sst.&lt;p&gt;
Und was hat das alles jetzt eigentlich mit &lt;i&gt;SDO_GEOMETRY&lt;/i&gt;, &lt;i&gt;SDO_GEORASTER&lt;/i&gt; zu tun, den Oracle Objekttypen f&amp;uuml;r Vektor- und Rasterdaten zu tun?
Beide und dazu auch &lt;i&gt;SDO_PC&lt;/i&gt; (f&amp;uuml;r &lt;i&gt;Point Clouds&lt;/i&gt;) k&amp;ouml;nnen &lt;i&gt;SecureFiles&lt;/i&gt; verwenden.
Bei einer Rasterdatentabelle sieht das dann z.B. so aus:
&lt;pre&gt;
CREATE TABLE city_images_rdt OF SDO_RASTER (
  PRIMARY KEY (
    rasterID, 
    pyramidLevel, 
    bandBlockNumber,
    rowBlockNumber, 
    columnBlockNumber))
  TABLESPACE raster_im_tbs
  LOB(rasterBlock) STORE AS SECUREFILE lobseg(
    NOCACHE NOLOGGING)
/ 
&lt;/pre&gt;
Bei Vektordaten werden sowohl St&amp;uuml;tzpunkte (SDO_ORDINATE_ARRAY) als auch SDO_ELEM_INFO in VARRAYs gespeichert. Und auch diese k&amp;ouml;nnen mit der Storage-Klausel STORE AS SECUREFILE angegeben werden.
Die Syntax sieht beispielhaft so aus:
&lt;pre&gt;
CREATE TABLE my_geom_tab (
  feature_name VARCHAR2(4000),
  geometry     SDO_GEOMETRY
)
VARRAY geometry.SDO_ORDINATES STORE AS SECUREFILE lob geom_ord
VARRAY geometry.SDO_ELEM_INFO STORE AS SECUREFILE lob geom_elem
/
&lt;/pre&gt;
Bevor dieser Blog-Eintrag jetzt zu lang wird und niemand mehr Lust hat, ihn bis zum Ende zu lesen, hebe ich mir das Thema Komprimieren von den als &lt;i&gt;SecureFiles&lt;/i&gt; gespeicherten St&amp;uuml;tzpunkten f&amp;uuml;r einen neuen Eintrag auf.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109619187990598765-6769607031114131632?l=oracle-spatial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle-spatial.blogspot.com/feeds/6769607031114131632/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://oracle-spatial.blogspot.com/2011/01/securefiles-ein-kleiner-exkurs-in-die.html#comment-form' title='1 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/6769607031114131632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/6769607031114131632'/><link rel='alternate' type='text/html' href='http://oracle-spatial.blogspot.com/2011/01/securefiles-ein-kleiner-exkurs-in-die.html' title='SecureFiles - Ein kleiner Exkurs in die Niederungen der Oracle Datenbank'/><author><name>Karin Patenge</name><uri>http://www.blogger.com/profile/07393355977167541886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-61GiEwKbfwU/TeOFBhD8F9I/AAAAAAAAAB4/viI6bc5LLSo/s220/IMG_2722_2.jpeg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109619187990598765.post-4863178916215409627</id><published>2011-01-10T17:54:00.000+01:00</published><updated>2011-01-10T17:54:32.557+01:00</updated><title type='text'>Hands On Workshop "Oracle Spatial &amp; MapViewer" am 3. Februar 2011</title><content type='html'>Es gibt eine Neuauflage des Hands On Workshops "Oracle Spatial &amp; MAPS" ausgerichtet vom Oracle-Partner CISS TDI.&lt;br/&gt;
Der Kurs richtet sich an Kunden von Oracle und der CISS TDI, die erste Erfahrungen mit Oracle Locator und Spatial gesammelt haben und ihre Kenntnisse erweitern bzw. vertiefen wollen.&lt;p&gt;
&lt;b&gt;Termin&lt;/b&gt; ist der &lt;b&gt;3. Februar 2011&lt;/b&gt;.&lt;br/&gt;
&lt;b&gt;Ort:&lt;/b&gt; CISS TDI GmbH, Barbarossastr. 36, 53489 Sinzig&lt;p&gt;
&lt;b&gt;Referenten:&lt;/b&gt;
&lt;ul&gt;Markus Lindner, CISS TDI GmbH&lt;/ul&gt;
&lt;ul&gt;Carsten Czarski, Oracle Deutschland GmbH&lt;/ul&gt;
&lt;b&gt;Preis:&lt;/b&gt; 300,- € pro Person&lt;br/&gt;
In der Kursgebühr sind Seminarunterlagen, Pausengetränke und Mittagssnack inbegriffen.&lt;p&gt;
&lt;b&gt;Kursbeschreibung:&lt;/b&gt;&lt;br/&gt;
Zu einer funktionierenden GDI gehört die zentrale Bereitstellung vor- bzw. aufbereiteter Daten zum Zwecke der Analyse, Auswertung und der Publikation von Geodaten. Der Gedanke, Daten nicht aus operativen Systemen direkt zu publizieren, sondern zunächst in einem Warehouse zu konsolidieren und vorzuhalten ist nicht neu. Ermöglicht dieser Ansatz doch, gepaart mit einer OGC-konformen offenen Datenhaltung eine globale Sicht auf die verschiedenen Datenbestände, die im Rahmen einer GDI zusammen kommen können. INSPIRE und ALKIS-Nutzung (Auskunfts- und Präsentationskomponente APK) können als reale Beispiele für einen solchen Ansatz gelten.&lt;br/&gt;
Lernen Sie, wie man Geodatenstrukturen anlegt, Geodaten in eine Oracle Datenbank mittels ETL am Beispiel von CITRA sinnvoll einbringt und auswertet. Vermittelt werden Auswertungen durch SQL, mit Oracle Maps und beispielhaft an verschiedenen GIS.&lt;br/&gt;
Lernen Sie, wie man Geodaten mit Oracle Maps schnell und einfach im Browser visualisieren kann - mit einer Oberfläche, die jeder aus dem Internet kennt. Erfahren Sie weiterhin, wie Sie externe Kartendienste im Hintergrund verwenden und dabei die Fachinformationen (Features Of Interest) aus Ihrer lokalen Datenbank nutzen können. Im Ausblick lernen Sie in einem Überblick die umfassenden Möglichkeiten von Oracle Spatial, z.B. Georaster, Geocoding und Topologie und die Auswertemöglichkeiten mit Apex kennen.&lt;p&gt;
&lt;b&gt;Voraussetzungen:&lt;/b&gt;
&lt;ul&gt;Für die Arbeit im Workshop ist ein eigener (W-LAN-fähiger) Laptop mit installiertem Web-Browser erforderlich&lt;/ul&gt;
&lt;ul&gt;Grundkenntnisse in Oracle Locator/Spatial&lt;/ul&gt;
Zum Nachlesen und für die Anmeldung bitte auf &lt;a href="http://www.ciss.de/aktuelle-veranstaltungen/articles/hands-on-workshop-oracle-spatial-mapviewer.html"&gt;diesen Link &lt;/a&gt;klicken.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109619187990598765-4863178916215409627?l=oracle-spatial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle-spatial.blogspot.com/feeds/4863178916215409627/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://oracle-spatial.blogspot.com/2011/01/hands-on-workshop-oracle-spatial.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/4863178916215409627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/4863178916215409627'/><link rel='alternate' type='text/html' href='http://oracle-spatial.blogspot.com/2011/01/hands-on-workshop-oracle-spatial.html' title='Hands On Workshop &quot;Oracle Spatial &amp; MapViewer&quot; am 3. Februar 2011'/><author><name>Karin Patenge</name><uri>http://www.blogger.com/profile/07393355977167541886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-61GiEwKbfwU/TeOFBhD8F9I/AAAAAAAAAB4/viI6bc5LLSo/s220/IMG_2722_2.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109619187990598765.post-6323293153655748079</id><published>2011-01-07T12:38:00.000+01:00</published><updated>2011-01-07T12:38:06.244+01:00</updated><title type='text'>Deadline für Oracle Spatial User Conference 2011</title><content type='html'>F&amp;uuml;r die Oracle Spatial User Conference können noch Vortr&amp;auml;ge eingereicht bzw. Projekte für den Spatial Award nominiert werden. &lt;font color="#FF0000"&gt;&lt;b&gt;Stichtag daf&amp;uuml;r ist Montag, der 10. Januar 2011&lt;/b&gt;&lt;/font&gt;.&lt;br/&gt;
Wie im Blog schon angek&amp;uuml;ndigt, findet die Konferenz am 19. Mai 2011 in Washington, DC statt.&lt;br/&gt;
Im &amp;Uuml;brigen können Preisnominierungen auf von Oracle-Mitarbeiterinnen und Mitarbeitern eingereicht werden.&lt;br/&gt; 
F&amp;uuml;r Richtlinien finden sich nachfolgende Informationen (auf Englisch):&lt;br/&gt;
&lt;ul&gt;&lt;a href="http://et.ratepoint.com/31f73b773d18df16832f3d2575ede851/c7b1b24e4ad75895629649b228996e99"&gt;Submission Guideline&lt;/a&gt;&lt;/ul&gt;
&lt;ul&gt;&lt;a href="http://et.ratepoint.com/7786bb572f7c271a9aa3704d0a310663/c7b1b24e4ad75895629649b228996e99"&gt;Abstract Submission Form&lt;/a&gt;&lt;/ul&gt;
&lt;ul&gt;&lt;a href="http://et.ratepoint.com/c6dff84ee2522082c49626ac831c627a/c7b1b24e4ad75895629649b228996e99"&gt;Award Nomination Guidelines and Form&lt;/a&gt;&lt;/ul&gt;
&lt;br/&gt;
Was und wer wird pr&amp;auml;miert? Diese Fragen beantwortet am besten ein Auszug aus dem Guideline Dokument, den ich hier der Einfachheit halber reinkopiere.&lt;p&gt;
&lt;font color="#0000FF"&gt;
The annual Oracle Spatial Excellence Awards recognize top customers and partners for significant achievements using Oracle's spatial technologies. Awards are given to organizations and individuals in the categories below:&lt;br/&gt;
&lt;ul&gt;&lt;b&gt;Innovator:&lt;/b&gt; Demonstrate novel, new uses of Oracle's spatial technologies not seen previously in the marketplace, to solve business problems. The innovation should be of interest and relevance to peers in the industry.&lt;/ul&gt;
&lt;ul&gt;&lt;b&gt;Integrated Enterprise:&lt;/b&gt; Deploy a very large production system that harnesses Oracle's enterprise features, to achieve scalability, serving large numbers of internal users and/or customers. Adoption of advanced Oracle Spatial datatypes/models is also a factor.&lt;/ul&gt;
&lt;ul&gt;&lt;b&gt;Education and Research:&lt;/b&gt; Innovate and lead in using Oracle Spatial technologies in academic curricula and research projects. Support and advance the training of spatial technology talent in academia and/or the private sector.&lt;/ul&gt;
&lt;ul&gt;&lt;b&gt;Partnership:&lt;/b&gt; Build and foster a community around Oracle’s spatial technologies.&lt;/ul&gt;
The public is invited to submit nominations for the awards. Organizations or individuals may selfnominate or accept a nomination by another organization or individual. Candidates worldwide are eligible for consideration.&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109619187990598765-6323293153655748079?l=oracle-spatial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle-spatial.blogspot.com/feeds/6323293153655748079/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://oracle-spatial.blogspot.com/2011/01/deadline-fur-oracle-spatial-user.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/6323293153655748079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/6323293153655748079'/><link rel='alternate' type='text/html' href='http://oracle-spatial.blogspot.com/2011/01/deadline-fur-oracle-spatial-user.html' title='Deadline für Oracle Spatial User Conference 2011'/><author><name>Karin Patenge</name><uri>http://www.blogger.com/profile/07393355977167541886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-61GiEwKbfwU/TeOFBhD8F9I/AAAAAAAAAB4/viI6bc5LLSo/s220/IMG_2722_2.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109619187990598765.post-5765699871290816024</id><published>2011-01-03T11:28:00.001+01:00</published><updated>2011-01-03T11:49:02.706+01:00</updated><title type='text'>Neue Version des GeoRaptor für den SQL Developer verfügbar</title><content type='html'>Es geht immer weiter mit dem &lt;i&gt;GeoRaptor&lt;/i&gt; f&amp;uuml;r das kostenfreie DB-Entwicklungswerkzeug &lt;a href="http://www.oracle.com/technetwork/developer-tools/sql-developer/overview/index.html"&gt;Oracle SQL Developer&lt;/a&gt;. &lt;br /&gt;
Die Autoren Holger Laebe, Matik Petek, Olaf Iseeger und Simon Greener haben über die Weihnachtsfeiertage auf &lt;a href="http://sourceforge.net/"&gt;SourceForge.net&lt;/a&gt; das&lt;a href="http://sourceforge.net/apps/mediawiki/georaptor/index.php?title=Main_Page"&gt; Release 2.1.4 zum Download&lt;/a&gt; bereitgestellt. &lt;br /&gt;
Details bez&amp;uuml;glich der neuen Features sind &lt;a href="http://sourceforge.net/apps/mediawiki/georaptor/index.php?title=Release_2.1.4"&gt;f&amp;uuml;r Release 2.1.4 hier&lt;/a&gt; bzw. &lt;a href="http://sourceforge.net/apps/mediawiki/georaptor/index.php?title=Release_2.1.2"&gt;f&amp;uuml;r das vorherige Release 2.1.2 hier&lt;/a&gt; zu finden.&lt;p&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/_cX3XTYGgOqY/TSGpirjtTXI/AAAAAAAAABA/2TC_n4Vuny0/s1600/sqldeveloper_georaptor_capture.png" imageanchor="1" style="clear:left; float:left;margin-right:1em; margin-bottom:1em"&gt;&lt;img border="0" height="190" width="320" src="http://3.bp.blogspot.com/_cX3XTYGgOqY/TSGpirjtTXI/AAAAAAAAABA/2TC_n4Vuny0/s320/sqldeveloper_georaptor_capture.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109619187990598765-5765699871290816024?l=oracle-spatial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle-spatial.blogspot.com/feeds/5765699871290816024/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://oracle-spatial.blogspot.com/2011/01/neue-version-des-georaptor-fur-den-sql.html#comment-form' title='1 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/5765699871290816024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/5765699871290816024'/><link rel='alternate' type='text/html' href='http://oracle-spatial.blogspot.com/2011/01/neue-version-des-georaptor-fur-den-sql.html' title='Neue Version des GeoRaptor für den SQL Developer verfügbar'/><author><name>Karin Patenge</name><uri>http://www.blogger.com/profile/07393355977167541886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-61GiEwKbfwU/TeOFBhD8F9I/AAAAAAAAAB4/viI6bc5LLSo/s220/IMG_2722_2.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_cX3XTYGgOqY/TSGpirjtTXI/AAAAAAAAABA/2TC_n4Vuny0/s72-c/sqldeveloper_georaptor_capture.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109619187990598765.post-3480897850960221748</id><published>2011-01-03T09:49:00.000+01:00</published><updated>2011-01-03T09:49:17.277+01:00</updated><title type='text'>Alles Gute für das Jahr 2011 ...</title><content type='html'>... wünschen wir unseren Blog-Leserinnen und Lesern, allen aktuellen und zukünftigen Oracle Kunden und Partnern.&lt;p&gt;

Ihr Oracle Spatial Team&lt;br /&gt;

&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/_cX3XTYGgOqY/TSGNXRC2oCI/AAAAAAAAAAw/Z-QawZDheuk/s1600/CIMG6151_halfsize.gif" imageanchor="1" style="clear:left; float:left;margin-right:1em; margin-bottom:1em"&gt;&lt;img border="0" height="240" width="320" src="http://3.bp.blogspot.com/_cX3XTYGgOqY/TSGNXRC2oCI/AAAAAAAAAAw/Z-QawZDheuk/s320/CIMG6151_halfsize.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109619187990598765-3480897850960221748?l=oracle-spatial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle-spatial.blogspot.com/feeds/3480897850960221748/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://oracle-spatial.blogspot.com/2011/01/alles-gute-fur-das-jahr-2011.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/3480897850960221748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/3480897850960221748'/><link rel='alternate' type='text/html' href='http://oracle-spatial.blogspot.com/2011/01/alles-gute-fur-das-jahr-2011.html' title='Alles Gute für das Jahr 2011 ...'/><author><name>Karin Patenge</name><uri>http://www.blogger.com/profile/07393355977167541886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-61GiEwKbfwU/TeOFBhD8F9I/AAAAAAAAAB4/viI6bc5LLSo/s220/IMG_2722_2.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_cX3XTYGgOqY/TSGNXRC2oCI/AAAAAAAAAAw/Z-QawZDheuk/s72-c/CIMG6151_halfsize.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109619187990598765.post-1680939139696867160</id><published>2010-12-01T14:46:00.000+01:00</published><updated>2010-12-01T14:46:36.942+01:00</updated><title type='text'>Locator ich noch oder Spatial ich schon?</title><content type='html'>&lt;div&gt;Diese Frage stellen sich unsere Kunden immer mal wieder. Und sie zu beantworten, ist zugegebenermassen nicht so ganz einfach.&lt;br /&gt;
Deshalb wollen wir hier ein paar Hilfestellungen geben.&lt;p&gt;
&lt;/div&gt;
&lt;div&gt;Da w&amp;auml;re zun&amp;auml;chst einmal die grobe Einteilung in 2D-Vektordaten (Locator) und alles andere (Spatial), wie 3D-Vektordaten, Rasterdaten, Netzwerkdatenmodell, Topologien, Geokodierung, Lineare Bezugssysteme, Routing, Geodienste (ausser WMS), etc.&lt;/div&gt;
&lt;div&gt;Was die 2D-Vektordaten betrifft, muss man dann noch mal genauer auf die von Locator unterst&amp;uuml;tzten &lt;i&gt;Features&lt;/i&gt; schauen. Diese sind im Detail in Tabelle B-1 im &lt;a href="http://download.oracle.com/docs/cd/E11882_01/appdev.112/e11830/sdo_locator.htm#i632018" target="_blank"&gt;Oracle Spatial Developer&amp;rsquo;s Guide&lt;/a&gt; beschrieben. Was dort nicht aufgef&amp;uuml;hrt ist, statt dessen aber in Tabelle B-2, ist Spatial.&lt;p&gt; &lt;/div&gt;
&lt;div&gt;Dar&amp;uuml;berhinaus kann man auch noch die sogenannte &lt;i&gt;Feature Usage Statistics&lt;/i&gt; zu Rate ziehen. Nutzer/-innen mit DBA-Rechten k&amp;ouml;nnen sich diese wie folgt anzeigen lassen:&lt;/div&gt; 
&lt;pre&gt;
select * 
from   dba_feature_usage_statistics 
where  lower(name) like '%locator%' or 
       lower(name) like '%spatial%';
&lt;/pre&gt;
&lt;div&gt;Seit 11gR2 werden Locator und Spatial darin gesondert ausgewiesen.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109619187990598765-1680939139696867160?l=oracle-spatial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle-spatial.blogspot.com/feeds/1680939139696867160/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://oracle-spatial.blogspot.com/2010/12/locator-ich-noch-oder-spatial-ich-schon.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/1680939139696867160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/1680939139696867160'/><link rel='alternate' type='text/html' href='http://oracle-spatial.blogspot.com/2010/12/locator-ich-noch-oder-spatial-ich-schon.html' title='&lt;i&gt;Locator&lt;/i&gt; ich noch oder &lt;i&gt;Spatial&lt;/i&gt; ich schon?'/><author><name>Karin Patenge</name><uri>http://www.blogger.com/profile/07393355977167541886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-61GiEwKbfwU/TeOFBhD8F9I/AAAAAAAAAB4/viI6bc5LLSo/s220/IMG_2722_2.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109619187990598765.post-538859062376969288</id><published>2010-11-30T10:53:00.001+01:00</published><updated>2010-11-30T10:55:53.001+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SDO_UTIL Rectify duplicate vertices'/><title type='text'>Lauter kleine Helferlein</title><content type='html'>&lt;div&gt;Heute soll es darum gehen, Geometrien, die nicht &lt;i&gt;Simple Feature&lt;/i&gt;-konform sind, soweit m&amp;ouml;glich zu korrigieren.&lt;/div&gt;
&lt;div&gt;F&amp;uuml;r eine solche Korrektur steht seit 11gR1 die Funktion &lt;b&gt;RECTIFY_GEOMETRY&lt;/b&gt; im Package &lt;b&gt;SDO_UTIL&lt;/b&gt; bereit, welche die korrigierte (rektifizierte) Geometrie zur&amp;uuml;ckliefert.&lt;br /&gt; 
&lt;/div&gt;
&lt;div&gt;Ein Blick in die Oracle Spatial Online-Dokumentation verr&amp;auml;t dabei, welche Fehler korrigierbar sind:
&lt;ul&gt;
&lt;li&gt;doppelte Stützpunkte (bezogen auf die Toleranz)&lt;/li&gt;
&lt;li&gt;sich selbst schneidende Polygone&lt;/li&gt;
&lt;li&gt;falsche Orientierung von innerem oder/und &amp;auml;usseren Ring(en) eines Polygons&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;Dort findet sich ebenso das Format beschrieben.&lt;/div&gt;
&lt;pre&gt;
SDO_UTIL.RECTIFY_GEOMETRY(
  geom      IN SDO_GEOMETRY,
  tolerance IN NUMBER
) RETURN SDO_GEOMETRY;
&lt;/pre&gt;
&lt;p&gt;
&lt;div&gt;Wie kann man nun diese Funktion in Anwendung bringen? Schauen wir uns das einfach mal genauer an.&lt;/div&gt;
&lt;div&gt;Zun&amp;auml;chst wird eine Tabelle angelegt, in welcher alle fehlerhaften Geometrien registriert werden sollen.&lt;/div&gt;
&lt;pre&gt;
drop table geometry_errors purge;

-- Fehlertabelle anlegen
create table geometry_errors (
  table_name      varchar2(30),
  column_name     varchar2(30),
  obj_rowid       rowid,
  geometry        sdo_geometry,
  tolerance       number,
  error_code      char(5),
  error_message   varchar2(256),
  error_context   varchar2(256),
  is_fixed        number(1) default 0
);
&lt;/pre&gt;
&lt;div&gt;Die eigentliche Prozedur zum &amp;Uuml;berpr&amp;uuml;fen der Geometrien, kann dann wie nachfolgend aussehen. Die problematischen Geometrien darunter werden in die Fehlertabelle &amp;uuml;bernommen.&lt;/div&gt;
&lt;pre&gt;
-- Prozedur zum Pr&amp;uuml;fen auf invalide Geometrien im gesamten Schema
-- Achtung: Kann einige Zeit in Anspruch nehmen!
declare
  DEFAULT_TOLERANCE   number := 0.0000005;
  COMMIT_FREQUENCY    number := 100;
  geom_cursor         sys_refcursor;
  v_diminfo           sdo_dim_array;
  v_srid              number;
  v_tolerance         number;
  v_rowid             rowid;
  v_geometry          sdo_geometry;
  v_num_rows          number;
  v_num_errors        number;
  v_error_code        char(5);
  v_error_message     varchar2(256);
  v_error_context     varchar2(256);
  v_status            varchar2(256);
begin

  -- Alle Tabellen mit SDO_GEOMETRY Spalten prozessieren
  for t in (
    select table_name, column_name
    from   user_tab_columns
    where  data_type = 'SDO_GEOMETRY'
    order by table_name, column_name )
  loop
  
    -- Lies Toleranz aus den Metadaten
    begin
      select diminfo, srid into v_diminfo, v_srid
      from user_sdo_geom_metadata
      where table_name = t.table_name
        and column_name = t.column_name;
    exception
      when no_data_found then
        v_diminfo := null;
        v_srid := null;
    end;
 
    -- Bei fehlenden Metadaten, Default-Toleranz annehmen
    if v_diminfo is null then
      v_tolerance := DEFAULT_TOLERANCE;
    else
      v_tolerance := v_diminfo(1).sdo_tolerance;
    end if;
 
    -- Geometrien prozessieren
    v_num_rows := 0;
    v_num_errors := 0;

    open geom_cursor for
      'select rowid,' || t.column_name || ' from ' || t.table_name;
    loop
      v_status := NULL;
   
      -- Hole Geometrie
      fetch geom_cursor into v_rowid, v_geometry;
        exit when geom_cursor%notfound;
      v_num_rows := v_num_rows + 1;
   
      -- Validiere Geometry
      v_status := sdo_geom.validate_geometry_with_context (v_geometry, v_tolerance);
   
      -- Wenn Fehler, dann protokollieren
      if v_status &lt;&gt; 'TRUE' then
   
        -- Fehler hochzählen
        v_num_errors := v_num_errors + 1;
  
        -- Format the error message
        if length(v_status) &gt;= 5 then
          v_error_code := substr(v_status, 1, 5);
          v_error_message := sqlerrm(-v_error_code);
          v_error_context := substr(v_status,7);
        else
          v_error_code := v_status;
          v_error_message := null;
          v_error_context := null;
        end if;
  
        -- Fehler wegschreiben
        insert into geometry_errors (
          table_name,
          column_name,
          obj_rowid,
          geometry,
          tolerance,
          error_code,
          error_message,
          error_context
        )
        values (
          t.table_name,
          t.column_name,
          v_rowid,
          v_geometry,
          v_tolerance,
          v_error_code,
          v_error_message,
          v_error_context
        );
      end if;
   
      -- Commit entsprechend COMMIT_FREQUENCY
      if mod(v_num_rows,COMMIT_FREQUENCY) = 0 then
        commit;
      end if;
    end loop;
  end loop;
  
  -- Finales Commit
  commit;
end;
/
&lt;/pre&gt;
&lt;div&gt;Zu beachten ist dabei, dass das Ausf&amp;uuml;hren der Prozedur eine Weile in Anspruch nehmen kann, je nach Anzahl der zu &amp;uuml;berpr&amp;uuml;fenden Geometrien.&lt;/div&gt;
&lt;div&gt;Bevor es an die eigentliche Korrektur geht, schauen wir uns zun&amp;auml;chst die Fehlertabelle genauer an.&lt;/div&gt;
&lt;pre&gt;
-- Fehler pro Tabelle, Error Code
select table_name, error_code, error_message, count(*)
from geometry_errors
group by table_name, error_code, error_message 
order by table_name, error_code;

-- Fehler pro Error Code, Tabelle
select error_code, error_message, table_name, count(*)
from geometry_errors
group by error_code, error_message, table_name
order by error_code, table_name;

-- Fehlerdetails
select table_name, obj_rowid, is_fixed, error_message, error_context
from geometry_errors
where is_fixed = 0
order by table_name, obj_rowid;
&lt;/pre&gt;

&lt;div&gt;F&amp;uuml;r die Korrektur wird nun die Funktion SDO_UTIL.RECTIFY_GEOMETRY eingesetzt.
&lt;/div&gt;

&lt;pre&gt;
-- Prozedur zum Korrigieren der Geometrien
declare
  -- Fehlerbehandlung für nicht korrigierbare Geometrien
  -- "ORA-13199: the given geometry cannot be rectified"
  cannot_rectify exception;
  pragma exception_init(cannot_rectify, -13199);
  v_geometry_fixed sdo_geometry;

begin
  -- Invalide Geometrien prozessieren
  for e in (
    select rowid, table_name, column_name, obj_rowid, tolerance, geometry
    from geometry_errors
    where is_fixed = 0
    order by table_name, column_name
  )
  loop
    -- Wenn m&amp;ouml;glich, Geometrie korrigieren mit SDO_UTIL.RECTIFY_GEOMETRY. 
    -- Andernfalls:
    --   In 11.1.0.6: Funktion gibt NULL zurück
    --   In 11.1.0.7 und 11.2: Funktion wirft ORA-13199 Fehler
    begin
      v_geometry_fixed := sdo_util.rectify_geometry (e.geometry, e.tolerance);
    exception
      when cannot_rectify then
        v_geometry_fixed := null;
    end;

    if v_geometry_fixed is not null then
      -- Korrigiere Geometrie
      execute immediate 'update ' || e.table_name || ' set '|| e.column_name || ' = :g where rowid = :r'
        using v_geometry_fixed, e.obj_rowid;

      -- Kennzeichne korrigierte Geometrien in Fehlertabelle mit is_fixed = 1
      update geometry_errors set is_fixed = 1 where rowid = e.rowid;
      -- Alternativ ist auch DELETE m&amp;ouml;glich
      -- delete from geometry_error where rowid = e.rowid;
    end if;

  end loop;
end;
/
&lt;/pre&gt;
&lt;div&gt;Was wurde korrgiert? Was nicht? Das Ergebnis kann am Ende in der Fehlertabelle &amp;uuml;berpr&amp;uuml;ft werden.&lt;/div&gt;

&lt;pre&gt;
-- Fehler nach Tabelle, Korrekturstatus und Error Code
select table_name, is_fixed, error_code, error_message, count(*)
from geometry_errors
group by table_name, is_fixed, error_code, error_message 
order by table_name, is_fixed, error_code;

-- Fehler nach Korrekturstatus und Error Code
select is_fixed, error_code, error_message, count(*)
from geometry_errors
group by is_fixed, error_code, error_message
order by is_fixed, error_code;

-- Details
select table_name, obj_rowid, is_fixed, error_message, error_context
from geometry_errors
order by is_fixed, table_name, obj_rowid;
&lt;/pre&gt;
&lt;div&gt;M&amp;ouml;glicherweise konnten nicht alle fehlerhaften Geometrien auf diese Weise korrigiert werden, aber ein erster Schritt in Richtung Qualit&amp;auml;tsverbesserung ist getan.&lt;br /&gt;Wer die Fehlertabelle nach erfolgter Korrektur nicht mehr ben&amp;ouml;tigt, sollte &amp;uuml;brigens nicht vergessen, diese wieder zu entfernen.&lt;/div&gt;
&lt;pre&gt;
drop table geometry_errors purge;
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109619187990598765-538859062376969288?l=oracle-spatial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle-spatial.blogspot.com/feeds/538859062376969288/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://oracle-spatial.blogspot.com/2010/11/lauter-kleine-helferlein.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/538859062376969288'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/538859062376969288'/><link rel='alternate' type='text/html' href='http://oracle-spatial.blogspot.com/2010/11/lauter-kleine-helferlein.html' title='Lauter kleine Helferlein'/><author><name>Karin Patenge</name><uri>http://www.blogger.com/profile/07393355977167541886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-61GiEwKbfwU/TeOFBhD8F9I/AAAAAAAAAB4/viI6bc5LLSo/s220/IMG_2722_2.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109619187990598765.post-208605538040285879</id><published>2010-11-22T10:32:00.004+01:00</published><updated>2010-11-22T10:41:26.935+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gpx convert sdo_geometry'/><title type='text'>GPX-Dateien nach SDO_GEOMETRY umwandeln</title><content type='html'>&lt;div&gt;Jüngst habe ich für einen Kollegen &lt;i&gt;einen GPS-Track&lt;/i&gt; in die Datenbank geladen. Ich hatte eine .gpx-Datei, die in etwa so aussieht ...&lt;/div&gt;
&lt;pre&gt;
&lt;font color="#008080"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#008080"&gt;gpx&lt;/font&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#2e8b57"&gt;&lt;b&gt;xmlns&lt;/b&gt;&lt;/font&gt;=&lt;font color="#ff00ff"&gt;&amp;quot;&lt;a href="http://www.topografix.com/GPX/1/1"&gt;http://www.topografix.com/GPX/1/1&lt;/a&gt;&amp;quot;&lt;/font&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#2e8b57"&gt;&lt;b&gt;tc2&lt;/b&gt;&lt;/font&gt;=&lt;font color="#ff00ff"&gt;&amp;quot;&lt;/font&gt; ...
   &lt;font color="#008080"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#008080"&gt;trk&lt;/font&gt;&lt;font color="#008080"&gt;&amp;gt;&lt;/font&gt;
       &lt;font color="#008080"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#008080"&gt;name&lt;/font&gt;&lt;font color="#008080"&gt;&amp;gt;&lt;/font&gt;2010-11-16T03:46:55Z&lt;font color="#008080"&gt;&amp;lt;/name&amp;gt;&lt;/font&gt;
       &lt;font color="#008080"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#008080"&gt;trkseg&lt;/font&gt;&lt;font color="#008080"&gt;&amp;gt;&lt;/font&gt;
           &lt;font color="#008080"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#008080"&gt;trkpt&lt;/font&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#2e8b57"&gt;&lt;b&gt;lat&lt;/b&gt;&lt;/font&gt;=&lt;font color="#ff00ff"&gt;&amp;quot;51.4799802&amp;quot;&lt;/font&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#2e8b57"&gt;&lt;b&gt;lon&lt;/b&gt;&lt;/font&gt;=&lt;font color="#ff00ff"&gt;&amp;quot;7.9678522&amp;quot;&lt;/font&gt;&lt;font color="#008080"&gt;&amp;gt;&lt;/font&gt;
               &lt;font color="#008080"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#008080"&gt;ele&lt;/font&gt;&lt;font color="#008080"&gt;&amp;gt;&lt;/font&gt;270.7484131&lt;font color="#008080"&gt;&amp;lt;/ele&amp;gt;&lt;/font&gt;
               &lt;font color="#008080"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#008080"&gt;time&lt;/font&gt;&lt;font color="#008080"&gt;&amp;gt;&lt;/font&gt;2010-11-16T03:46:55Z&lt;font color="#008080"&gt;&amp;lt;/time&amp;gt;&lt;/font&gt;
           &lt;font color="#008080"&gt;&amp;lt;/trkpt&amp;gt;&lt;/font&gt;
           &lt;font color="#008080"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#008080"&gt;trkpt&lt;/font&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#2e8b57"&gt;&lt;b&gt;lat&lt;/b&gt;&lt;/font&gt;=&lt;font color="#ff00ff"&gt;&amp;quot;51.4799436&amp;quot;&lt;/font&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#2e8b57"&gt;&lt;b&gt;lon&lt;/b&gt;&lt;/font&gt;=&lt;font color="#ff00ff"&gt;&amp;quot;7.9678679&amp;quot;&lt;/font&gt;&lt;font color="#008080"&gt;&amp;gt;&lt;/font&gt;
               &lt;font color="#008080"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#008080"&gt;ele&lt;/font&gt;&lt;font color="#008080"&gt;&amp;gt;&lt;/font&gt;264.0192871&lt;font color="#008080"&gt;&amp;lt;/ele&amp;gt;&lt;/font&gt;
               &lt;font color="#008080"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#008080"&gt;time&lt;/font&gt;&lt;font color="#008080"&gt;&amp;gt;&lt;/font&gt;2010-11-16T03:47:06Z&lt;font color="#008080"&gt;&amp;lt;/time&amp;gt;&lt;/font&gt;
           &lt;font color="#008080"&gt;&amp;lt;/trkpt&amp;gt;&lt;/font&gt;
           &lt;font color="#008080"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#008080"&gt;trkpt&lt;/font&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#2e8b57"&gt;&lt;b&gt;lat&lt;/b&gt;&lt;/font&gt;=&lt;font color="#ff00ff"&gt;&amp;quot;51.4797696&amp;quot;&lt;/font&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#2e8b57"&gt;&lt;b&gt;lon&lt;/b&gt;&lt;/font&gt;=&lt;font color="#ff00ff"&gt;&amp;quot;7.9681059&amp;quot;&lt;/font&gt;&lt;font color="#008080"&gt;&amp;gt;&lt;/font&gt;
               &lt;font color="#008080"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#008080"&gt;ele&lt;/font&gt;&lt;font color="#008080"&gt;&amp;gt;&lt;/font&gt;264.4998779&lt;font color="#008080"&gt;&amp;lt;/ele&amp;gt;&lt;/font&gt;
               &lt;font color="#008080"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#008080"&gt;time&lt;/font&gt;&lt;font color="#008080"&gt;&amp;gt;&lt;/font&gt;2010-11-16T03:47:12Z&lt;font color="#008080"&gt;&amp;lt;/time&amp;gt;&lt;/font&gt;
           &lt;font color="#008080"&gt;&amp;lt;/trkpt&amp;gt;&lt;/font&gt;
           &lt;font color="#008080"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#008080"&gt;trkpt&lt;/font&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#2e8b57"&gt;&lt;b&gt;lat&lt;/b&gt;&lt;/font&gt;=&lt;font color="#ff00ff"&gt;&amp;quot;51.4797497&amp;quot;&lt;/font&gt;&lt;font color="#008080"&gt; &lt;/font&gt;&lt;font color="#2e8b57"&gt;&lt;b&gt;lon&lt;/b&gt;&lt;/font&gt;=&lt;font color="#ff00ff"&gt;&amp;quot;7.9681919&amp;quot;&lt;/font&gt;&lt;font color="#008080"&gt;&amp;gt;&lt;/font&gt;
               &lt;font color="#008080"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#008080"&gt;ele&lt;/font&gt;&lt;font color="#008080"&gt;&amp;gt;&lt;/font&gt;264.9805908&lt;font color="#008080"&gt;&amp;lt;/ele&amp;gt;&lt;/font&gt;
               &lt;font color="#008080"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#008080"&gt;time&lt;/font&gt;&lt;font color="#008080"&gt;&amp;gt;&lt;/font&gt;2010-11-16T03:47:14Z&lt;font color="#008080"&gt;&amp;lt;/time&amp;gt;&lt;/font&gt;
           &lt;font color="#008080"&gt;&amp;lt;/trkpt&amp;gt;&lt;/font&gt;
&lt;/pre&gt;
&lt;div&gt;
 Zunächst hatte ich ein wenig nach Converter-Software gegoogelt, wurde jedoch nicht so recht fündig (komische Lizenzbedingungen, keine Konvertierung nach GML oder KML, sondern nur in andere Formate). Da es aber um eine einfach zu verstehende XML-Datei geht, beschloß ich, mir einfach selbst eine Funktion zu schreiben, welche die Arbeit erledigt. Und hier ist sie ...
&lt;/div&gt;
&lt;pre&gt;
&lt;span style="color:#008080;"&gt;create&lt;/span&gt; &lt;span style="color:#804040;"&gt;&lt;b&gt;or&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#008080;"&gt;replace&lt;/span&gt; &lt;span style="color:#804040;"&gt;&lt;b&gt;function&lt;/b&gt;&lt;/span&gt; convert_gpx_to_sdo(
 p_gpxfile &lt;span style="color:#804040;"&gt;&lt;b&gt;in&lt;/b&gt;&lt;/span&gt; xmltype,
 p_lrs     &lt;span style="color:#804040;"&gt;&lt;b&gt;in&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#2e8b57;"&gt;&lt;b&gt;number&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#008080;"&gt;default&lt;/span&gt; &lt;span style="color:#ff00ff;"&gt;0&lt;/span&gt;
) &lt;span style="color:#804040;"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; sdo_geometry &lt;span style="color:#804040;"&gt;&lt;b&gt;is&lt;/b&gt;&lt;/span&gt;
 v_ordinates sdo_ordinate_array &lt;span style="color:#804040;"&gt;&lt;b&gt;:=&lt;/b&gt;&lt;/span&gt; sdo_ordinate_array();
 v_gtype     &lt;span style="color:#2e8b57;"&gt;&lt;b&gt;number&lt;/b&gt;&lt;/span&gt;;

 v_cnt       &lt;span style="color:#2e8b57;"&gt;&lt;b&gt;pls_integer&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#804040;"&gt;&lt;b&gt;:=&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#ff00ff;"&gt;1&lt;/span&gt;;

 v_startts   &lt;span style="color:#2e8b57;"&gt;&lt;b&gt;timestamp&lt;/b&gt;&lt;/span&gt;;
 v_interval  &lt;span style="color:#2e8b57;"&gt;&lt;b&gt;interval&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#2e8b57;"&gt;&lt;b&gt;day&lt;/b&gt;&lt;/span&gt;(&lt;span style="color:#ff00ff;"&gt;9&lt;/span&gt;) &lt;span style="color:#008080;"&gt;to&lt;/span&gt; &lt;span style="color:#2e8b57;"&gt;&lt;b&gt;second&lt;/b&gt;&lt;/span&gt;;

 c_gpxns     &lt;span style="color:#2e8b57;"&gt;&lt;b&gt;varchar2&lt;/b&gt;&lt;/span&gt;(&lt;span style="color:#ff00ff;"&gt;200&lt;/span&gt;) &lt;span style="color:#804040;"&gt;&lt;b&gt;:=&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#ff00ff;"&gt;'xmlns="&lt;a href="http://www.topografix.com/GPX/1/1"&gt;http://www.topografix.com/GPX/1/1&lt;/a&gt;"'&lt;/span&gt;;
&lt;span style="color:#804040;"&gt;&lt;b&gt;begin&lt;/b&gt;&lt;/span&gt;
 &lt;span style="color:#804040;"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt; p_lrs &lt;span style="color:#804040;"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#ff00ff;"&gt;1&lt;/span&gt; &lt;span style="color:#804040;"&gt;&lt;b&gt;then&lt;/b&gt;&lt;/span&gt;
   v_gtype &lt;span style="color:#804040;"&gt;&lt;b&gt;:=&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#ff00ff;"&gt;3302&lt;/span&gt;;
 &lt;span style="color:#804040;"&gt;&lt;b&gt;else&lt;/b&gt;&lt;/span&gt;
   v_gtype &lt;span style="color:#804040;"&gt;&lt;b&gt;:=&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#ff00ff;"&gt;2002&lt;/span&gt;;
 &lt;span style="color:#804040;"&gt;&lt;b&gt;end if&lt;/b&gt;&lt;/span&gt;;

 &lt;span style="color:#804040;"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/span&gt; tp &lt;span style="color:#804040;"&gt;&lt;b&gt;in&lt;/b&gt;&lt;/span&gt; (
   &lt;span style="color:#008080;"&gt;select&lt;/span&gt;
     extractvalue(&lt;span style="color:#008080;"&gt;value&lt;/span&gt;(tp), &lt;span style="color:#ff00ff;"&gt;'/trkpt/@lon'&lt;/span&gt;, c_gpxns) x,
     extractvalue(&lt;span style="color:#008080;"&gt;value&lt;/span&gt;(tp), &lt;span style="color:#ff00ff;"&gt;'/trkpt/@lat'&lt;/span&gt;, c_gpxns) y,
     extractvalue(&lt;span style="color:#008080;"&gt;value&lt;/span&gt;(tp), &lt;span style="color:#ff00ff;"&gt;'/trkpt/time'&lt;/span&gt;, c_gpxns) m
   &lt;span style="color:#008080;"&gt;from&lt;/span&gt; &lt;span style="color:#2e8b57;"&gt;&lt;b&gt;table&lt;/b&gt;&lt;/span&gt;(xmlsequence(&lt;span style="color:#008080;"&gt;extract&lt;/span&gt;(p_gpxfile, &lt;span style="color:#ff00ff;"&gt;'//trkpt'&lt;/span&gt;, c_gpxns))) tp
 ) &lt;span style="color:#804040;"&gt;&lt;b&gt;loop&lt;/b&gt;&lt;/span&gt;
   &lt;span style="color:#804040;"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt; v_cnt &lt;span style="color:#804040;"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#ff00ff;"&gt;1&lt;/span&gt; &lt;span style="color:#804040;"&gt;&lt;b&gt;then&lt;/b&gt;&lt;/span&gt;
     v_startts &lt;span style="color:#804040;"&gt;&lt;b&gt;:=&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#008080;"&gt;to_timestamp&lt;/span&gt;(tp.m, &lt;span style="color:#ff00ff;"&gt;'YYYY-MM-DD"T"HH24:MI:SS"Z"'&lt;/span&gt;);
   &lt;span style="color:#804040;"&gt;&lt;b&gt;end if&lt;/b&gt;&lt;/span&gt;;
   &lt;span style="color:#804040;"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt; p_lrs &lt;span style="color:#804040;"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#ff00ff;"&gt;1&lt;/span&gt; &lt;span style="color:#804040;"&gt;&lt;b&gt;then&lt;/b&gt;&lt;/span&gt;
     v_ordinates.extend(&lt;span style="color:#ff00ff;"&gt;3&lt;/span&gt;);
   &lt;span style="color:#804040;"&gt;&lt;b&gt;else&lt;/b&gt;&lt;/span&gt;
     v_ordinates.extend(&lt;span style="color:#ff00ff;"&gt;2&lt;/span&gt;);
   &lt;span style="color:#804040;"&gt;&lt;b&gt;end if&lt;/b&gt;&lt;/span&gt;;
   v_ordinates(v_cnt) &lt;span style="color:#804040;"&gt;&lt;b&gt;:=&lt;/b&gt;&lt;/span&gt; tp.x;
   v_cnt &lt;span style="color:#804040;"&gt;&lt;b&gt;:=&lt;/b&gt;&lt;/span&gt; v_cnt &lt;span style="color:#804040;"&gt;&lt;b&gt;+&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#ff00ff;"&gt;1&lt;/span&gt;;
   v_ordinates(v_cnt) &lt;span style="color:#804040;"&gt;&lt;b&gt;:=&lt;/b&gt;&lt;/span&gt; tp.y;
   v_cnt &lt;span style="color:#804040;"&gt;&lt;b&gt;:=&lt;/b&gt;&lt;/span&gt; v_cnt &lt;span style="color:#804040;"&gt;&lt;b&gt;+&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#ff00ff;"&gt;1&lt;/span&gt;;
   &lt;span style="color:#804040;"&gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt; p_lrs &lt;span style="color:#804040;"&gt;&lt;b&gt;=&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#ff00ff;"&gt;1&lt;/span&gt; &lt;span style="color:#804040;"&gt;&lt;b&gt;then&lt;/b&gt;&lt;/span&gt;
     v_interval &lt;span style="color:#804040;"&gt;&lt;b&gt;:=&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#008080;"&gt;to_timestamp&lt;/span&gt;(tp.m,  &lt;span style="color:#ff00ff;"&gt;'YYYY-MM-DD"T"HH24:MI:SS"Z"'&lt;/span&gt;) &lt;span style="color:#804040;"&gt;&lt;b&gt;-&lt;/b&gt;&lt;/span&gt; v_startts;
     v_ordinates(v_cnt) &lt;span style="color:#804040;"&gt;&lt;b&gt;:=&lt;/b&gt;&lt;/span&gt;
      &lt;span style="color:#008080;"&gt;extract&lt;/span&gt;(&lt;span style="color:#2e8b57;"&gt;&lt;b&gt;MINUTE&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#008080;"&gt;from&lt;/span&gt; v_interval) &lt;span style="color:#804040;"&gt;&lt;b&gt;+&lt;/b&gt;&lt;/span&gt;
      &lt;span style="color:#008080;"&gt;extract&lt;/span&gt;(&lt;span style="color:#2e8b57;"&gt;&lt;b&gt;HOUR&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#008080;"&gt;from&lt;/span&gt; v_interval) &lt;span style="color:#804040;"&gt;&lt;b&gt;*&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#ff00ff;"&gt;60&lt;/span&gt; &lt;span style="color:#804040;"&gt;&lt;b&gt;+&lt;/b&gt;&lt;/span&gt;
      &lt;span style="color:#008080;"&gt;extract&lt;/span&gt;(&lt;span style="color:#2e8b57;"&gt;&lt;b&gt;SECOND&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#008080;"&gt;from&lt;/span&gt; v_interval) &lt;span style="color:#804040;"&gt;&lt;b&gt;/&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#ff00ff;"&gt;60&lt;/span&gt;;
     v_cnt &lt;span style="color:#804040;"&gt;&lt;b&gt;:=&lt;/b&gt;&lt;/span&gt; v_cnt &lt;span style="color:#804040;"&gt;&lt;b&gt;+&lt;/b&gt;&lt;/span&gt; &lt;span style="color:#ff00ff;"&gt;1&lt;/span&gt;;
    &lt;span style="color:#804040;"&gt;&lt;b&gt;end if&lt;/b&gt;&lt;/span&gt;;
 &lt;span style="color:#804040;"&gt;&lt;b&gt;end loop&lt;/b&gt;&lt;/span&gt;;

 &lt;span style="color:#804040;"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; sdo_geometry(v_gtype, &lt;span style="color:#ff00ff;"&gt;8307&lt;/span&gt;, &lt;span style="color:#ff00ff;"&gt;null&lt;/span&gt;, sdo_elem_info_array(&lt;span style="color:#ff00ff;"&gt;1&lt;/span&gt;,&lt;span style="color:#ff00ff;"&gt;2&lt;/span&gt;,&lt;span style="color:#ff00ff;"&gt;1&lt;/span&gt;), v_ordinates);
&lt;span style="color:#804040;"&gt;&lt;b&gt;end&lt;/b&gt;&lt;/span&gt; convert_gpx_to_sdo;
&lt;span style="color:#804040;"&gt;&lt;b&gt;/&lt;/b&gt;&lt;/span&gt;
sho err
&lt;/pre&gt;
&lt;div&gt;
 Die Funktion nimmt das GPX-File (&lt;b&gt;XMLTYPE&lt;/b&gt;) als ersten Parameter entgegen.  Der zweite Parameter gibt an, ob eine &lt;i&gt;Linear Referencing&lt;/i&gt;-Geometrie zurückgegeben werden soll. Wenn ja, werden die &lt;i&gt;Measures&lt;/i&gt; in Minuten gespeichert. Gebt hier entweder &lt;b&gt;"1"&lt;/b&gt; oder &lt;b&gt;"0"&lt;/b&gt; an ... Man könnte hier sicherlich noch mehr machen: die GPX-Dateien enthalten eine Höhenangabe - man könnte also auch 3D-Geometrien bauen ...
&lt;/div&gt;
&lt;div&gt;
 Vielleicht jemand diese erste Version brauchen - viel Spaß damit!
&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109619187990598765-208605538040285879?l=oracle-spatial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle-spatial.blogspot.com/feeds/208605538040285879/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://oracle-spatial.blogspot.com/2010/11/jungst-habe-ich-fur-einen-kollegen.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/208605538040285879'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/208605538040285879'/><link rel='alternate' type='text/html' href='http://oracle-spatial.blogspot.com/2010/11/jungst-habe-ich-fur-einen-kollegen.html' title='GPX-Dateien nach SDO_GEOMETRY umwandeln'/><author><name>Carsten Czarski</name><uri>http://www.blogger.com/profile/15040474428905002855</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109619187990598765.post-1014137452001174489</id><published>2010-11-12T14:08:00.001+01:00</published><updated>2010-11-12T14:08:55.638+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='user_sdo_geom_metadata'/><category scheme='http://www.blogger.com/atom/ns#' term='view'/><title type='text'>Views mit SDO_GEOMETRY</title><content type='html'>&lt;div&gt;
 Auch für Geodaten-Tabellen werden recht häufig Views generiert. Daten aus verschiedenen
 Tabellen stehen damit quasi als "eine Tabelle" bereit. Und man kann mit den Views auch
 sehr gut arbeiten. Nur lassen sich die Views von vielen GIS-Werkzeugen und auch vom
 Oracle MapBuilder (das Werkzeug zum Einrichten der Kartendefinitionen für Oracle MAPS)
 nicht verwenden - die Auswahldialoge zeigen sie einfach nicht an.
&lt;/div&gt;
&lt;div&gt;
 Nun befindet sich auf der View zwar kein Spatial-Index, aber das ist ja auch richtig so;
 auf eine View kann kein Index gelegt werden. Der Grund ist die Spatial-Metadaten-View 
 &lt;b&gt;USER_SDO_GEOM_METADATA&lt;/b&gt;, die von all diesen Werkzeugen ausgelesen wird und meist
 Grundlage der Auswahllisten ist.
&lt;/div&gt;
&lt;div&gt;
 Die Lösung ist also einfach: Die View wird, wie die zugrundeliegende Spatial-Tabelle in
 &lt;b&gt;USER_SDO_GEOM_METADATA&lt;/b&gt; eingetragen. Nehmt einfach dieses SQL hier als Vorlage.
&lt;/div&gt;
&lt;pre&gt;
insert into user_sdo_geom_metadata values (
  '{TABLE/VIEW NAME}',
  '{GEOM_COL_NAME}',
  sdo_dim_array(
   sdo_dim_element('X', {xmin}, {xmax}, {tolerance}),
   sdo_dim_element('Y', {ymin}, {ymax}, {tolerance})
  ),
  {SRID}
)
/
&lt;/pre&gt;
&lt;div&gt;
  Einen Index könnt Ihr danach immer noch nicht anlegen - aber das braucht Ihr auch
  nicht - der View sollte nun in eurem GIS-Werkzeug oder im Oracle MapBuilder sicht- und
  auswählbar sein.
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109619187990598765-1014137452001174489?l=oracle-spatial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle-spatial.blogspot.com/feeds/1014137452001174489/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://oracle-spatial.blogspot.com/2010/11/views-mit-sdogeometry.html#comment-form' title='2 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/1014137452001174489'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/1014137452001174489'/><link rel='alternate' type='text/html' href='http://oracle-spatial.blogspot.com/2010/11/views-mit-sdogeometry.html' title='Views mit SDO_GEOMETRY'/><author><name>Carsten Czarski</name><uri>http://www.blogger.com/profile/15040474428905002855</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109619187990598765.post-3074671830901698204</id><published>2010-10-16T16:05:00.003+02:00</published><updated>2010-12-01T14:07:08.876+01:00</updated><title type='text'>INSIDE, TOUCH ... oder etwa doch anders</title><content type='html'>&lt;div&gt;Wie kann ich eigentlich herausfinden, in welcher topologischen Beziehung 
sich 2 Objekte zueinander definden?&lt;/div&gt;
&lt;p&gt;
&lt;div&gt;Die Funktion &lt;b&gt;RELATE&lt;/b&gt; im Package &lt;b&gt;SDO_GEOM&lt;/b&gt; liefert im Ergebnis 
die Lagebeziehung zwischen 2 Objekten.&lt;/div&gt;
&lt;pre&gt;
select
  c2.feature_name,
  sdo_geom.relate(
    c2.geometry,
    'determine',    -- Maskierungsparameter
    c1.geometry, 
    0.05 ) topo_rel
from 
  m_admin_area1 c1, 
  m_admin_area1 c2
where 
  c1.feature_name = 'GERMANY';
&lt;/pre&gt;
&lt;div&gt;Der Wert &lt;b&gt;DETERMINE&lt;/b&gt; f&amp;uuml;r den Maskierungsparameter ermittelt dabei 
diejenige Lagebeziehung zwischen 2 Objekten, welche der Realit&amp;auml;t am meisten 
entspricht. &lt;br&gt;Im Falle der obigen Abfrage wird anhand des kostenfrei bereitgestellten &lt;a 
href="http://www.oracle.com/technetwork/database/options/spatial/spatial-partners-data-087203.html" target="_blank"&gt;NAVTEQ Beispieldatensets f&amp;uuml;r Oracle&lt;/a&gt; die Lagebeziehung zwischen Deutschland und allen anderen 
Ländern ermittelt.&lt;/div&gt;&lt;p&gt;
&lt;div&gt;Wird &amp;uuml;brigens als Wert f&amp;uuml;r den Maskierungsparameter &lt;b&gt;ANYINTERACT&lt;/b&gt; 
angegeben, gibt die Funktion TRUE zur&amp;uuml;ck f&amp;uuml;r alle Lagebeziehungen, die ungleich 
&lt;b&gt;DISJOINT&lt;/b&gt; sind.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109619187990598765-3074671830901698204?l=oracle-spatial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle-spatial.blogspot.com/feeds/3074671830901698204/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://oracle-spatial.blogspot.com/2010/10/inside-touch-oder-doch-anders.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/3074671830901698204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/3074671830901698204'/><link rel='alternate' type='text/html' href='http://oracle-spatial.blogspot.com/2010/10/inside-touch-oder-doch-anders.html' title='INSIDE, TOUCH ... oder etwa doch anders'/><author><name>Karin Patenge</name><uri>http://www.blogger.com/profile/07393355977167541886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-61GiEwKbfwU/TeOFBhD8F9I/AAAAAAAAAB4/viI6bc5LLSo/s220/IMG_2722_2.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109619187990598765.post-1883751643523094421</id><published>2010-10-14T16:35:00.004+02:00</published><updated>2010-10-14T16:43:31.484+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='plsql'/><category scheme='http://www.blogger.com/atom/ns#' term='sql developer'/><title type='text'>SQL Developer 3.0 ist draußen: Mit Spatial-Unterstützung!</title><content type='html'>&lt;div&gt;
Seit dem 13. Oktober ist das &lt;span style="font-style: italic;"&gt;Early Adopter&lt;/span&gt;-Release des &lt;span style="font-weight: bold;"&gt;SQL Developer 3.0 &lt;/span&gt;draußen. Das besondere daran ist, dass nun eine Unterstützung für Spatial drin ist: &lt;span style="font-weight: bold;"&gt;out-of-the-box und ohne GeoRaptor&lt;/span&gt;.
Hier ein Screenshot. Ihr sehr, dass es nun eine Map-Ansicht von Geodaten gibt und dass zu einer Tabelle (über den Eintrag &lt;span style="font-weight: bold;"&gt;Räumlich&lt;/span&gt; im Kontextmenü)  Spatial-Bezogene Operationen angeboten werden.
&lt;/div&gt;
&lt;div&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Y_r6L8N-LcY/TLcWmxbNSnI/AAAAAAAAAG8/-X4rbG_ogNg/s1600/Snap2.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 320px; height: 200px;" src="http://2.bp.blogspot.com/_Y_r6L8N-LcY/TLcWmxbNSnI/AAAAAAAAAG8/-X4rbG_ogNg/s320/Snap2.png" alt="" id="BLOGGER_PHOTO_ID_5527911922978867826" border="0" /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div&gt;
Der SQL Developer wird mit Sicherheit nicht mit einem Spatial Commander oder einem ähnlichen GIS-Werkzeug konkurrieren können, aber die Basisoperationen (sprich: was ein SQL bzw. PLSQL-Entwickler braucht) sind nun out-of-the-box drin. Und das ist gut!
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109619187990598765-1883751643523094421?l=oracle-spatial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle-spatial.blogspot.com/feeds/1883751643523094421/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://oracle-spatial.blogspot.com/2010/10/sql-developer-30-ist-drauen-mit-spatial.html#comment-form' title='1 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/1883751643523094421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/1883751643523094421'/><link rel='alternate' type='text/html' href='http://oracle-spatial.blogspot.com/2010/10/sql-developer-30-ist-drauen-mit-spatial.html' title='SQL Developer 3.0 ist draußen: Mit Spatial-Unterstützung!'/><author><name>Carsten Czarski</name><uri>http://www.blogger.com/profile/15040474428905002855</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Y_r6L8N-LcY/TLcWmxbNSnI/AAAAAAAAAG8/-X4rbG_ogNg/s72-c/Snap2.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109619187990598765.post-3090217417783289617</id><published>2010-09-30T00:35:00.001+02:00</published><updated>2010-10-07T14:36:39.510+02:00</updated><title type='text'>APEX und die Frage: Wo sind meine Metadaten geblieben?</title><content type='html'>&lt;div&gt;
Wer schon mal eine kleine oder auch größere APEX-Geo-Anwendung erstellt hat, wird die nachfolgend beschriebene Situation vielleicht schon mal erlebt haben.&lt;p&gt;
&lt;/div&gt;
&lt;div&gt;Jede Tabelle mit einer SDO_GEOMETRY-Spalte benötigt eine Registrierung in den SDO-Metadaten der Oracle Datenbank. Das ist ein INSERT in die Nutzer-bezogene View USER_SDO_GEOM_METADATA und kann z.B. so aussehen:&lt;br /&gt;&lt;/div&gt;
&lt;pre&gt;SQL&amp;gt; insert into user_sdo_geom_metadata (&lt;br /&gt;&amp;nbsp; table_name, &lt;br /&gt;&amp;nbsp; column_name, &lt;br /&gt;&amp;nbsp; diminfo,&lt;br /&gt;&amp;nbsp; srid) &lt;br /&gt;values (&lt;br /&gt;&amp;nbsp; 'GEOTAB',&lt;br /&gt;&amp;nbsp; 'geometry',&lt;br /&gt;&amp;nbsp; sdo_dim_array(sdo_dim_element('X',-180,180,0.005),&lt;br /&gt;&amp;nbsp; sdo_dim_element('Y',-90,90,0.005)),&lt;br /&gt;&amp;nbsp; 8307);&lt;/pre&gt;
&lt;div&gt;Entwickelt man eine Anwendung in APEX und benutzt für das Registrieren der SDO_GEOMETRY Spalte in den Metadaten den SQL Workshop, dann läuft das soweit auch ohne Probleme durch.&lt;p&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/_cX3XTYGgOqY/TKOwmG9KATI/AAAAAAAAAAU/2ylEJQnc63Y/s1600/20100929_APEX_InsertMetadata.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="310" src="http://2.bp.blogspot.com/_cX3XTYGgOqY/TKOwmG9KATI/AAAAAAAAAAU/2ylEJQnc63Y/s640/20100929_APEX_InsertMetadata.gif" width="580" /&gt;&lt;/a&gt;&lt;p&gt;&lt;/div&gt;
&lt;div&gt;Dann wird ordentlicherweise auch gleich noch der Spatial Index angelegt und schon erscheint die Fehlermeldung ORA-00942: table or view does not exist.&lt;br /&gt;&lt;p&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/_cX3XTYGgOqY/TKOx7CLTgzI/AAAAAAAAAAY/TMHRmYQ1eRw/s1600/20100929_APEX_ErrorCreatingSpatialIndex.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="280" src="http://4.bp.blogspot.com/_cX3XTYGgOqY/TKOx7CLTgzI/AAAAAAAAAAY/TMHRmYQ1eRw/s640/20100929_APEX_ErrorCreatingSpatialIndex.gif" width="580" /&gt;&lt;/a&gt;&lt;p&gt;&lt;/div&gt;
&lt;div&gt;Ein kurzes&lt;br /&gt;
&lt;pre&gt;SQL&amp;gt; select * from user_sdo_geom_metadata where table_name = 'GEOTAB';&lt;/pre&gt;
bringt kein Ergebnis zurück.&lt;p&gt;&lt;/div&gt;
&lt;div&gt;Was ist passiert? Wo ist der Eintrag in die Metadaten geblieben?&lt;br /&gt;
Mit DBA-Rechten ist es recht einfach, in der entsprechenden Tabelle des Nutzers MDSYS nachzuschauen.&lt;br /&gt;&lt;/div&gt;
&lt;pre&gt;SQL&amp;gt; select * from mdsys.sdo_geom_metadata_table;&lt;/pre&gt;
&lt;div&gt;Dort ist in der Spalte SDO_OWNER dann anstatt des erwarteten Nutzers (hier im Beispiel SPATIAL) je nach dem von APEX verwendeten Web Listener entweder ANONYMOUS, APEX_PUBLIC_USER oder HTMLDB_PUBLIC_USER zu finden. Das ist der Nutzername der APEX-Session, in dessen Schema dann auch die SDO_GEOMETRY Metadaten registriert werden.&lt;p&gt;
Wie kann das jetzt bereinigt werden?&lt;br /&gt;
Bitten Sie Ihren DBA, Ihrem Nutzer UPDATE-Rechte für die MDSYS-Tabelle SDO_GEOM_METADATA_TABLE zuzuweisen.&lt;br /&gt;&lt;/div&gt;
&lt;pre&gt;SQL&amp;gt; grant update on mdsys.sdo_geom_metadata_table;&lt;/pre&gt;
&lt;div&gt;Dann ändern Sie den SDO_OWNER-Eintrag wie folgt ab:&lt;br /&gt;&lt;/div&gt;
&lt;pre&gt;SQL&amp;gt; update MDSYS.SDO_GEOM_METADATA_TABLE&lt;br /&gt;&amp;nbsp; set sdo_owner='SPATIAL'&lt;br /&gt;&amp;nbsp; where sdo_table_name = 'GEOTAB' and sdo_owner = 'ANONYMOUS';&lt;/pre&gt;
&lt;div&gt;
Wenn Sie jetzt die Metadaten überprüfen, sollte nunmehr alles im grünen Bereich sein.&lt;p&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/_cX3XTYGgOqY/TKO4_EDTU1I/AAAAAAAAAAc/kmTwwd3rbjA/s1600/20100929_APEX_CorrectMetadata.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="http://2.bp.blogspot.com/_cX3XTYGgOqY/TKO4_EDTU1I/AAAAAAAAAAc/kmTwwd3rbjA/s640/20100929_APEX_CorrectMetadata.gif" width="580" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109619187990598765-3090217417783289617?l=oracle-spatial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle-spatial.blogspot.com/feeds/3090217417783289617/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://oracle-spatial.blogspot.com/2010/09/apex-und-die-frage-wo-sind-meine.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/3090217417783289617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/3090217417783289617'/><link rel='alternate' type='text/html' href='http://oracle-spatial.blogspot.com/2010/09/apex-und-die-frage-wo-sind-meine.html' title='APEX und die Frage: Wo sind meine Metadaten geblieben?'/><author><name>Karin Patenge</name><uri>http://www.blogger.com/profile/07393355977167541886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-61GiEwKbfwU/TeOFBhD8F9I/AAAAAAAAAB4/viI6bc5LLSo/s220/IMG_2722_2.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_cX3XTYGgOqY/TKOwmG9KATI/AAAAAAAAAAU/2ylEJQnc63Y/s72-c/20100929_APEX_InsertMetadata.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109619187990598765.post-5487947151433604155</id><published>2010-09-21T16:22:00.001+02:00</published><updated>2010-09-21T16:23:40.349+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='epsg'/><category scheme='http://www.blogger.com/atom/ns#' term='srid'/><category scheme='http://www.blogger.com/atom/ns#' term='transform'/><category scheme='http://www.blogger.com/atom/ns#' term='gk'/><category scheme='http://www.blogger.com/atom/ns#' term='projektion'/><title type='text'>Gauss-Krüger: EPSG oder nicht EPSG: Das ist hier die Frage!</title><content type='html'>&lt;div&gt;
 Seit Oracle10g Release 2 unterstützt die Oracle-Datenbank die EPSG-Systematik für Koordinatensysteme. Die
 Projektion &lt;i&gt;Gauss-Krüger Zone 3&lt;/i&gt; steht damit gleich zweimal bereit:
&lt;/div&gt;
&lt;ul&gt;
  &lt;li&gt;als "klassische" Oracle-SRID &lt;b&gt;82027&lt;/b&gt;&lt;/li&gt;
  &lt;li&gt;im EPSG-Standard als Code &lt;b&gt;31467&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;
SQL&amp;gt; select srid,cs_name from cs_srs where srid in (31467, 82027)

      SRID CS_NAME
---------- ----------------------------------------
     31467 DHDN / Gauss-Kruger zone 3
     82027 GK Zone 3 (DHDN)
&lt;/pre&gt;
&lt;div&gt;
  Man könnte auf den Gedanken kommen, dass es nun egal ist, welchen Code man verwendet. Aber
  das ist es leider nicht. Zwischen dem nach EPSG standardisierten System &lt;b&gt;31467&lt;/b&gt; und
  der "Oracle-Version" gibt es Unterschiede ... und die möchte ich in diesem Blog Posting
  herausarbeiten.
&lt;/div&gt;
&lt;div&gt;
  Zunächst nehme ich die Koordinate von Oracle in München (mit dem Oracle-Geocoder, versteht sich)
  und rechne die nach EPSG:31467 um.
&lt;/div&gt;
&lt;pre&gt;
select sdo_cs.transform(
  sdo_geometry(2001, 8307, sdo_point_type(11.536734, 48.1800773, null), null, null), 
  31467
) transformed from dual;

TRANSFORMED
------------------------------------------------------------------------------------
SDO_GEOMETRY(2001, 31467, SDO_POINT_TYPE(3688714,69, 5341125,2, NULL), NULL, NULL)
&lt;/pre&gt;
&lt;div&gt;
  Dies ist die absolut korrekte Koordinate im Koordinatensystem EPSG:31467. Man könnte aber
  auf den Gedanken kommen, diese mit der ID &lt;b&gt;82027&lt;/b&gt; in die Datenbank zu speichern ... wenn's
  das gleiche Koordinatensystem ist, wäre das ja egal ...
&lt;/div&gt;
&lt;div&gt;
  Also rechnen wir die Koordinate wieder in WGS84 zurück und zwar einmal mit der
  SRID 31467 und einmal mit 82027.
&lt;/div&gt;
&lt;pre&gt;
select sdo_cs.transform(
  SDO_GEOMETRY(2001, &lt;b style="color: red"&gt;31467&lt;/b&gt;, SDO_POINT_TYPE(3688714.69, 5341125.2, NULL), NULL, NULL ),
  8307
) transformed from dual;

TRANSFORMED
------------------------------------------------------------------------------------
SDO_GEOMETRY(2001, 8307, SDO_POINT_TYPE(11,5367341, 48,1800773, NULL), NULL, NULL)

select sdo_cs.transform(
  SDO_GEOMETRY(2001, &lt;b style="color: red"&gt;82027&lt;/b&gt;, SDO_POINT_TYPE(3688714.69, 5341125.2, NULL), NULL, NULL ),
  8307
) from dual;

TRANSFORMED
------------------------------------------------------------------------------------
SDO_GEOMETRY(2001, 8307, SDO_POINT_TYPE(11,5391267, 48,180154, NULL), NULL, NULL)
&lt;/pre&gt;
&lt;div&gt;
  Und man sieht, dass es nicht das gleiche ist. Wenn man die &lt;i&gt;Well Known Texts&lt;/i&gt; vergleicht,
  lässt sich auch feststellen, dass es in den Parametern ein paar Unterschiede gibt. Die Abweichung
  liegt meist im Bereich von ca. 100 bis 200 Metern.
&lt;/div&gt;
&lt;pre&gt;
select sdo_geom.sdo_distance(
 sdo_cs.transform(
  SDO_GEOMETRY(2001, 31467, SDO_POINT_TYPE(3688714.69, 5341125.2, NULL), NULL, NULL ),
  8307
 ),
 sdo_cs.transform(
  SDO_GEOMETRY(2001, 82027, SDO_POINT_TYPE(3688714.69, 5341125.2, NULL), NULL, NULL ),
  8307
 ),
 1
) distanz from dual;

DISTANZ
-------------
   178,128988
&lt;/pre&gt;
&lt;div&gt;
 &lt;b&gt;Und was bedeutet das? Zuerstmal alles kein Problem!&lt;/b&gt; Man muss es, wenn man GK3-Koordinaten (bspw. aus Shapefiles) in die Datenbank lädt, nur beachten.
  Stellt man beim Betrachten der
  Daten Abweichungen im Bereich von 100 bis 200 Metern fest, sollte man die andere GK3-SRID versuchen. 
  Meistens  liegt man mit der neueren EPSG-Nummer &lt;b&gt;31467&lt;/b&gt; richtig. Aber ich habe auch
  schon Fälle erlebt, in denen die &lt;b&gt;82027&lt;/b&gt; genommen werden musste. 
&lt;/div&gt;
&lt;div&gt;
 Rechnet man eine Geometrie von &lt;b&gt;82027&lt;/b&gt; nach &lt;b&gt;31467&lt;/b&gt; um, kommen (folgerichtig) auch
 nicht die gleichen Koordinaten heraus.
&lt;/div&gt;
&lt;pre&gt;
SQL&amp;gt; select sdo_cs.transform(
  2    SDO_GEOMETRY(2001, 82027, SDO_POINT_TYPE(3688714.69, 5341125.2, NULL), NULL, NULL ),
  3    31467
  4  ) TRANSFORMED from dual;

TRANSFORMED
-----------------------------------------------------------------------------------
SDO_GEOMETRY(2001, 31467, SDO_POINT_TYPE(3688892,31, 5341139,61, NULL), NULL, NULL)
&lt;/pre&gt;
&lt;div&gt;
  Für die anderen in Deutschland gebräuchlichen Gauss-Krüger Projektionen gilt das analog.
&lt;/div&gt;
&lt;pre&gt;
SQL&amp;gt; select srid,cs_name from cs_srs where srid in (31466, 82015);

      SRID CS_NAME
---------- ----------------------------------------
     31466 DHDN / Gauss-Kruger zone 2
     82015 GK Zone 2 (DHDN)

SQL&amp;gt; select srid,cs_name from cs_srs where srid in (31468, 82032);

      SRID CS_NAME
---------- ----------------------------------------
     31468 DHDN / Gauss-Kruger zone 4
     82032 GK Zone 4 (DHDN)
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109619187990598765-5487947151433604155?l=oracle-spatial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle-spatial.blogspot.com/feeds/5487947151433604155/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://oracle-spatial.blogspot.com/2010/09/gauss-kruger-epsg-oder-nicht-epsg-das.html#comment-form' title='3 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/5487947151433604155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/5487947151433604155'/><link rel='alternate' type='text/html' href='http://oracle-spatial.blogspot.com/2010/09/gauss-kruger-epsg-oder-nicht-epsg-das.html' title='Gauss-Krüger: EPSG oder nicht EPSG: Das ist hier die Frage!'/><author><name>Carsten Czarski</name><uri>http://www.blogger.com/profile/15040474428905002855</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109619187990598765.post-3401091449269740313</id><published>2010-09-20T23:07:00.000+02:00</published><updated>2010-09-20T23:07:58.869+02:00</updated><title type='text'>Oracle Partner CISS TDI erweitert seine CITRA-Schnittstellenpalette</title><content type='html'>&lt;div&gt;
  Der Oracle Partner &lt;a href="http://www.ciss.de/" target="_blank"&gt;CISS TDI GmbH&lt;/a&gt; hat seine CITRA-Schnittstellenpalette um einen Reader für das OpenStreetMap-Daten im XML-Format erweitert. &lt;br&gt;
  Die Schnittstelle beinhaltet
  &lt;ul&gt;
    &lt;li&gt;eine Konfiguration für das Oracle Network Datenmodell sowie&lt;/li&gt;
    &lt;li&gt;eine sehr gut ausgestalteten Übersichtskarte in Oracle Spatial zur Verwendung im Oracle Fusion Middleware MapViewer&lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
Mit dieser Schnittstelle schafft CISS TDI die Möglichkeit, OpenStreetMap-Daten nativ mit Oracle Spatial zu verwenden.
&lt;/div&gt;
&lt;div&gt;
  Weitere Informationen sind &lt;a href="http://www.ciss.de/pressemitteilungen/articles/openstreetmap.html" target="_blank"&gt;hier&lt;/a&gt; zu finden.
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109619187990598765-3401091449269740313?l=oracle-spatial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle-spatial.blogspot.com/feeds/3401091449269740313/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://oracle-spatial.blogspot.com/2010/09/oracle-partner-ciss-tdi-erweitert-seine.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/3401091449269740313'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/3401091449269740313'/><link rel='alternate' type='text/html' href='http://oracle-spatial.blogspot.com/2010/09/oracle-partner-ciss-tdi-erweitert-seine.html' title='Oracle Partner CISS TDI erweitert seine CITRA-Schnittstellenpalette'/><author><name>Karin Patenge</name><uri>http://www.blogger.com/profile/07393355977167541886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-61GiEwKbfwU/TeOFBhD8F9I/AAAAAAAAAB4/viI6bc5LLSo/s220/IMG_2722_2.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109619187990598765.post-6426119535629326850</id><published>2010-09-20T22:47:00.001+02:00</published><updated>2010-09-20T22:48:38.281+02:00</updated><title type='text'>SDO_GEOMETRY Viewer für Oracle SQL Developer</title><content type='html'>&lt;div&gt;
Für das kostenfreie DB-Entwicklungs- und Administrationswerkzeug &lt;b&gt;&lt;a href="http://www.oracle.com/technetwork/developer-tools/sql-developer/" target="_blank"&gt;SQL Developer&lt;/a&gt;&lt;/b&gt; 
  gibt es eine Erweiterung, welche mit als SDO_GEOMETRY gespeicherten 2-dimensionalen Geometriedaten umgehen kann.
&lt;/div&gt;
&lt;div&gt;
Der sogenannte &lt;b&gt;&lt;a href="http://sourceforge.net/projects/georaptor/" target="_blank"&gt;GeoRaptor&lt;/a&gt;&lt;/b&gt; 
  ist ein Open-Source-Projekt auf &lt;a href="http://sourceforge.net/" target="_blank"&gt;sourceforge.net&lt;/a&gt;.&lt;/div&gt;
&lt;div&gt;
Neben den eigentlichen "Features", wie z.B.
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Kontextmenü für die Tabellen mit SDO_GEOMETRY-Spalte&lt;/li&gt;
&lt;li&gt;Viewer mit den typischen Funktionen, wie Zoom, Rectangle Zoom, Pan, Copy sowie der Möglichkeit, die Signaturen der ausgewählten Geometrien festzulegen&lt;/li&gt;
&lt;li&gt;SQL Code-Snippets&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
können auf den &lt;a href="http://sourceforge.net/apps/mediawiki/georaptor/index.php?title=Main_Page" target="_blank"&gt;Projektseiten&lt;/a&gt;
  auch gleich &lt;a href="http://sourceforge.net/tracker/?group_id=158162&amp;amp;atid=806731" target="_blank"&gt;neue Features&lt;/a&gt; angefragt 
  bzw. &lt;a href="http://sourceforge.net/tracker/?group_id=158162&amp;amp;atid=806728" target="_blank"&gt;Probleme mit vorhandenen&lt;/a&gt; berichtet werden.&lt;p&gt;&lt;/div&gt;
&lt;div&gt;
Hinweise zur Installation gibt es &lt;a href="http://sourceforge.net/apps/mediawiki/georaptor/index.php?title=Install" target="_blank"&gt;hier&lt;/a&gt;.
&lt;/div&gt;
&lt;div&gt;
Und wie sieht der Viewer in Aktion aus?&lt;br /&gt;
&lt;a href="http://3.bp.blogspot.com/_cX3XTYGgOqY/TJfD0SfwmBI/AAAAAAAAAAM/OfDXYKMLPmI/s1600/20100920_GeoRaptor_SpatialView.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_cX3XTYGgOqY/TJfD0SfwmBI/AAAAAAAAAAM/OfDXYKMLPmI/s320/20100920_GeoRaptor_SpatialView.gif" /&gt;&lt;/a&gt;&lt;br /&gt;
Bemerkung: Für die Darstellung wurden Daten aus dem frei für Oracle verfügbaren Datenset von NAVTEQ verwendet. Das ist zu finden unter &lt;a href="http://www.oracle.com/technetwork/database/options/spatial/spatial-partners-data-087203.html" target="_blank"&gt;Oracle Spatial Partners′ Data&lt;/a&gt;.
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109619187990598765-6426119535629326850?l=oracle-spatial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle-spatial.blogspot.com/feeds/6426119535629326850/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://oracle-spatial.blogspot.com/2010/09/sdogeometry-viewer-fur-oracle-sql.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/6426119535629326850'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/6426119535629326850'/><link rel='alternate' type='text/html' href='http://oracle-spatial.blogspot.com/2010/09/sdogeometry-viewer-fur-oracle-sql.html' title='SDO_GEOMETRY Viewer für Oracle SQL Developer'/><author><name>Karin Patenge</name><uri>http://www.blogger.com/profile/07393355977167541886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-61GiEwKbfwU/TeOFBhD8F9I/AAAAAAAAAB4/viI6bc5LLSo/s220/IMG_2722_2.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_cX3XTYGgOqY/TJfD0SfwmBI/AAAAAAAAAAM/OfDXYKMLPmI/s72-c/20100920_GeoRaptor_SpatialView.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109619187990598765.post-5107389069429076789</id><published>2010-09-13T22:45:00.001+02:00</published><updated>2010-10-16T16:19:08.261+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenWorld Oracle Spatial MapViewer'/><title type='text'>Oracle OpenWorld 2010 demnächst</title><content type='html'>&lt;div&gt;Vom 19.-23. September findet in San Francisco die Oracle OpenWorld 2010 statt.&lt;/div&gt;
&lt;div&gt;
Unter den vielen verschiedenen Themenbereichen wird auch ein Fokus auf "Oracle Spatial &amp;amp; Oracle MapViewer" gesetzt.  Alle Veranstaltungen dazu sind &lt;a href="http://www.oracle.com/us/openworld/oow10-focuson-spatial-169204.pdf" target=_blank&gt;hier&lt;/a&gt; zu finden.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109619187990598765-5107389069429076789?l=oracle-spatial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle-spatial.blogspot.com/feeds/5107389069429076789/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://oracle-spatial.blogspot.com/2010/09/oracle-openworld-2010-demnachst.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/5107389069429076789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/5107389069429076789'/><link rel='alternate' type='text/html' href='http://oracle-spatial.blogspot.com/2010/09/oracle-openworld-2010-demnachst.html' title='Oracle OpenWorld 2010 demnächst'/><author><name>Karin Patenge</name><uri>http://www.blogger.com/profile/07393355977167541886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-61GiEwKbfwU/TeOFBhD8F9I/AAAAAAAAAB4/viI6bc5LLSo/s220/IMG_2722_2.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109619187990598765.post-4437423892262349789</id><published>2010-09-08T09:36:00.026+02:00</published><updated>2010-09-08T14:00:22.440+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SDO_UTIL Multipolygone EXTRACT'/><title type='text'>De-aggregieren zusammengesetzter Geometrien</title><content type='html'>&lt;span style="font-size:100%;"&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;p&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;&lt;p&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;Aus einer zusammengesetzten Geometrie (Multipolygon, welches mehrere Elemente, optional auch Subelemente/Ringe enthält) können mit Hilfe der Funktion EXTRACT einzelne Elemente herausgezogen werden.
&lt;p&gt;
Diese Funktion für 2D-Vektordaten, sowie analog EXTRACT3D für 3D-Vektordaten, steht im PL/SQL Package SDO_UTIL zur Verfügung. Letztere Funktion gibt es allerdings erst seit der DB Version 11.1 im Package.
&lt;/p&gt;&lt;p&gt;
Das Format ist wie folgt kurz beschrieben:&lt;br/&gt;


&lt;span style="font-family:courier new;"&gt;sdo_util.extract (&lt;/span&gt;&lt;br/&gt;

&lt;span style="font-family:courier new;"&gt;&amp;nbsp;&amp;nbsp;geometry IN SDO_GEOMETRY,&lt;/span&gt;&lt;br/&gt;

&lt;span style="font-family:courier new;"&gt;&amp;nbsp;&amp;nbsp;element IN NUMBER,&lt;/span&gt;&lt;br/&gt;

&lt;span style="font-family:courier new;"&gt;&amp;nbsp;&amp;nbsp;ring IN NUMBER default 0&lt;/span&gt;&lt;br/&gt;

&lt;span style="font-family:courier new;"&gt;) return sdo_geometry; -- 2D&lt;/span&gt;&lt;/p&gt;&lt;p&gt;
Und wie geht´s konkret?&lt;/p&gt;&lt;p&gt;
Gegeben sei das Multipolgyon "Brandenburg" (SDO_GTYPE = 2007) aus dem &lt;a href="http://www.oracle.com/technetwork/database/options/spatial/spatial-partners-data-087203.html"&gt;World Sample NAVTEQ Data Bundle&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;

-- Extraction von Element 1, Ring 1&lt;br/&gt;

&lt;span style="font-family:courier new;"&gt;SQL&gt; select sdo_util.extract(geometry, 1, 1) from m_admin_area2 where feature_name = 'Brandenburg';&lt;/span&gt;&lt;br/&gt;

-- Ergebnis ist der äußere Ring von Brandenburg&lt;/p&gt;&lt;p&gt;

-- Extraction von Element 1, Ring 2&lt;br/&gt;

&lt;span style="font-family:courier new;"&gt;SQL&gt; select sdo_util.extract(geometry, 1, 2) from m_admin_area2 where feature_name = 'Brandenburg';&lt;/span&gt;&lt;br/&gt;

-- Ergebnis ist der innere Ring von Brandenburg, gleichzeitig die administrative Grenze des Bundeslandes Berlin&lt;/p&gt;&lt;p&gt;

-- Extraction von Element 2, Ring 2&lt;br/&gt;

&lt;span style="font-family:courier new;"&gt;SQL&gt; select sdo_util.extract(geometry, 2, 1) from m_admin_area2 where feature_name = 'Brandenburg';&lt;/span&gt;&lt;br/&gt;

-- Ergebnis hier ist eine kleine Brandenburgische Exklave in Sachsen-Anhalt&lt;/p&gt;&lt;p&gt;

Weitere Infos finden sich natürlich in der Online-Doku auf OTN (&lt;a href="http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14255/sdo_util.htm#sthref1955"&gt;http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14255/sdo_util.htm#sthref1955&lt;/a&gt;).
&lt;/p&gt;&lt;/span&gt;
&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109619187990598765-4437423892262349789?l=oracle-spatial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle-spatial.blogspot.com/feeds/4437423892262349789/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://oracle-spatial.blogspot.com/2010/09/de-aggregieren-zusammengesetzter.html#comment-form' title='1 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/4437423892262349789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/4437423892262349789'/><link rel='alternate' type='text/html' href='http://oracle-spatial.blogspot.com/2010/09/de-aggregieren-zusammengesetzter.html' title='De-aggregieren zusammengesetzter Geometrien'/><author><name>Karin Patenge</name><uri>http://www.blogger.com/profile/07393355977167541886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://4.bp.blogspot.com/-61GiEwKbfwU/TeOFBhD8F9I/AAAAAAAAAB4/viI6bc5LLSo/s220/IMG_2722_2.jpeg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1109619187990598765.post-3150054864749208814</id><published>2010-09-02T11:37:00.002+02:00</published><updated>2010-09-02T11:47:40.972+02:00</updated><title type='text'>Es geht los!</title><content type='html'>Auf diesem Blog werden wir künftig Informationen, Tipps und Tricks zu Oracle Locator und Oracle Spatial veröffentlichen. Wir, das sind &lt;span style="font-weight: bold;"&gt;Karin Patenge, Bernhard Fischer-Wasels, Haitham Zyadeh &lt;/span&gt;und &lt;span style="font-weight: bold;"&gt;Carsten Czarski&lt;/span&gt;.
Das Blog richtet sich an Entwickler und technisch Interessierte.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1109619187990598765-3150054864749208814?l=oracle-spatial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://oracle-spatial.blogspot.com/feeds/3150054864749208814/comments/default' title='Kommentare zum Post'/><link rel='replies' type='text/html' href='http://oracle-spatial.blogspot.com/2010/09/es-geht-los.html#comment-form' title='0 Kommentare'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/3150054864749208814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1109619187990598765/posts/default/3150054864749208814'/><link rel='alternate' type='text/html' href='http://oracle-spatial.blogspot.com/2010/09/es-geht-los.html' title='Es geht los!'/><author><name>Carsten Czarski</name><uri>http://www.blogger.com/profile/15040474428905002855</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
