Zusammenführung von Sach- und Geodaten in einer

ZIMAS
Münchner Statistik, 4. Quartalsheft, Jahrgang 2010
Autorin: Dr. Heike Püttmann
Zusammenführung von Sach- und Geodaten in
einer Oracle-Datenbank
Mit gleich lautendem Titel wurde auf der Statistischen Woche 2010 in
München ein Vortrag gehalten. Dieser Artikel fasst die Vortragsinhalte noch
einmal zusammen.
Statt (räumliche) Auswertungen an Einzelplatzrechnern mit unübersichtlicher
Dateiablage zu realisieren, bietet eine zentrale Datenhaltung – ob in einem
großen Data Warehouse oder in einer kleinen Fachdatenbank – viele
Vorteile. Ein besonderer Mehrwert entsteht insbesondere dann, wenn neben
den Standardanalysefunktionen der Datenbank auch die räumlichen
Analysefunktionen genutzt werden. Eine Übersicht, welche Wege möglich
sind Sach- und Geodaten in eine Oracle-Datenbank zu importieren und
auszuwerten, stellt dieser Artikel zusammen. Eine Visualisierung der
Geodaten erfolgt mit einem Geographischen Informationssystem (GIS).
Technische Voraussetzungen
Schon mit freier bzw. Open Source-Software können vielerlei Aufgabenstellungen rund um die räumliche Datenanalyse – unter Windows wie unter
Linux – erledigt werden. Für typische Aufgabenstellungen brauchbare
Software listet Tabelle 1 auf.
Tabelle 1: Softwarevorschläge
Software
Tabellenkalkulation
Frei bzw. Open Source
OpenOffice CALC *)
KOffice (nur Linux)
Lizenz- bzw. kostenpflichtige
Alternative
Microsoft Excel (nur Windows)
Geographisches
gvSIG *)
Informationssystem (GIS) QGIS
Spatial Commander
ESRI Arc GIS
Oracle Datenbank
XE *)
(enthält auch SQLPLUS)
Standard Edition
Enterprise Edition
Datenbankfrontend
SQL Developer *)
Quest Software TOAD for Oracle
__________
*) Für die Beispiele dieses Artikels verwendet.
Datenbankrechte
In der Datenbank müssen ein oder mehrere Nutzer verfügbar sein, welche
die Systemrechte CREATE SESSION / TABLE / INDEX / MATERIALIZED
VIEW besitzen. Welche Oracle-Datenbank verwendet wird, ist egal.
Alle Oracle-Datenbankversionen verfügen über Spatial-Basisfunktionalitäten,
genannt Locator, siehe 1), Seite 22. Funktionalitäten der kostenpflichtigen
Datenbankoption Spatial für die Enterprise Edition der Datenbank werden
nicht in diesem Artikel angesprochen. Ist die verwendete Oracle-Datenbank
nicht lokal installiert, muss am jeweiligen PC ggf. noch ein Oracle Client für
die Kommunikation über das Netzwerk installiert werden (lizenziert über
Datenbank).
gvSIG-Konfiguration
Im GIS gvSIG, siehe 2), Seite 22, muss zunächst der OJDBC14.jar-Treiber
für den Zugriff auf Oracle-Datenbanken eingerichtet werden. Das Vorgehen
dazu ist der Programmdokumentation zu entnehmen. Als nächstes können
schon vor Beginn der Arbeiten alle erforderlichen Datenbankverbindungen
zur Oracle-Datenbank angelegt werden.
12
Statistisches Amt der Landeshauptstadt München
ZIMAS
Münchner Statistik, 4. Quartalsheft, Jahrgang 2010
Über den Menüpunkt „Anzeige“ und weiter mit „DB-Verwaltung“ bzw. der
Tastenkombination <ALT> + <J> erscheint das Konfigurationsfenster, in
dem mit dem Button <Hinzufügen> ein Unterfenster erscheint, in dem
zunächst im Drop-Down-Menü „Treiber“ der „Oracle Spatial Database
Driver“ ausgewählt wird. Dann müssen der Verbindungsname, die ServerAdresse (IP-Adresse oder Domänenname), die Port-Nummer, der
Datenbankname (SID der DB) sowie der Benutzer und dessen Passwort
angegeben werden. Für eine lokal installierte XE-Datenbank sehen die
Einträge wie in Abbildung 1 dargestellt aus.
Abbildung 1: Datenbankverbindungsparameter in gvSIG für
lokale Oracle XE-Datenbank
Die Verbindungskonfigurationseinstellungen für den SQL Developer, siehe
3), Seite 22, lauten gleich. Im Programmunterfenster „Verbindungen“ kann
über das „+“-Icon bzw. dem Kontextmenü der rechten Maustaste eine neue
Verbindung angelegt werden (vgl. Abbildung 2).
Abbildung 2:
Datenbankverbindungsparameter im SQL Developer für
lokale Oracle XE-Datenbank
Statistisches Amt der Landeshauptstadt München
13
ZIMAS
Münchner Statistik, 4. Quartalsheft, Jahrgang 2010
Begriffsdefinitionen
ESRI-Shape
Das SHAPE-Geodatenformat ist ein proprietäres Dateiformat der Firma
ESRI. Es besteht mindestens aus drei Dateien: einer DBF-, einer SHX- und
einer SHP-Datei zur Darstellung räumlicher Vektordaten. Je Shape kann nur
ein Geodatentyp (Punkt, Linie oder Polygon) gespeichert werden. Über die
Jahre wurde dieses Format zum Standard für die Datenübergabe von
Geoinformationen und kann von fast allen GIS gelesen werden. Wird ein
Shape in die Datenbank eingelesen, werden die Daten dort in einer
Datenbanktabelle gespeichert.
Oracle SDO_GEOMETRY
In Oracle-Datenbanken werden Geodaten in einer Spalte vom Typ
(Geo)Daten – eigentlich Objekttyp – SDO_GEOMETRY gespeichert. Dieser
Spaltentyp kann neben den Sachdatenspalten in Tabellen oder Materialized
Views verwendet werden. Auf den Spalten vom Typ SDO_GEOMETRY
muss für die Anwendung von räumlichen Operatoren ein räumlicher Index
(Indextyp „spatial“) erstellt werden. Ferner benötigt die Geodatentabelle noch
eine weitere Spalte mit einem eindeutigen Schlüssel (unique key).
Schließlich muss noch in die Tabelle USER_SDO_GEOM_METADATA
(eigentlich ein View, welcher in die Tabelle MDSYS.SDO_GEOM_
METADATA_TABLE schreibt) ein Eintrag geschrieben werden, welcher die
Dimensionen, äußere Grenzen und Toleranzen der Dimensionen der
SDO_GEOMETRY-Spalte der Geodatentabelle beschreibt.
Geokodierung
Eine Geokodierung von Sachdaten kann „koordinatenfrei“ durch die
Verknüpfung von Sach- und Geodaten über ein gemeinsames Sachmerkmal
(z.B. Name der Raumeinheit) erfolgen. Wichtig ist hier der gleiche Zeitbezug
der beiden Datenquellen, da es bei größeren zeitlichen Abweichungen
vermehrt nicht zuordbare Daten geben wird, z.B. durch Änderungen beim
Verknüpfungsmerkmal. Räumlich höher auflösende Auswertungen als die
verwendeten Geodaten sind bei derart verknüpften Daten nicht möglich.
Sind die Sachdaten durch Koordinaten oder Flächenbezüge georeferenziert,
können vielfältige räumliche Analysen durchgeführt werden. Die räumlichen
Analysemöglichkeiten von Oracle Locator stellt Tabelle 2 zusammen.
Weitere Möglichkeiten der Geodatenverarbeitung sind nicht Gegenstand
dieses Artikels.
Tabelle 2: Räumliche
Analysemöglichkeiten von
Oracle Locator
Art
Name
Räumliche Operatoren
SDO_FILTER
SDO_JOIN
SDO_NN
SDO_NN_DISTANCE
SDO_RELATE bzw. Unterfunktionen
SDO_ANYINTERACT
SDO_CONTAINS
SDO_COVEREDBY
SDO_COVERS
SDO_EQUAL
SDO_INSIDE
SDO_ON
SDO_OVERLAPBDYDISJOINT
SDO_OVERLAPBDYINTERSECT
SDO_OVERLAPS
SDO_TOUCH
SDO_WITHIN_DISTANCE
14
Aggregatfunktion
SDO_AGGR_MBR
Räumliche Funktion
SDO_DISTANCE
Statistisches Amt der Landeshauptstadt München
ZIMAS
Münchner Statistik, 4. Quartalsheft, Jahrgang 2010
Daten in die Datenbank importieren
Sach- und Geodaten können auf verschiedensten Wegen in die Datenbank
importiert werden. Einige davon sollen im weiteren vorgestellt werden (vgl.
Abbildung 3).
Abbildung 3: Importwege in
eine Oracle-Datenbank
SQL Loader
Der SQL Loader, siehe 4), Seite 22, bietet die Möglichkeit Daten aus ASCIITextdateien zu importieren. Das Werkzeug ist ein Kommandozeilenprogramm auf Betriebssystem-Ebene und erfordert mindestens eine
Steuerdatei (CTL-Datei). In der Steuerdatei ist definiert, wie die Quelldatei zu
lesen ist und in welches Ziel, d.h. Datenbanktabelle, die Daten geschrieben
werden sollen. Eine SQL Loader-Ausführung wird neben der Bildschirmausgabe auch in einer LOG-Datei protokolliert. Fehlerhafte oder wegen
Regelverletzungen abgelehnte Datensätze werden separat protokolliert
(BAD- bzw. DIS-Datei). Beispiele für eine Steuerdatei zeigt Listing 1,
beispielhafte Programmaufrufe stellt Listing 2 dar.
Liegen Daten in Microsoft Excel oder OpenOffice Calc vor, sind die Daten
von dort aus als TXT- (feste Breite) oder CSV-Datei (mit Feldtrenner) zu
speichern. Für den letzteren Fall empfehlen sich die Einstellungen
Trennzeichen ';', Texttrenner '“' sowie Zellinhalte 'wie angezeigt'.
Bei Plattform-übergreifenden Arbeiten ist auch der Zeichensatz wichtig zu
merken.
Statistisches Amt der Landeshauptstadt München
15
ZIMAS
Münchner Statistik, 4. Quartalsheft, Jahrgang 2010
Listing 1: Beispiele für SQL Loader-Steuerdateien
# Mit (Geo)daten in CTL-Dtei
LOAD DATA
INFILE *
APPEND
CONTINUEIF NEXT(1:1) = '#'
INTO TABLE T_VERKAUFSGEBIETE_GEO
FIELDS TERMINATED BY '|'
TRAILING NULLCOLS (
ROW_ID NULLIF ROW_ID = BLANKS,
OGR_FID,
X,
Y,
VI_NUMMER NULLIF VI_NUMMER = BLANKS,
ADMPLAYER NULLIF ADMPLAYER = BLANKS,
GEOM COLUMN OBJECT
(
SDO_GTYPE
INTEGER EXTERNAL,
SDO_SRID
INTEGER EXTERNAL,
SDO_ELEM_INFO
VARRAY TERMINATED BY '|/'
(X
FLOAT EXTERNAL),
SDO_ORDINATES
VARRAY TERMINATED BY '|/'
(X
FLOAT EXTERNAL)
)
)
BEGINDATA
A|23451|4465686.300049000|5330305.500000000|06.1.2|
|
#3|31468|
#1|3|1|/
#4465579.404808|5329603.822077|0.000000|4465692.967900|5329614.256000|0.000000|
#4465789.334980|5329627.021159|0.000000|4465878.392800|5329643.354700|0.000000|
...
# Daten liegen in separater ASC-Datendatei
LOAD DATA
CHARACTERSET WE8PC850
INFILE "GV100AD_311208_Jahr_60.asc"
BADFILE "GV100AD_311208_Jahr_60.bad"
DISCARDFILE "GV100AD_311208_Jahr_60.dis"
TRUNCATE
INTO TABLE T_AGS_DIM
(
EF1 POSITION(1:2) CHAR,
EF2 POSITION(3:10) CHAR,
EF3 POSITION(11:18) CHAR,
...
)
Listing 2: Beispiel für SQL Loader-Kommandozeilenaufruf
DOS>
sqlldr NUTZER@xe T_VERKAUFSGEBIETE_GEO.ctl data= T_VERKAUFSGEBIETE_GEO.txt
log=T_VERKAUFSGEBIETE_GEO.log bad=T_VERKAUFSGEBIETE_GEO.bad
discard=T_VERKAUFSGEBIETE_GEO.dis
IMP
Für die offline-Übertragung von Datenbankinhalten zwischen zwei Datenbanken, kann mit dem Export-Werkzeug EXP, siehe 4), Seite 22, auf
Betriebssystemebene ein binärer Dump erstellt werden. Diese enthält
neben Objektdefinitionen, wie Tabellen, auch Tabelleninhalte und verknüpfte
Objekte (Indexe, Kommentare und erteilte Rechte). Mit IMP [ebenda] können
die Inhalte der Dump-Datei wieder in eine Datenbank gelesen werden.
Beispiele für IMP-Ausführung gibt Listing 3. Im Gegensatz zur interaktiven
Parameterübergabe ermöglicht eine Ausführung mit Kommandozeilenparameter eine automatisierte Ausführung.
16
Statistisches Amt der Landeshauptstadt München
ZIMAS
Münchner Statistik, 4. Quartalsheft, Jahrgang 2010
Listing 3: Beispiele für IMP-Kommandozeilenaufruf
# Interaktiv
OS>
imp NUTZER/PASSWORT@DATENBANK
# Mit Kommandozeilenparameter
OS> imp NUTZER/PASSWORT@DATENBANK
fromuser=QUELLNUTZER file=T_KFZ_BEWEGUNGEN_FAKT.dmp touser=NUTZER tables= T_KFZ_BEWEGUNGEN_FAKT
DML
Daten können aber auch interaktiv oder mit einem Skript mit SQL (DDL –
data definition language / DML – data manipulation language) in die
Datenbank gelesen werden. Ist die Zieltabelle noch nicht in der Datenbank
vorhanden, muss diese zunächst angelegt werden. Dann können Datensätze
eingefügt werden – dies gilt auch für den zuvor beschriebenen SQL Loader.
Eine weitere DML-Variante ist, Tabelleninhalte aus einer anderen Datenbank, über einen Datenbanklink (online) einzulesen. Listing 4 stellt Beispiele
hierfür zusammen.
Listing 4: SQL-Kommandozeilenbefehle für DDL /DML
SQL>
create table
SPALTENNAME1
SPALTENNAME2
SPALTENNAME3
;
TABELLENNAME (
SPALTENFORMAT,
SPALTENFORMAT,
SDO_GEOMETRY)
SQL>
insert into TABELLENNAME values(
WERT1,
WERT2,
sdo_geometry(
SDO_GTYPE-NUMBER,
SDO_SRID NUMBER,
[SDO_POINT],
SDO_ELEM_INFO,
SDO_ORDINATES)
;
SQL>
create table as
select *
from quelltabelle@ferndatenbank
;
SQL Developer
Auch Datenbankfrontends wie der SQL Developer bieten Importmöglichkeiten. Im Kontextmenü von „Tabellen“ können über den Menüpunkt „Daten
importieren“ Microsoft Excel oder Textdateien (Trennzeichen-getrennt oder
feste Feldbreite) in vier Schritten importiert werden.
Abbildung 4: SQL Developer
Kontextmenü für Datenimport
Statistisches Amt der Landeshauptstadt München
17
ZIMAS
Münchner Statistik, 4. Quartalsheft, Jahrgang 2010
Nacharbeiten
Sofern Geodaten samt räumlichem Index nicht schon im Dump enthalten
waren, sind für diese und alle anderen vorgenannten Importvarianten noch
Nacharbeiten erforderlich, wenn eine Geodatenspalte nutzbar gemacht
werden soll. Zunächst ist ein räumlicher Index auf die SDO_GEOMETRYSpalte zu erstellen, dann der Eintrag in USER_SDO_GEOM_METADATA
vorzunehmen (siehe Listing 5).
Listing 5: Erforderliche Nacharbeiten nach DML-Import
SQL>
create index INDEXNAME
on TABELLENNAME (SPALTENNAME)
indextype is mdsys.spatial_index
;
SQL> insert into user_sdo_geom_metadata
(table_name,
column_name,
diminfo,
srid)
values (
'TABELLENNAME',
'SPALTENNAME',
sdo_dim_array(
sdo_dim_element('x', MIN, MAX, TOLERANZ),
sdo_dim_element('y', MIN, MAX, TOLERANZ)
),
SRID
)
;
gvSIG
Mit der GIS-Anwendung gvSIG können Geodaten auch direkt in das
Datenbankschema des angemeldeten Benutzers geschrieben werden.
Dazu ist zunächst in einer Ansicht die in die Datenbank zu importierende
Shape-Datei zu laden. Nach aktiveren des Layers kann unter dem
Menüpunkt „Layer“ mit „Exportieren nach...“ und Wahl von „Oracle Spatial“
die Datenbank als Ziel ausgewählt werden. Es ist dann lediglich noch der
Name der Zieltabelle anzugeben. Ist schon eine Tabelle mit diesem Namen
vorhanden, wird die bestehende gelöscht und eine neue angelegt und mit
den Daten der Shape-Datei befüllt.
shp2sdo
Auf der Kommandozeile des Betriebssystems kann das Programm shp2sdo,
siehe 5), Seite 22, Shape-Dateien mit dem Ergebnis aufbereiten, dass zwei
Dateien entstehen: eine SQL-Datei mit DDL für die Erstellung der Zieltabelle
sowie einer CTL-Datei für einen Ladelauf mit dem SQL Loader in die Zieltabelle. Hierbei sind die Daten in der CTL-Datei enthalten (ähnlich Listing 1,
oben).
Da das Programm schon sehr alt ist, sich in den neueren Datenbankversionen aber mittlerweile Änderungen im Objekttyp SDO_GEOMETRY
ergeben haben, sind noch zwei Nachbearbeitungsschritte erforderlich: zum
einen muss der Index auf die SDO_GEOMETRY-Spalte auf eine höhere
Version migriert und abschließend der Index neu aufgebaut werden.
Den kompletten Arbeitsablauf stellt Listing 6 dar.
18
Statistisches Amt der Landeshauptstadt München
ZIMAS
Münchner Statistik, 4. Quartalsheft, Jahrgang 2010
Listing 6: Beispiel Kommandozeilenaufruf von shp2sdo und Folgeverarbeitungsschritte.
# Schritt 1: shp2sdo ausführen
OS> shp2sdo.exe SHAPEDATEINAME ZIELTABELLENNAME -d -v -s SRID
# An Datenbank anmelden und das in Schritt 1 entstandene
# SQL-Skript ausführen
SQL> sqlplus NUTZER/PASSWORT@DATENBANK @ZIELTABELLENNAME.sql
# Auf Betriebsssystemebene den SQL Loader mit im Schritt 1
# erstellten CTL-Datei ausführen
Os>
qlldr NUTZER/PASSWORT@DATENBANK CONTROL=ZIELTABELLENNAME.ctl
# An Datenbank anmelden und
# 1. SDO_GEOMETRY-Spalte auf höhere Version migrieren
SQL> execute sdo_migrate.to_current('TABELLENNAME','SDO_GEOMETRY-SPALTENNAME')
;
# 2. einen Index auf die Geodatenspalte aufbauen
SQL> create index INDEXNAME on TABELLENNAME(SDO_GEOMETRY-SPALTENNAME)
indextype is mdsys.spatial_index
;
Je nach Aufgabenstellung – sporadische vs. regelmäßige Auswertungen /
Datenaufbereitung – ist es u.U. wünschenswert, die Arbeitsabfolgen zu
automatisieren. Möglich ist dies nur, wenn Kommandozeilenprogramme
verwendet werden (siehe Tabelle 3). In Skripten können dann die Arbeitsabfolgen zusammengestellt werden.
Tabelle 3: Einsatzbereiche
der vorgestellten Software
Werkzeug
Typ
Anwendungsbereich
Automatisierbar?
SQL Loader
Kommandozeilenprogramm
Betriebssystem
ja
Import binärer ExportDump-Dateien
Kommandozeilenprogramm
Betriebssystem
ja
DML / DDL
Kommandozeilenprogramm
SQL
ja
gvSIG
Graphische Benutzerschnittstelle
Betriebssystem
nein
SQL Developer
Graphische Benutzerschnittstelle
Betriebssystem
nein
Kommandozeilenprogramm
Betriebssystem
ja
shp2sdo.exe
Ferner gibt es noch weitere Importmöglichkeiten wie Oracle Data Pump,
online-Eingabemaske, etc., welche in diesem Artikel nicht weiter erläutert
werden.
Räumliche Auswertungen
Räumliche Auswertungen können in der Datenbank zum einen als ad hocAuswertungen per SQL-select formuliert werden. Zum anderen kann ein
Abfrageergebnis auch kartographisch in einem GIS dargestellt werden, wenn
das SQL-select in einem materialized view festgeschrieben wird.
Ad hoc Auswertungen
Beispiele für Ad hoc Auswertungen mit zwei Operatoren aus Tabelle 1 zeigt
Listing 7. Das obere Beispiel ist eine Umkreisabfrage (700 m) um eine zur
Laufzeit übergebenen Punktkoordinate (GK, R 4464346.000,H 5334053. 000),
mit der Fragestellung wie viele 2007 fertiggestellte Neubauten (in Tabelle
T_BAU_BEWEGUNGEN_FAKT, Spalte ANZAHL_FERTIG_NEUBAU; mit
Punktkoordinaten der Bauadresse in Spalte GEOM) darin zu finden sind.
Das untere Beispiel berechnet mit einer Punkt-in-Polygon-Abfrage, wie viele
Kfz-Erstzulassungen 2009 in Verkaufsgebieten berichtet wurden. Die Tabelle
T_KFZ_BEWEGUNGEN_FAKT enthält dabei die Erstzulassungen mit Punktkoordinaten der Zulassungsadresse in der Spalte GEOM. Die Geometrien
der Verkaufsgebiete enthält Spalte GEOM der Tabelle
T_VERKAUFSGEBIETE_GEO.
Statistisches Amt der Landeshauptstadt München
19
ZIMAS
Münchner Statistik, 4. Quartalsheft, Jahrgang 2010
Listing 7: Beispiele für ad hoc-Auswertungen
SQL>
select sum(F.ANZAHL_FERTIG_NEUBAU) FERTIGGESTELLTE_NEUBAUTEN
from
T_BAU_BEWEGUNGEN_FAKT F
where sdo_within_distance(F.GEOM,
sdo_geometry(2001,31468,
sdo_point_type(4464346.000,5334053.000,null),
null,null), 'distance=700 unit=METER')='TRUE'
and F.BERICHTSJAHR = 2007
;
select
G.VI_NUMMER VERKAUFSGEBIET,
ANZAHL_ERSTZULASSUNGEN) KFZ_ERSTZULASSUNGEN
from
T_KFZ_BEWEGUNGEN_FAKT F,
T_VERKAUFSGEBIETE_GEO G
where sdo_relate(F.GEOM,
G.GEOM,
'mask=ANYINTERACT')='TRUE'
and F.BERICHTSJAHR = 2009 and G.GEBIETSSTAND = 2009
group by G.VI_NUMMER
order by 1
;
materialized view für Kartendarstellung
Für die kartographische Darstellung in einem GIS wird im Listing 8 ein
materialized view in der Datenbank erstellt. Wie zuvor erwähnt, kann eine
Geokodierung auch koordinatenfrei erfolgten durch Verknüpfung über ein
gemeinsames Merkmal in Sach- und Geodatentabellen (Listing 8,
Wanderungssaldo der Wohnberechtigten in München nach Viertel).
Hierbei ist wichtig, dass Sach- und Geodaten einen gleichen Zeitbezug
haben – insbesondere wenn das Verknüpfungsmerkmal veränderlich ist.
Die Auswirkungen bei Nichtbeachtung als Ergebnis von Listing 8 zeigt
Abbildung 5. Danach kann für einige Viertel keine Verknüpfung zwischen
Sach- und Geodaten hergestellt werden, da sich die Vierteleinteilung 2011
geändert hat.
Listing 8: Koordinatenfreie Geokodierung und Auswertung für die Darstellung im GIS (vgl. Abbildung 5)
SQL>
create materialized_view MV_WANDERSALDO_VIERTEL_2011
as
select F.*,
D.GEOM
from
(
select VIERTEL_SCHLUESSEL,
sum(SALDO_WB) SALDO_WB
from T_WANDERUNG_FAKT
where STAND = 2010
group by VIERTEL_SCHLUESSEL
) F,
(
select VIERTEL_SCHLUESSEL,
GEOM
from T_VIERTEL_2011_GEO -- Stand 2011
) D
where F.VIERTEL_SCHLUESSEL = D.VIERTEL_SCHLUESSEL
;
SQL>
INSERT
INTO USER_SDO_GEOM_METADATA
(TABLE_NAME, COLUMN_NAME, DIMINFO, SRID)
VALUES
( 'MV_WANDERSALDO_VIERTEL_2011',
'GEOM',
MDSYS.SDO_DIM_ARRAY (
MDSYS.SDO_DIM_ELEMENT('X', 4452800.000000,
4480000.000000, 0.000000050),
MDSYS.SDO_DIM_ELEMENT('Y', 5324500.000000,
5345700.000000, 0.000000050) ),
82337
)
;
20
Statistisches Amt der Landeshauptstadt München
ZIMAS
Münchner Statistik, 4. Quartalsheft, Jahrgang 2010
noch Listing 8:
SQL> CREATE INDEX MV_WANDERSALDO_VIERTEL_2011_SIX ON MV_WANDERSALDO_VIERTEL_2011
(geometry)
INDEXTYPE IS mdsys.spatial_index
;
Abbildung 5: Fehlerhafte Auswertungen bei verschiedenen Zeitbezügen von Sach- und Geodaten (vgl. Listing 8)
Auswertungen im GIS
gvSIG bietet ebenfalls etliche Analysemöglichkeiten. Eine oft
wiederkehrende Aufgabenstellung ist z.B. die Erstellung einer Zuordnung
von Punkten zu Flächen, ähnlich einer Zuordnung von Adressen zu
Raumeinheiten. Hierzu fügt man zunächst die notwendigen Layer aus der
Datenbank einer Ansicht hinzu. Über den Menüpunkt Ansicht und weiter
„Geoprocess toolbox“ öffnet sich in einem neuen Fenster ein Navigationsbaum, in dem man für die genannte Aufgabenstellung Geoprocesses /
Analisis / Proximity / Spatial Join wählt und mit dem Button <Open
Geoprocess> bestätigt. Im Folgefenster gibt man als input cover den PunktLayer und als clip cover das Flächen-Layer. Nach Aktivierung von „use
nearest geometry“ benennt man zuletzt noch das ouput cover, welches in
der derzeitigen gvSIG-Version leider nur als SHAPE in das Dateinsystem
geschrieben werden kann (späterer Datenimport in die Datenbank siehe
weiter oben). Mit dem Button <OK> wird die Geodatenverarbeitung gestartet.
Nach Beendigung des Vorgangs fragt das Programm, ob das Ergebnis
ebenfalls in der Ansicht dargestellt werden soll. Die Attributtabelle der neuen
Shapes enthält dann sowohl die Informationen aus den Punktdaten als auch
den Flächendaten.
Statistisches Amt der Landeshauptstadt München
21
ZIMAS
Münchner Statistik, 4. Quartalsheft, Jahrgang 2010
Beachtenswertes
Stolpersteine beim Datenimport bilden oft die verwendeten Zeichensätze.
Damit ggf. Umlaute auch richtig in der Datenbank ankommen, muss z.B. ggf.
beim SQL Loader der Zeichensatz der Quelldatei mit angegeben werden
(siehe Listing 1, unten). Auch die NLS-Einstellungen der Datenbank (siehe
Datenbank-View V$NLS_PARAMETERS) müssen beachtet werden.
So kann u.U. Punkt statt Komma als Dezimaltrenner definiert sein (vgl.
Listing 8, Mitte). Nicht unerwähnt bleiben soll schließlich die Notwendigkeit,
dass bei der Kombination mehrerer Geodatenquellen mittels Locator/Spatial-Funktionalitäten (vgl. Tabelle 2) – alle das gleiche Koordinatensystem (SRID) besitzen müssen.
Ein großer Vorteil einer zentralen Datenhaltung in einer Datenbank ist, dass
auf die Daten gleichzeitig von mehreren Nutzern und unterschiedlichen
Programmen zugegriffen werden kann. Die Zugriffsteuerung, z.B. zur
Wahrung von Lizenzrechten, kann alleinig mit sehr einfachen Datenbankmitteln realisiert werden. Ferner kann die Datensicherung ebenfalls zentral
gesteuert werden. Je nach Anspruch müssen allerdings mehr oder weniger
ausgedehnte Datenbankkenntnisse aufgebaut werden.
Neben Datenbankkenntnissen ist das Wissen über die Nutzung und die
Möglichkeiten von GIS, insbesondere zur Visualisierung der gewonnenen
Ergebnisse, als wichtig zu nennen. Beide Bereiche – Datenbank und GIS –
können als anspruchsvoll gelten, wobei der Aufbau eigener Kenntnisse in
diesen Bereichen die Abhängigkeit von anderen Dienststellen mindert und
dadurch auch neue Möglichkeiten geschaffen werden.
Waren früher noch hohe Kosten für die Softwarebeschaffung (Kaufpreis,
Lizenzen, Support) anzusetzen, steht heute freie Software zur Verfügung.
Diese bietet meist alle erforderlichen Basisfunktionalitäten. Eher bzw. immer
noch zu Buche schlagen dabei die Kosten für Geodaten. Einzelfallspezifisch
richten sich diese meist nach Art des Publikationsmediums (Print, Web),
Auflage und Anzahl von Karten bzw. Nutzeranzahl.
Weitergehende Informationen
•
•
•
•
•
22
1) Oracle Spatial
Oracle Dokumentation „Oracle Spatial User's Guide and Reference“
der entsprechenden Datenbankversion auf
http://www.oracle.com/technetwork/indexes/downloads/index.html
darin im Anhang Auflistung der Locator-Funktionalitäten
2) gvSIG
http://www.gvsig.org
3) SQL Developer
http://www.oracle.com/technetwork/developer-tools/sqldeveloper/overview/index.html
4) SQL Loader, EXP und IMP
Oracle Dokumentation „Oracle Database Utilities“ der
entsprechenden Datenbankversion auf
http://www.oracle.com/technetwork/indexes/downloads/index.html
5) shp2sdo
http://www.oracle.com/technetwork/database/options/spatial/index093371.html
Statistisches Amt der Landeshauptstadt München