Oracle 10g als zentraler Bestandteil komplexer GISProjekte - PowerPoint PPT Presentation

1 / 13
About This Presentation
Title:

Oracle 10g als zentraler Bestandteil komplexer GISProjekte

Description:

Oracle 10g als zentraler Bestandteil komplexer GISProjekte – PowerPoint PPT presentation

Number of Views:64
Avg rating:3.0/5.0
Slides: 14
Provided by: GDV4
Category:

less

Transcript and Presenter's Notes

Title: Oracle 10g als zentraler Bestandteil komplexer GISProjekte


1
Oracle 10g als zentraler Bestandteil komplexer
GIS-Projekte
2
GeoDatenInfrastrukturder Wasserwirtschaftsverwalt
ung von Rheinland-Pfalz
Systemarchitektur bis 2005
Nachteile
ALK-Datenpool (Historisierung) z.Zt. ca. 64Mio.
Objekten, 220Mio. Geometrien, 26Mio.
Texten gt50GB Vektordaten (800B/Obj) Objektbildun
g Ausgestaltung ca.230Mio. Geometrien gt 115GB
Vektordaten Räumliche Abfragen Verschneidung
Erstausstattung ca. 1,8GB pro Amt gt 36GB EDBS
gesamt Fortschreibung alle 2 Monate ca.
0,1...1GB pro Amt gt 4,5GB im Januar
Digitalisierung Geometriefang Flächenbildung
3
GeoDatenInfrastruktur der Wasserwirtschaftsverwal
tung von Rheinland-Pfalz
Systemarchitektur seit 2005
Vorteile
Objektbildung
Wasserwirtschaftsverwaltung
Anwender
Aus ca. 200Mio. Linien werden 17Mio. Flächen
gebildet Komplexe Flächen in Form von Polygon,
CurvePolygon und MultiPolygon Java Stored
Procedures oder externer Java-Client zur
optimalen Skalierung
ALK-Datenpool GeoBasisDaten Fachdaten Steuerungsda
ten
Oracle 8i
Oracle 10g
Konverter GDV Spatial Mirror EDBS-Oracle-EDBS
MapServer Autodesk MapGuide
GIS-Client Autodesk MapGuide- Plugin, JavaScript-
Routinen
GIS-Client GDV-MapBuilder Applet
4
Vorteile von Oracle 10g für die
GeoDatenInfrastruktur der Wasserwirtschaftsverwalt
ung RLP
  • Umfassende Implementierung des OGC Simple Feature
    Spezifikation
  • Unterstützung von Bögen, Kreisen, Splines,
    CurvePolygons
  • Vorteile gegenüber Shapefiles und anderen
    Datenbanken
  • Keine SDE erforderlich
  • Differenzierte Konfigurationsmöglichkeiten
  • Partitionierte Tabellen
  • Differenzierte Indexunterstützung
  • Performante und zuverlässige Verschneidungsfunktio
    nen
  • Deutliche Leistungssteigerung gegenüber Oracle 8i
  • Prüf- und Bereinigungsroutinen gewährleisten
    Datenkonsistenz
  • Performante Durchführung komplexer Abfragen
  • Leistungsfähiger JDBC-Treiber
  • Hints zur Abfrage-Optimierung
  • Realisierung der GIS-Bearbeitung auf großen
    Datenbeständen
  • Lokale Datenhaltung nur theoretisch möglich
  • Notwendigkeit geeigneter Darstellungsbereiche /
    Maßstabsabhängigkeit
  • Optimale Unterstützung zentraler Datenhaltung
  • Vermeidung von syntaktischen Inkonsistenzen
  • Weniger Redundanz

5
Teilflächenberechnung für die Schlußzahlung der
InVeKoS-Betriebsprämien im Saarland
  • Ausgangssituation
  • Dezentrale Digitalisierung der Antragsdaten durch
    die Landwirte oder Digitalisierung der Schläge
    aus Katasterauszügen durch externen Dienstleister
  • Zusammenstellung der Kulissendaten aus den
    Antragsdaten der Vorjahre
  • Zusammenstellung der Kontrolldaten aus
    Fernerkundung, Verwaltungskontrolle und
    Vor-Ort-Kontrolle
  • Festgelegte Auszahlungstermine für die
    InVeKoS-Betriebsprämien müssen eingehalten werden
  • Berechnungsgrundlage für Betriebsprämien muß für
    EU reproduzierbar und überprüfbar sein
  • Verarbeitung der Daten in einer Oracle 9i
    basierten Lösung funktioniert nicht
  • Aufgabenstellung
  • Validierung und ggf. Korrektur der Antrags- und
    Kulissendaten (Ãœberlappungen, Geometriefehler)
  • Bildung von Teilflächen in Abhängigkeit von
    Kontrolldaten
  • Bildung von Teilflächen in Abhängigkeit von
    Nutzungsdaten
  • Validierung der Ergebnisdaten

