Sonntag, 4. März 2012

Was tun, wenn die Datenbank ein Koordinatensystem nicht kennt?

Ein solcher Fall kann vorkommen. Dann liefert Ihnen die SQL-Abfrage wie im nachfolgenden Fall
select * 
  from cs_srs 
 where srid = 4647;
eine leere Ergebnismenge. Aber das ist kein Grund zur Panik.

Denn das Problem ist mit wenigen INSERT-Befehlen behoben, sofern man nicht bis zum nächsten DB-Release warten möchte.

Was wird benötigt?
  • Die Informationen zum fehlenden Koordinatensystem.
    Für unser Beispiel 4647 sind die über die Suchfunktion auf den EPSG-Seiten zu finden.
  • Dazu braucht es noch die Angaben zur Transformation.
    Die sind im Bereich Conversion zu finden, wenn man auf den Link View öffnet.
    Wie man dort sieht, ist der dazugehörige EPSG-Code 4648. Und auch dafür gibt es einen Eintrag auf den EPSG-Seiten.
So. nun kann es auch schon losgehen.
Zuerst wird die Transformation eingetragen, da später beim INSERT des Koordinatensystems auf diese referenziert wird.
insert into sdo_coord_ops (
  COORD_OP_ID,
  COORD_OP_NAME,
  COORD_OP_TYPE,
  SOURCE_SRID,
  TARGET_SRID,
  COORD_TFM_VERSION,
  COORD_OP_VARIANT,
  COORD_OP_METHOD_ID,
  UOM_ID_SOURCE_OFFSETS,
  UOM_ID_TARGET_OFFSETS,
  INFORMATION_SOURCE,
  DATA_SOURCE,
  SHOW_OPERATION,
  IS_LEGACY,
  LEGACY_CODE,
  REVERSE_OP,
  IS_IMPLEMENTED_FORWARD,
  IS_IMPLEMENTED_REVERSE)
values (
  4648,                                        -- Code
  'UTM zone 32N with prefix',                  -- Name
  'CONVERSION',                                -- Operation
  NULL,
  NULL,
  NULL,
  NULL,
  9807,                                        -- Transverse Mercator (= Operation Method Name)
  NULL,
  NULL,
  'Landesvermessungsamt Schleswig-Holstein.',  -- Information Source
  'OGP',                                       -- Data Source
  1,                                           -- 
  'FALSE',                                     -- Not legacy  
  NULL,
  1,                                           -- Operation is reversible
  1,                                           -- Forward
  1);                                          -- and reverse
Als Wert für die Spalte COORD_OP_TYPE ist CONVERSION einzutragen. Informationen zu möglichen anderen Werten sind im Oracle Spatial Developer's Guide zu finden.
Der Wert für die Spalte COORD_OP_METHOD_ID wurde mit der nachfolgenden Abfrage ermittelt.
-- Operation Method
select * 
  from sdo_coord_op_methods 
 where coord_op_method_name = 'Transverse Mercator';  
-- COORD_OP_METHOD_ID = 9807
Nun sind noch die Parameterwerte wie in der Abbildung angegeben einzufügen.
Dazu braucht es ein paar IDs aus den Tabellen SDO_COORD_OP_PARAMS und SDO_UNIT_OF_MEASURE.
-- Conversion parameters
select parameter_id 
  from sdo_coord_op_params 
 where parameter_name = 'Latitude of natural origin';     -- 8801
select parameter_id 
  from sdo_coord_op_params 
 where parameter_name = 'Longitude of natural origin';    -- 8802
select parameter_id 
  from sdo_coord_op_params 
 where parameter_name = 'Scale factor at natural origin'; -- 8805
select parameter_id 
  from sdo_coord_op_params 
 where parameter_name = 'False easting';                  -- 8806
select parameter_id 
  from sdo_coord_op_params 
 where parameter_name = 'False northing';                 -- 8807

 -- Units of measure
select uom_id 
  from sdo_units_of_measure 
 where unit_of_meas_name = 'degree';                      -- 9102
select uom_id 
  from sdo_units_of_measure 
 where unit_of_meas_name = 'unity';                       -- 9201
select uom_id 
  from sdo_units_of_measure 
 where unit_of_meas_name = 'metre';                       -- 9001
