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