6
Teilflächenberechnung für die Schlußzahlung der
InVeKoS-Betriebsprämien im Saarland
FUNCTION COMBINE (geo1 in mdsys.sdo_geometry,
geo2 in mdsys.sdo_geometry, tol in number, msg
out varchar2) RETURN mdsys.sdo_geometry AS
dif1 mdsys.sdo_geometry dif2
mdsys.sdo_geometry uni1 mdsys.sdo_geometry
uni2 mdsys.sdo_geometry ret
mdsys.sdo_geometry val varchar2(100) BEGIN
ret null uni2 null uni1
TO_POLYGON (sdo_geom.sdo_union (geo1, geo2,
tol)) if (uni1 is not null) then val
sdo_geom.validate_geometry (uni1, tol) if
(val 'TRUE') then if (sdo_geom.relate
(geo1, 'maskTOUCHDISJOINT', geo2, tol)
'FALSE') then dif1 TO_POLYGON
(sdo_geom.sdo_difference (geo1, geo2, tol))
if (dif1 is not null) then
val sdo_geom.validate_geometry (dif1, tol)
if (val ltgt 'TRUE') then
msg 'Difference 1 - 2 ist fehlerhaft '
val dif1 null
end if end if dif2
TO_POLYGON (sdo_geom.sdo_difference (geo2, geo1,
tol)) if (dif2 is not null) then
val sdo_geom.validate_geometry
(dif2, tol) if (val ltgt 'TRUE')
then msg 'Difference 2 - 1
ist fehlerhaft ' val dif2
null end if end
if if (dif1 is null) then
if (dif2 is null) then
uni2 null else
uni2 dif2 end if
else if (dif2 is null) then
uni2 dif1 else
uni2 TO_POLYGON
(sdo_geom.sdo_union (dif1, dif2, tol))
if (uni2 is not null) then
val sdo_geom.validate_geometry (uni1,
tol) if (val ltgt 'TRUE')
then msg 'Union (Dif1
Dif2) ist fehlerhaft ' val
uni2 null end
if end if end
if end if end if
if (uni2 is null) then ret uni1
else ret TO_POLYGON
(sdo_geom.sdo_difference (uni1, uni2, tol))
if (ret is not null) then
val sdo_geom.validate_geometry (ret, tol)
if (val ltgt 'TRUE') then
msg 'Combine (Union - Union (Dif)) ist
fehlerhaft ' val ret
null
  • Eingangsdaten
  • Shapefiles mit komplexen Polygonen
    (Landschaftselemente als Löcher)
  • Geometrische Inkonsistenzen (Doppelte
    Stützpunkte, Selbstüberschneidungen, Falsche
    Orientierung, offene Ringe, zu wenig Punkte)
  • Kleinräumige Abweichungen der Geometrien durch
    fehlenden Geometriefang (Klaffungen,
    Ãœberlappungen)
  • Datenübernahme
  • GDV-GeoLoader zum kontrollierten Laden der Daten
    nach Oracle 10g
  • Protokollierung der Geometriefehler
  • Korrektur der Geometriefehler falls möglich und
    tolerierbar
  • Ergebnis syntaktisch fehlerfreie Daten in Oracle
    10g
  • Geometrische Hilfsroutinen
  • TO_POLYGON zur Auflösung von GeometryCollections
  • UNION_GEO als Kombination von SDO_UNION und
    VALIDATE_GEOMETRY mit Fehlerprotokoll
  • DIFFERENCE als Kombination von SDO_DIFFERENCE und
    VALIDATE_GEOMETRY mit Fehlerprotokoll
  • INTERSECTION als Kombination von SDO_INTERSECTION
    und VALIDATE_GEOMETRY mit Fehlerprotokoll
  • COMBINE als Kombination von SDO_UNION,
    SDO_DIFFERENCE und VALIDATE_GEOMETRY mit
    Fehlerprotokoll

