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.