Die 5 Parameter Latitude of natural origin, Longitude of natural origin, Scale factor at natural origin, False easting und False northing werden jetzt nacheinander in die Tabelle SDO_COORD_OP_PARAM_VALS eingetragen.
insert into sdo_coord_op_param_vals (
  COORD_OP_ID,
  COORD_OP_METHOD_ID,
  PARAMETER_ID,
  PARAMETER_VALUE,
  PARAM_VALUE_FILE_REF,
  PARAM_VALUE_FILE,
  PARAM_VALUE_XML,
  UOM_ID)
values (
  4648,
  9807,
  8801,             -- Latitude of natural origin
  0,
  NULL,
  NULL,
  NULL,
  9102);            -- degree

insert into sdo_coord_op_param_vals (
  COORD_OP_ID,
  COORD_OP_METHOD_ID,
  PARAMETER_ID,
  PARAMETER_VALUE,
  PARAM_VALUE_FILE_REF,
  PARAM_VALUE_FILE,
  PARAM_VALUE_XML,
  UOM_ID)
values (
  4648,
  9807,
  8802,             -- Longitude of natural origin
  9,
  NULL,
  NULL,
  NULL,
  9102);            -- degree

insert into sdo_coord_op_param_vals (
  COORD_OP_ID,
  COORD_OP_METHOD_ID,
  PARAMETER_ID,
  PARAMETER_VALUE,
  PARAM_VALUE_FILE_REF,
  PARAM_VALUE_FILE,
  PARAM_VALUE_XML,
  UOM_ID)
values (
  4648,
  9807,
  8805,             -- Scale factor at natural origin
  .9996,
  NULL,
  NULL,
  NULL,
  9201);            -- unity

insert into sdo_coord_op_param_vals (
  COORD_OP_ID,
  COORD_OP_METHOD_ID,
  PARAMETER_ID,
  PARAMETER_VALUE,
  PARAM_VALUE_FILE_REF,
  PARAM_VALUE_FILE,
  PARAM_VALUE_XML,
  UOM_ID)
values (
  4648,
  9807,
  8806,             -- False easting
  32500000,
  NULL,
  NULL,
  NULL,
  9001);            -- metre