function TO_POLYGON (geoIn in mdsys.sdo_geometry)
return mdsys.sdo_geometry as geoOut
mdsys.sdo_geometry i integer t integer
p integer e integer j integer o
integer begin case geoIn.sdo_gtype when
2003 then geoOut geoIn when
2007 then geoOut geoIn when
2004 then geoOut mdsys.sdo_geometry(20
03, geoIn.sdo_srid, null, null, null)
geoOut.sdo_elem_info mdsys.sdo_elem_info_array(
) geoOut.sdo_ordinates
mdsys.sdo_ordinate_array() i 3
p 0 while (i lt
geoIn.sdo_elem_info.count) loop t
geoIn.sdo_elem_info(i - 1) if ((t
1003) or (t 2003)) then if (t
1003) then p p 1
end if geoOut.sdo_elem_info.
extend(3) geoOut.sdo_elem_info(geo
Out.sdo_elem_info.count - 2)
geoOut.sdo_ordinates.count 1
geoOut.sdo_elem_info(geoOut.sdo_elem_info.count -
1) t geoOut.sdo_elem_info(geoOu
t.sdo_elem_info.count) geoIn.sdo_elem_info(i)
if (i geoIn.sdo_elem_info.count)
then e geoIn.sdo_ordinates.co
unt else e
geoIn.sdo_elem_info(i 1) - 1
end if j e -
geoIn.sdo_elem_info(i - 2) 1
geoOut.sdo_ordinates.extend(j) o
1 while (o lt j) loop
geoOut.sdo_ordinates(geoOut.sdo_ordinates
.count - j o) geoIn.sdo_ordinates(e - j
o) o o 1
end loop end if i i
3 end loop if (p gt 1) then
geoOut.sdo_gtype 2007 end
if else geoOut null end
case return geoOut exception when others
then dbms_output.put_line (SQLCODE ' '
SQLERRM) return null end TO_POLYGON
. . . class com.gdv.geometry.Polygon 126
falsche Digitalisierrichtung class
com.gdv.geometry.Polygon 127 doppelte
Stützpunkte Selbstüberschneidungen class
com.gdv.geometry.Polygon 128 doppelte
Stützpunkte Selbstüberschneidungen class
com.gdv.geometry.Polygon 129 doppelte
Stützpunkte class com.gdv.geometry.Polygon 130
doppelte Stützpunkte class com.gdv.geometry.Polygo
n 131 falsche Digitalisierrichtung class
com.gdv.geometry.Polygon 132 doppelte
Stützpunkte falsche Digitalisierrichtung class
com.gdv.geometry.Polygon 133 doppelte
Stützpunkte falsche Digitalisierrichtung class
com.gdv.geometry.MultiPolygon 134 doppelte
Stützpunkte Nullpolygon . . .
FUNCTION INTERSECTION (geo1 in mdsys.sdo_geometry,
geo2 in mdsys.sdo_geometry, tol in number, msg
out varchar2) RETURN mdsys.sdo_geometry AS ret
mdsys.sdo_geometry val varchar2(100) BEGIN
ret TO_POLYGON (sdo_geom.sdo_intersection
(geo1, geo2, tol)) if (ret is not null) then
val sdo_geom.validate_geometry (ret,
tol) if (val ltgt 'TRUE') then ret
null msg 'Intersect-Fläche ist
fehlerhaft ' val end if else
msg 'Intersect ergibt null' end if
return ret exception when others then
msg 'Intersect wirft Ausnahme ' SQLCODE
' ' SQLERRM return null END
INTERSECTION
FUNCTION DIFFERENCE (geo1 in mdsys.sdo_geometry,
geo2 in mdsys.sdo_geometry, tol in number, msg
out varchar2) RETURN mdsys.sdo_geometry AS ret
mdsys.sdo_geometry val varchar2(100) BEGIN
ret TO_POLYGON (sdo_geom.sdo_difference
(geo1, geo2, tol)) if (ret is not null) then
val sdo_geom.validate_geometry (ret,
tol) if (val ltgt 'TRUE') then ret
null msg 'Differenz-Fläche ist
fehlerhaft ' val end if else
msg 'Differenz ergibt null' end if
return ret exception when others then
msg 'Differenz wirft Ausnahme ' SQLCODE
' ' SQLERRM return null END
DIFFERENCE
FUNCTION UNION_GEO (geo1 in mdsys.sdo_geometry,
geo2 in mdsys.sdo_geometry, tol in number, msg
out varchar2) RETURN mdsys.sdo_geometry AS ret
mdsys.sdo_geometry val varchar2(100) BEGIN
ret TO_POLYGON (sdo_geom.sdo_union (geo1,
geo2, tol)) if (ret is not null) then
val sdo_geom.validate_geometry (ret, tol)
if (val ltgt 'TRUE') then ret null
msg 'Union-Fläche ist fehlerhaft '
val end if else msg 'Union
ergibt null' end if return
ret exception when others then msg
'Union wirft Ausnahme ' SQLCODE ' '
SQLERRM return null END UNION_GEO
Punkte löschen
7
Teilflächenberechnung für die Schlußzahlung der
InVeKoS-Betriebsprämien im Saarland
  • Verschneidungen
  • Zusammenfassung von Antrags- und Kontrolldaten zu
    Festgesetzten Daten
  • Beseitigung von Ãœberlappungen aus den
    Festgesetzten Daten zu Einfachen Daten
  • Verschneidung von Einfachen Daten und
    Kulissendaten zu Ergebnisdaten
  • Validierung
  • Auswertung der Fehlerprotokolle
  • Auswertung der Flächensummen (Anzahl, Größe)
  • Vergleich mit Dektop-GIS-Verschneidung
  • Vergleich mit Informix-Verschneidung
  • Sichtkontrolle mittels GDV-Spatial Commander
  • Vorteile von Oracle 10g
  • Möglichkeit zur differenzierten Fehlerbehandlung
  • Performanz der Verschneidungsoperationen
  • Exakte Geometriebehandlung