insert into sdo_coord_op_param_vals (
  COORD_OP_ID,
  COORD_OP_METHOD_ID,
  PARAMETER_ID,
  PARAMETER_VALUE,
  PARAM_VALUE_FILE_REF,
  PARAM_VALUE_FILE,
  PARAM_VALUE_XML,
  UOM_ID
values (
  4648,
  9807,
  8807,             -- False northing
  0,
  NULL,
  NULL,
  NULL,
  9001);            -- metre
Abschliessend ist dann nur noch das Koordinatensystem 4647 einzutragen in den dafür vorgesehenen View SDO_COORD_REF_SYSTEM.
insert into sdo_coord_ref_system (
  SRID,
  COORD_REF_SYS_NAME,
  COORD_REF_SYS_KIND,
  COORD_SYS_ID,
  DATUM_ID,
  GEOG_CRS_DATUM_ID,
  SOURCE_GEOG_SRID,
  PROJECTION_CONV_ID,
  CMPD_HORIZ_SRID,
  CMPD_VERT_SRID,
  INFORMATION_SOURCE,
  DATA_SOURCE,
  IS_LEGACY,
  LEGACY_CODE,
  LEGACY_WKTEXT,
  LEGACY_CS_BOUNDS,
  IS_VALID,
  SUPPORTS_SDO_GEOMETRY)
values (
  4647,                                       -- Code
  'ETRS89 / UTM zone N32',                    -- Name
  'PROJECTED',                                -- Projected CRS
  4400,                                       -- Erläuterung nachfolgend
  NULL, 
  6258,                                       -- Erläuterung nachfolgend
  4258,                                       -- Erläuterung nachfolgend
  4648,                                       -- Zuvor registrierte Operation
  NULL,
  NULL,
  'Landesvermessungsamt Schleswig-Holstein',  -- Information Source
  'OGP',                                      -- Data Source
  'FALSE',                                    -- Not legacy
  NULL,
  NULL,
  NULL,
  'TRUE',                                     -- Is valid
  'TRUE');

commit;
Um den Wert 4400 für COORD_SYS_ID zu ermitteln, muss man ein bisschen genauer in die Tabelle SDO_COORD_SYS schauen. Und findet dann:
-- Coordinate axes: Easting, Northing. UoM = m
select * 
  from sdo_coord_sys 
 where coord_sys_name like 
       '%2D%Axes: easting, northing (E,N)%Orientations: east, north%UoM: m.';  
-- COORD_SYS_ID = 4400
GEOG_CRS_DATUM_ID und SOURCE_GEOG_SRID sind auch wieder mit den entsprechenden Abfragen zu ermitteln.
-- Geodetic Datum = European Terrestrial Reference System (ETRS) 1989
select * 
  from sdo_datums 
 where datum_name = 'European Terrestrial Reference System 1989';  
-- DATUM_ID = 6258

select * 
  from sdo_coord_ref_sys 
 where coord_ref_sys_name = 'ETRS89'
   and coord_ref_sys_kind like '%2D%';   
-- SRID = 4258                             
Das Ergebnis kann nun begutachtet werden:
select *
  from cs_srs 
 where srid = 4647;
Mehr Infos sind natürlich im Oracle Spatial Developer's Guide zu finden.

Mittwoch, 9. November 2011

Oracle sponsort das Geospatial World Forum 2012 vom 23.-27. April 2012 in Amsterdam

Ein Geospatial World Forum in Europa gab es schon eine Weile nicht.
Aber jetzt ist eines in Vorbereitung und ich möchte alle diejenigen motivieren, sich aktiv daran zu beteiligen, welche tolle Projekte auf Basis von Oracle Spatial Technologien auf die Beine gestellt haben.
Abstracts können noch bis zum 20. November 2011 eingereicht werden.
Mehr Informationen zur Veranstaltung finden sich hier.

Dienstag, 11. Oktober 2011

Beiträge zu "Spatial" auf der Oracle OpenWorld im Oktober 2011

Die Beiträge zur Oracle OpenWorld 2011 sind bereits zum großen Teil aus dem Internet abrufbar, so auch die zu Spatial. Einfach den Content Catalog aufrufen, das Stichwort "Spatial" in das Suchfeld eintragen und auf die Schaltfläche Search klicken.

Standardkonforme Speicherung von Geodaten in der Oracle Datenbank jetzt auf Youtube

Wir haben einen Überblick zu Oracle Spatial multimedial aufbereitet.
Sehen Sie jetzt also in 2 Teilen "Standardkonforme Speicherung von Geodaten": Dank an den Oracle-Werkstudenten Peter Lenke in Potsdam dafür. Und natürlich an Michal.

Dienstag, 27. September 2011

Oracle Spatial auf der "DOAG2011" in Nürnberg

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 am Thema interessierte daher hier eine Zusammenstellung. Das gesamte Konferenzprogramm findet sich, wie immer auf der DOAG-Webseite.

  • Einsatz digitaler Landkarten in der Analyse von Business Informationen
    Gerrit Schreiber, GfK Geomarketing GmbH
    15.11.2011 14:00 - 14:45 Uhr - Raum Oslo
     
  • Get extreme performance with Oracle Spatial on Oracle Exadata
    Hans Viehmann, Oracle Deutschland B.V. & Co KG
    16.11.2011 10:00 - 10:45 Uhr - Raum Tokio
     
  • Management von standortbezogenen Daten mit Oracle Application Express
    Prof. Dr. Petra Sauer, Beuth Hochschule für Technik Berlin
    16.11.2011 13:00 - 13:45 Uhr - Raum Istabul
     
  • Geodaten intelligent nutzen
    Joachim Figura, CISS TDI GmbH
    16.11.2011 13:00 - 13:45 Uhr - Raum Neu Delhi
     
  • Das Navi in der Datenbank: Oracle11g has NAVTEQ on Board
    Till Kreiler, NAVTEQ und Carsten Czarski, ORACLE Deutschland B.V. & Co KG
    17.11.2011 12:00 - 12:45 Uhr - Raum Shanghai
     
  • Oracle Maps (Spatial) Karten in Java Anwendungen: How to... (ADF)
    Bernhard Fischer-Wasels, ORACLE Deutschland B.V. & Co KG
    17.11.2011 14:00 - 14:45 Uhr - Raum Istanbul
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
  • Ontologien und semantische Netze aus Sicht der Datenbank
    Karin Patenge, ORACLE Deutschland B.V. & Co KG
    16.11.2011 09:00 - 09:45 Uhr, Raum Seoul
Ich hoffe, ich habe keinen Vortrag übersehen.