8
Integration umfangreicher Rasterdatenbestände in
Oracle 10g (GeoRaster)
  • Hoher Speicherbedarf
  • Unterstützte formate
  • TIFF (World File)
  • PNG
  • JPEG
  • GIF
  • BMP
  • Speicherung der Rasterdaten in Oracle 10G
  • Oracle Import Werkzeuge
  • PL/SQL Prozeduren (SDO_GEOR)
  • GeoRasterLoader
  • Oracle Partner
  • Rasterkataloge
  • Verzeichnisse

9
Kachelung der Rasterdaten
  • Performance trotz hoher Datenmenge
  • Durch teilen der GeoRaster Objekte in kleinere
    Blöcke
  • Anzahl der Blöcke Anwendungsspezifisch wählen
  • Kachelung der Daten
  • beim Ladevorgang
  • über PL/SQL

SDO_GEOR.changeFormatCopy( georaster gt
inGeoraster , parameter gt 'blocksize(512,512
)', georaster gt outGeoraster )
10
Pyramidenbildung
  • Unterschiedliche Auflösungen durch Resampling
  • NN (nächtsgelegene Nachbarzelle)
  • Avarage4 (arithmetische Mittel - 4
    Nachbarzellen)
  • Avarage16 (arithmetische Mittel - 16
    Nachbarzellen)
  • Bilinear (bilineare Interpolation über 4
    Nachbarzellen)
  • Cubic (bikubische Faltung - 16 Nachbarzellen)
  • Pyramidenebenen bilden
  • SDO_GEOR.generatePyramid(...)
  • 'rLevel' definiert die Pyramidenebenen
  • 'resampling' definiert die Berechnungsmethode

SDO_GEOR.generatePyramid( zielgeoraster gt
georaster, parameter gt 'rLevel2,
resamplingavarage4' )
11
Reduktion der Datenmenge durch Kompression
  • Ab Oracle 10g R2
  • Kompressionsverfahren
  • JPEG (Verlustbehaftet)
  • DEFLATE ZLIB (Verlustfrei)
  • WAVELET (plug-ins) ?
  • Alle Operationen sind auch auf Komprimierten
    Daten möglich
  • Temp Tablespace Ausreichend dimensionieren
  • Daten komprimieren
  • Ladevorgang
  • PL/SQL

SDO_GEOR.changeFormatCopy( georaster gt
inGeoraster , parameter gt 'compressionDEFLAT
E', georaster gt outGeoraster )
12
Oracle 10g als zentraler Bestandteil komplexer
GIS-Projekte
  • Herkömmliches Desktop-GIS
  • Einbenutzersystem
  • Einfach zu bedienen / zu warten
  • Verarbeitung kleiner, lokaler Daten
  • Einfaches GIS-System
  • Mehrbenutzersystem
  • Gemeinsame Daten auf Datenbank
  • Verarbeitung großer Datenmengen
  • Typisches GIS-System
  • Dreischicht-System
  • Benutzerverwaltung
  • Zentrale Applikationssteuerung
  • Komplexes GIS-System
  • Verteiltes System
  • Nutzung von Standards / Diensten
  • Geringe Redundanz
  • Hohe Flexibilität

GIS-Applikation
GDV-MapBuilder
DBMS
Oracle 10g
13
Wir bedanken uns für Ihre Aufmerksamkeit
  • Kontakt
  • Dirk Hübener, Kushtrim Krasniqi
  • GDV Gesellschaft für geografische
    Datenverarbeitung mbH
  • Binger Straße 49..51 D.55218 Ingelheim
  • Fon 49.6132.7148.0 Fax ...28
  • Mail devel_at_gdv.com Web www.gdv.com
Write a Comment
User Comments (0)
About PowerShow.com