OracleSpatial空间参考

通过SQL语句在mdsys.cs_srs 视图中查找指定EPSG号的空间参考是否存在,例如查询EPSG:4490、EPSG:7005是否存在的sql语句如下:

select * from mdsys.cs_Srs where srid = 4490;
select * from mdsys.cs_Srs where srid = 7005;

2.怎么向OracleSpatial中插入自定义的空间参考

2.1插入地理坐标系统

2.1.1权限

向OracleSpatial中插入自定义的空间参考,需要拥有数据库DBA权限。

2.1.2自定义的空间参考的详细信息

在EPSG官网中,查找指定EPSG号的空间参考信息,例如EPSG:4490 Unit: degree (supplier to define representation) Geodetic CRS: China Geodetic Coordinate System 2000 Datum: China 2000 Ellipsoid: CGCS2000 Prime meridian: Greenwich Data source: OGP Information source: EPSG. See 3D CRS for original information source. Revision date: 2012-01-05 Scope: Horizontal component of 3D system. Remarks: Adopted July 2008. Replaces Xian 1980 (CRS code 4610). Area of use: China – onshore and offshore. Coordinate system: Ellipsoidal 2D CS. Axes: latitude, longitude. Orientations: north, east. UoM: degree OGCWKT: GEOGCS[“China Geodetic Coordinate System 2000”,DATUM[“China_2000”,SPHEROID[“CGCS2000”,6378137,298.257222101,AUTHORITY[“EPSG”,“1024”]],AUTHORITY[“EPSG”,“1043”]],PRIMEM[“Greenwich”,0,AUTHORITY[“EPSG”,“8901”]],UNIT[“degree”,0.0174532925199433,AUTHORITY[“EPSG”,“9122”]],AUTHORITY[“EPSG”,“4490”]]

EPSG:4490 GEOGCS[“China Geodetic Coordinate System 2000”,DATUM[“China_2000”,SPHEROID[“CGCS2000”,6378137,298.257222101,AUTHORITY[“EPSG”,“1024”]],AUTHORITY[“EPSG”,“1043”]],PRIMEM[“Greenwich”,0,AUTHORITY[“EPSG”,“8901”]],UNIT[“degree”,0.0174532925199433,AUTHORITY[“EPSG”,“9122”]],AXIS[“Latitude”,NORTH],AXIS[“Longitude”,EAST],AUTHORITY[“EPSG”,“4490”]]

2.1.3插入自定义坐标系

坐标系:指坐标系统的坐标轴信息,包括坐标轴的维度、坐标轴的名称、坐标轴的方向、坐标轴的单位信息等。 地理坐标系统的坐标系均为6422大地坐标系: 编号:6422, 名称:Ellipsoidal 2D CS. Axes: latitude, longitude. Orientations: north, east. UoM: degree 类型:ellipsoidal 维度:2 信息来源:OGP 坐标轴: 编号:9901 名称:latitude 方向:north 单位:degree (单位ID:9122) 顺序:1 坐标轴: 编号:9902 名称:longitude 名称缩写:long 方向:east 单位:degree (单位ID:9122) 顺序:2

在SDO_COORD_SYS表中查找坐标系统是否存在,,如果存在就查询COORD_SYS_ID,如果不存在就插入一条记录



```sql
–查询坐标系ID,双击Coordinate system后的连接,可知坐标系的ID为6422
select * from SDO_COORD_SYS t where t.coord_sys_id = 6422;

–如果不存在,则插入坐标系
insert into SDO_COORD_SYS
(coord_sys_id,
coord_sys_name,
coord_sys_type,
dimension,
information_source,
data_Source
)
values
(
4400003,–坐标系的编号,取SDO_COORD_SYS中最大的coord_sys_id+1
‘Ellipsoidal 2D CS. Axes: latitude, longitude. Orientations: north, east. UoM: degree’, --坐标系的名称,来源于EPSG官网中的Coordinate system信息
‘ellipsoidal’,–坐标系的类型,来源于EPSG官网中的Coordinate system信息
```

2,–坐标系的维度,来源于EPSG官网中的Coordinate system信息
‘EPSG’,–信息的来源:EPSG
‘EPSG’–信息的来源:EPSG
);
–根据坐标轴名称查询坐标轴ID,坐标轴名称来源于Coordinate system中的Axes信息 latitude表示纬度 longitude表示经度
select * from SDO_COORD_AXIS_NAMES t where t.coord_axis_name like ‘%latitude%’; --查询的结果为 9901 Geodetic latitude,9926 Spherical latitude,选择9901大地纬度
select * from SDO_COORD_AXIS_NAMES t where t.coord_axis_name like ‘%longitude%’;–查询的结果为 9902 Geodetic longitude,9927 Spherical longitude,选择9902大地经度

–坐标轴单位, 9122
来源UNIT[“degree”,0.0174532925199433,AUTHORITY[“EPSG”,“9122”]]

– 为自定义的坐标系统定义坐标轴 纬度
insert into SDO_COORD_AXES
values
(
4400003, --自定义坐标系统的ID 该ID在SDO_COORD_SYS表中必须存在
9901, --大地纬度坐标轴的ID,该ID在SDO_COORD_AXIS_NAMES中必须存在
‘north’,–纬度坐标轴的方法:向北
‘lat’, – latitude的缩写
9122, --坐标轴的单位ID 来源于EPSG官网中的OGCWKT中UNIT参数信息,该ID在SDO_UNITS_OF_MEASURE中必须存在
1 --坐标轴顺序 纬度为1 经度为2
);

```sql
– 为自定义的坐标系统定义坐标轴 经度
insert into SDO_COORD_AXES
values
(
4400003,
9902, --大地经度坐标轴的ID,该ID在SDO_COORD_AXIS_NAMES中必须存在
‘east’, --大地经度坐标轴的方向 向东
‘long’, – longitude的缩写
9122, --坐标轴的单位ID 来源于EPSG官网中的OGCWKT中UNIT参数信息,该ID在SDO_UNITS_OF_MEASURE中必须存在
```

2 --坐标轴顺序 纬度为1 经度为2
);

2.1.4插入自定义椭球体

椭球体信息:包括椭球的ID、名称、长半轴、短半轴、扁率、单位。这些信息均存储在WKT串的SPHEROID参数中,其中短半轴需要根据长半轴和扁率计算得出,WKT中描述的扁率是实际扁率的倒数,例如: 例如EPSG:4490的SPHEROID[“CGCS2000”,6378137,298.257222101,AUTHORITY[“EPSG”,“1024”]] 椭球体ID:1024 椭球体名称:CGCS2000 长半轴:6378137 短半轴:6378137*(1-1/298.257222101) 扁率:298.257222101 单位:米 (指长半轴、短半轴的单位,单位对应的ID是9001) 在SDO_ELLIPSOIDS表中查找椭球体是否存在,,如果存在就查询ELLIPSOID_ID,如果不存在就插入一条记录 OGCWKT:中查找SPHEROID关键字信息,找到椭球体的EPSG号 例如EPSG:4490的SPHEROID[“CGCS2000”,6378137,298.257222101,AUTHORITY[“EPSG”,“1024”]],则表示EPSG:4490空间坐标系统对应的椭球体的ID为1024

–查询椭球体是否存在
select * from SDO_ELLIPSOIDS t where t.ellipsoid_id = 1024;

–如果不存在就插入一条记录
INSERT INTO SDO_ELLIPSOIDS (
ELLIPSOID_ID, --椭球ID,来源于EPSG官网中的OGCWKT中SPHEROID参数信息
ELLIPSOID_NAME, --椭球名称,来源于EPSG官网中的Ellipsoid信息
SEMI_MAJOR_AXIS, --长半轴,来源于EPSG官网中的OGCWKT中SPHEROID参数信息
UOM_ID, --椭球体单位,指长半轴,短半轴,扁率等值的单位,此处OGCWKT中表述的这些参数的单位是米,该ID在SDO_UNITS_OF_MEASURE中必须存在,此处的单位ID是9001
INV_FLATTENING, --扁率,来源于EPSG官网中的OGCWKT中SPHEROID参数信息
SEMI_MINOR_AXIS, --短半轴 ,来源于EPSG官网中的OGCWKT中SPHEROID参数信息,6378137*(1-1/298.257222101)
INFORMATION_SOURCE, --来源于EPSG官网中的Information source参数信息
DATA_SOURCE, --来源于EPSG官网中的Geodetic CRS参数信息:
IS_LEGACY, --是否在Oracle10.2之前的版本中定义了相同的椭球体,由于是自定义椭球,此处直接设置FALSE
LEGACY_CODE) --存在相同语义的椭球体的值,此处直接设置null
VALUES(
1024,
‘CGCS2000’,
6378137,
9001,
298.257222101,
6356752.314140356,
‘EPSG. See 3D CRS for original information source’,
‘OGP’,
‘FALSE’,
null
);

–查询椭球体的主子午线是否存在
select * from SDO_PRIME_MERIDIANS t where t.prime_meridian_id = 8901; --子午线来源于 EPSG官网中OGCWKT中的PRIMEM参数信息

2.1.5插入自定义大地基准面

基准面信息:包括基准面的ID、名称、类型、椭球ID。这些信息均存储在WKT串的DATUM、PRIMEM参数中,例如: 例如EPSG:4490的DATUM[“China_2000”,SPHEROID[“CGCS2000”,6378137,298.257222101,AUTHORITY[“EPSG”,“1024”]],AUTHORITY[“EPSG”,“1043”]], PRIMEM[“Greenwich”,0,AUTHORITY[“EPSG”,“8901”]] 基准面ID:1043 基准面名称:China_2000 基准面类型:GEODETIC 椭球ID:1024 主午线ID:8901 七参数:来源于WKT串中的TOWGS84参数 在SDO_DATUMS表中查找椭球面是否存在,,如果存在就不处理,如果不存在就插入一条记录 OGCWKT:中查找DATUM关键字信息,找到椭球面的EPSG号 例如EPSG:4490的DATUM[“China_2000”,SPHEROID[“CGCS2000”,6378137,298.257222101,AUTHORITY[“EPSG”,“1024”]],AUTHORITY[“EPSG”,“1043”]],, 则表示EPSG:4490空间坐标系统对应的椭球面的ID为1043

–查询椭球面是否存在
select * from SDO_DATUMS t where t.datum_id = 1043;–datum_id来源于 EPSG官网中OGCWKT中的DATUM参数信息

–插入自定义的椭球面
INSERT INTO SDO_DATUMS (
DATUM_ID, --大地基准ID,来源于EPSG官网中OGCWKT中Datum参数信息
DATUM_NAME, --大地基准名称,来源于EPSG官网中的Datum参数信息
DATUM_TYPE, --大地基准类型,来源于EPSG官网中Geodetic CRS参数信息
ELLIPSOID_ID, --椭球ID,来源于EPSG官网中的OGCWKT中SPHEROID参数信息
PRIME_MERIDIAN_ID, --主午线ID 子午线来源于 EPSG官网中OGCWKT中的PRIMEM参数信息
INFORMATION_SOURCE, --来源于EPSG官网中的Information source参数信息
DATA_SOURCE, --来源于EPSG官网中的Geodetic CRS参数信息:
SHIFT_X, --7参数:在x轴上,将椭球中心相对于WGS 84椭球中心相对移动的米数
SHIFT_Y, --7参数:在Y轴上,将椭球中心相对于WGS 84椭球中心相对移动的米数
SHIFT_Z, --7参数:在Z轴上,将椭球中心相对于WGS 84椭球中心相对移动的米数
ROTATE_X, --7参数:绕x轴旋转的弧秒数。
ROTATE_Y, --7参数:绕Y轴旋转的弧秒数。
ROTATE_Z, --7参数:绕Z轴旋转的弧秒数。
SCALE_ADJUST, --7参数:调整参数
IS_LEGACY, --是否在Oracle10.2之前的版本中定义了相同的椭球体,由于是自定义椭球,此处直接设置FALSE
LEGACY_CODE --存在相同语义的椭球体的值,此处直接设置null
)
VALUES (
1043,
‘China 2000’,
‘GEODETIC’,
1024,
8901,
‘EPSG. See 3D CRS for original information source’,
‘OGP’,
null,
null,
null,
null,
null,
null,
null,
‘FALSE’,
null
);
插入自定义地理坐标系
– 插入自定义地理坐标系统
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 (
4490, --空间参考ID ,来源于EPSG官网
‘China Geodetic Coordinate System 2000’, --空间参考的名称,来源于EPSG官网中Geodetic CRS参数信息
‘GEOGRAPHIC2D’,
4400003, --坐标系ID ,可以使用自定义的4400003,也可以使用数据库中存在的6422
1043, --椭球面ID
1043, --椭球面ID
NULL,
NULL,
NULL,
NULL,
‘EPSG. See 3D CRS for original information source.’,
‘OGP’,
‘FALSE’,
NULL,
NULL,
NULL,
‘TRUE’,
‘TRUE’
);

2.1.6测试自定义地理坐标系统是否成功

1、通过sql语句查询元表,验证插入自定义空间参考是否成功。

select * from mdsys.cs_srs t where t.SRID = 4490;

2、通过创建空间表设置空间参考为当前自定义的空间参考->插入数据->创建空间索引,验证自定义空间参考是否成功。

– 创建测试表 sr_test_srid_of_custom1
create table sr_test_srid_of_custom1
(
oid number(10),
geometry sdo_geometry,
remark varchar2(1024)
);

–写元表信息
INSERT INTO mdsys.user_sdo_geom_metadata
VALUES
(
upper(‘sr_test_srid_of_custom1’),
upper(‘geometry’),
SDO_DIM_ARRAY
( – 20X20 grid
SDO_DIM_ELEMENT(‘X’, 110.620999999, 111.671999998, 0.005),
SDO_DIM_ELEMENT(‘Y’, 19.528999999, 19.750999995, 0.005)
),
4490 – SRID
);

– 写入数据 sr_test_srid_of_custom1
insert into sr_test_srid_of_custom1
values
(
1,
MDSYS.SDO_GEOMETRY
(
2003,
4490, – SRID
NULL,
SDO_ELEM_INFO_ARRAY(1,3,1),
SDO_ORDINATE_ARRAY( 110.672 , 19.5290000005951, 110.678 , 19.5410000005954, 110.678 , 19.5460000005955, 110.674 , 19.5550000005958,
110.667 , 19.5610000005959, 110.662 , 19.565000000596 , 110.656 , 19.5700000005962, 110.65 , 19.5750000005963, 110.645 , 19.5830000005965,
110.64 , 19.5970000005969, 110.639 , 19.6070000005971, 110.641 , 19.6160000005973, 110.647 , 19.6310000005977, 110.649 , 19.6380000005979,
110.645 , 19.6460000005981, 110.636 , 19.6530000005983, 110.628 , 19.6600000005985, 110.622 , 19.6670000005986, 110.621 , 19.6740000005988,
110.63 , 19.683000000599 , 110.637 , 19.6880000005992, 110.644 , 19.6970000005994, 110.648 , 19.7060000005996, 110.652 , 19.7160000005999,
110.656 , 19.7310000006003, 110.658 , 19.7410000006005, 110.663 , 19.7510000006008,111.672 , 19.6290000005951,110.672 , 19.5290000005951)
),
‘CGCS2000’
);

– 创建空间索引
Create index test_index_1 on sr_test_srid_of_custom1(geometry) INDEXTYPE IS MDSYS.SPATIAL_INDEX PARAMETERS(‘SDO_COMMIT_INTERVAL=1000’);

–删除创建的测试表
drop index test_index_1;
delete mdsys.sdo_geom_metadata_table t where t.sdo_owner = ‘TEST’ and t.sdo_table_name = upper(‘sr_test_srid_of_custom1’);
drop table sr_test_srid_of_custom1;

2.1.7删除自定义的地理坐标系统

delete mdsys.SDO_COORD_REF_SYSTEM t where t.SRID = 4490;
delete mdsys.sdo_datums t where t.datum_id = 1043;
delete mdsys.Sdo_Ellipsoids t where t.ellipsoid_id = 1024;
delete mdsys.Sdo_Coord_Axes t where t.coord_sys_id = 4400003;
delete mdsys.Sdo_Coord_Sys t where t.coord_sys_id = 4400003;

2.2插入投影坐标系统

2.2.1权限

向OracleSpatial中插入自定义的空间参考,需要拥有数据库DBA权限。

2.2.2自定义的空间参考的详细信息

在EPSG官网中,查找指定EPSG号的空间参考信息,例如EPSG:7005 Unit: metre Geodetic CRS: Nahrwan 1934 Datum: Nahrwan 1934 Ellipsoid: Clarke 1880 (RGS) Prime meridian: Greenwich Data source: OGP Information source: Various industry sources. Revision date: 2015-02-05 Scope: Large and medium scale topographic mapping and engineering survey. Remarks: Replaced by Karbala 1979 (Polservice) / UTM zone 37N (projCRS code 3391). Area of use: Iraq – west of 42°E. Coordinate system: Cartesian 2D CS. Axes: easting, northing (E,N). Orientations: east, north. UoM: m. OGCWKT: PROJCS[“Nahrwan 1934 / UTM zone 37N”,GEOGCS[“Nahrwan 1934”,DATUM[“Nahrwan_1934”,SPHEROID[“Clarke 1880 (RGS)”,6378249.145,293.465,AUTHORITY[“EPSG”,“7012”]],TOWGS84[-242.2,-144.9,370.3,0,0,0,0],AUTHORITY[“EPSG”,“6744”]],PRIMEM[“Greenwich”,0,AUTHORITY[“EPSG”,“8901”]],UNIT[“degree”,0.0174532925199433,AUTHORITY[“EPSG”,“9122”]],AXIS[“Latitude”,NORTH],AXIS[“Longitude”,EAST],AUTHORITY[“EPSG”,“4744”]],PROJECTION[“Transverse_Mercator”],PARAMETER[“latitude_of_origin”,0],PARAMETER[“central_meridian”,39],PARAMETER[“scale_factor”,0.9996],PARAMETER[“false_easting”,500000],PARAMETER[“false_northing”,0],UNIT[“metre”,1,AUTHORITY[“EPSG”,“9001”]],AXIS[“Easting”,EAST],AXIS[“Northing”,NORTH],AUTHORITY[“EPSG”,“7005”]]

2.2.3插入自定义坐标转换规则

1、查找坐标转换规则ID,PROJECTION[“Transverse_Mercator”]对应的ID为9807,具体查找过程如下:

select
coord_op_method_id,
legacy_name
from
sdo_coord_op_methods
where
not legacy_name is null
order by
coord_op_method_id;
–结果显示
–COORD_OP_METHOD_ID LEGACY_NAME
– 9802 Lambert Conformal Conic
– 9803 Lambert Conformal Conic (Belgium 1972)
– 9805 Mercator
– 9806 Cassini
– 9807 Transverse Mercator
– 9829 Polar Stereographic

2、自定义坐标转换规则

–建立坐标转换规则,编号1000000003 ,查询已有编号最大为1000000002:select max(coord_op_id) from mdsys.sdo_coord_ops t;
insert into MDSYS.SDO_COORD_OPS(
COORD_OP_ID,
COORD_OP_NAME,
COORD_OP_TYPE,
COORD_OP_METHOD_ID,
SHOW_OPERATION,
IS_LEGACY,
REVERSE_OP,
IS_IMPLEMENTED_FORWARD,
IS_IMPLEMENTED_REVERSE)
VALUES(
1000000003,
’ UTM zone 37N ',
‘CONVERSION’,
9807,
1,
‘FLASE’,
1,
1,
1);

2.2.4插入自定义转换参数
--现在,插入参数
1
– 8801:Latitude_Of_Origin
insert into MDSYS.Sdo_Coord_Op_Param_Vals(
COORD_OP_ID,
COORD_OP_METHOD_ID,
PARAMETER_ID,
PARAMETER_VALUE,
PARAM_VALUE_FILE_REF,
UOM_ID
)
VALUES(
1000000003,
9807,
8801,
0,
NULL,
9102
);
– 8802:Central_Meridian
insert into MDSYS.SDO_COORD_OP_PARAM_VALS(
COORD_OP_ID,
COORD_OP_METHOD_ID,
PARAMETER_ID,
PARAMETER_VALUE,
PARAM_VALUE_FILE_REF,
UOM_ID)
VALUES(
1000000003,
9807,
8802,
39,
NULL,
9102
);
– 8805:Scale_Factor
insert into MDSYS.SDO_COORD_OP_PARAM_VALS(
COORD_OP_ID,
COORD_OP_METHOD_ID,
PARAMETER_ID,
PARAMETER_VALUE,
PARAM_VALUE_FILE_REF,
UOM_ID)
VALUES(
1000000003,
9807,
8805,
0.9996,
NULL,
9201
);
– 8806:False_Easting
insert into MDSYS.SDO_COORD_OP_PARAM_VALS(
COORD_OP_ID,
COORD_OP_METHOD_ID,
PARAMETER_ID,
PARAMETER_VALUE,
PARAM_VALUE_FILE_REF,
UOM_ID)
VALUES(
1000000003,
9807,
8806,
500000,
NULL,
9001
);
– 8807:False_Northing
insert into MDSYS.SDO_COORD_OP_PARAM_VALS(
COORD_OP_ID,
COORD_OP_METHOD_ID,
PARAMETER_ID,
PARAMETER_VALUE,
PARAM_VALUE_FILE_REF,
UOM_ID)
VALUES(
1000000003,
9807,
8807,
0,
NULL,
9001
);

2.2.5插入自定义椭球体

–查询椭球体是否存在
select * from mdsys.sdo_ellipsoids t where t.ellipsoid_id = 7012;

–如果不存在就插入一条记录 此处参见2.1.4章节

2.1.6插入自定义大地基准面

–查询大地基准面
select * from mdsys.Sdo_Datums t where t.datum_id = 6744;

–如果不存在就插入一条记录
INSERT INTO SDO_DATUMS (
DATUM_ID, --大地基准ID,来源于EPSG官网中OGCWKT中Datum参数信息
DATUM_NAME, --大地基准名称,来源于EPSG官网中的Datum参数信息
DATUM_TYPE, --大地基准类型,来源于EPSG官网中Geodetic CRS参数信息
ELLIPSOID_ID, --椭球ID,来源于EPSG官网中的OGCWKT中SPHEROID参数信息
PRIME_MERIDIAN_ID, --主午线ID 子午线来源于 EPSG官网中OGCWKT中的PRIMEM参数信息
INFORMATION_SOURCE, --来源于EPSG官网中的Information source参数信息
DATA_SOURCE, --来源于EPSG官网中的Geodetic CRS参数信息:
SHIFT_X, --7参数:在x轴上,将椭球中心相对于WGS 84椭球中心相对移动的米数
SHIFT_Y, --7参数:在Y轴上,将椭球中心相对于WGS 84椭球中心相对移动的米数
SHIFT_Z, --7参数:在Z轴上,将椭球中心相对于WGS 84椭球中心相对移动的米数
ROTATE_X, --7参数:绕x轴旋转的弧秒数。
ROTATE_Y, --7参数:绕Y轴旋转的弧秒数。
ROTATE_Z, --7参数:绕Z轴旋转的弧秒数。
SCALE_ADJUST, --7参数:调整参数
IS_LEGACY, --是否在Oracle10.2之前的版本中定义了相同的椭球体,由于是自定义椭球,此处直接设置FALSE
LEGACY_CODE --存在相同语义的椭球体的值,此处直接设置null
)
VALUES (
6744,
‘Nahrwan 1934’,
‘GEODETIC’,
7012,
8901,
‘EPSG. See 3D CRS for original information source’,
‘OGP’,
-242.2,
-144.9,
370.3,
0,
0,
0,
0,
‘FALSE’,
null
);

2.1.7插入基础地理坐标系

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 (
1000003006, --空间参考ID ,取表中最大SRID+1
‘Nahrwan 1934’,
‘GEOGRAPHIC2D’,
6422,
6744,
6744,
NULL,
NULL,
NULL,
NULL,
‘EPSG. See 3D CRS for original information source.’,
‘OGP’,
‘FALSE’,
NULL,
NULL,
NULL,
‘TRUE’,
‘TRUE’
);

2.1.8插入投影坐标系

insert into MDSYS.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,
IS_VALID,
SUPPORTS_SDO_GEOMETRY
)
VALUES(
7005,
‘Nahrwan 1934 / UTM zone 37N’,
‘PROJECTED’,
4400, – 坐标系ID,在EPSG官网中找到 Xian 1980 / 3-degree Gauss-Kruger CM 117E 对应的坐标系为:Coordinate system: Cartesian 2D CS. Axes: northing, easting (X,Y). Orientations: north, east. UoM: m.其EPSG为4530
NULL,
6744, --大地基准面ID 来源 DATUM [“Xian 1980 (EPSG ID 6610)”, SPHEROID [“Xian 1980 (EPSG ID 7049)”, 6378140, 298.257]],
1000003006, --基础地理坐标系ID select t.SRID from mdsys.SDO_COORD_REF_SYSTEMTEM t where t.DATUM_ID = 6610;
1000000003, --坐标转换规则ID
NULL,
NULL,
‘EPSG’,
‘EPSG’,
‘FALSE’,
NULL,
NULL,
‘TRUE’,
‘TRUE’);

2.1.9测试自定义地理坐标系统是否成功

1、通过sql语句查询元表,验证插入自定义空间参考是否成功。

select * from mdsys.cs_srs t where t.SRID = 7005;

2、通过创建空间表设置空间参考为当前自定义的空间参考->插入数据->创建空间索引,验证自定义空间参考是否成功。

– 创建测试表 test_7005_true
create table test_7005_true
(
oid number(10),
geometry sdo_geometry);

–写元表信息
INSERT INTO mdsys.user_sdo_geom_metadata
VALUES
(
upper(‘test_7005_true’),
upper(‘geometry’),
SDO_DIM_ARRAY
( – 20X20 grid
SDO_DIM_ELEMENT(‘X’, 508113.225983, 508113.273344, 0.00000001),
SDO_DIM_ELEMENT(‘Y’, 4371331.437794, 4371331.477217, 0.00000001)
),
7005 – SRID
);

– 写入数据 test_7005_true
insert into test_7005_true
values
(
1,
MDSYS.SDO_GEOMETRY
(
2003,
7005, – SRID
NULL,
SDO_ELEM_INFO_ARRAY(1,3,1),
SDO_ORDINATE_ARRAY(508113.225983,4371331.437794, 508113.255983,4371331.437794, 508113.255983,4371331.457794, 508113.225983,4371331.457794, 508113.225983,4371331.437794)
)
);

– 创建空间索引

Create index I20170911111009246845 on test_7005_true(geometry) INDEXTYPE IS MDSYS.SPATIAL_INDEX PARAMETERS(‘SDO_COMMIT_INTERVAL=1000’);

–删除表
drop table test_7005_true;
–删除元表信息
delete mdsys.User_Sdo_Geom_Metadata t where t.TABLE_NAME = upper(‘test_7005_true’);
2.1.10删除自定义的投影坐标系统
–删除自定义的EPSG:7005的投影坐标系

–删除投影坐标系统
delete MDSYS.SDO_COORD_REF_SYSTEM t where t.SRID = 7005;

–删除投影坐标系统依赖的基础地理坐标系统
delete MDSYS.SDO_COORD_REF_SYSTEM t where t.SRID = 1000003006;

–删除基础地理坐标系统依赖的基准面信息
delete MDSYS.SDO_DATUMS t where t.datum_id = 6744;

–删除坐标转换参数
delete MDSYS.SDO_COORD_OP_PARAM_VALS t where t.coord_op_id = 1000000003;

–删除坐标转换规则
delete MDSYS.SDO_COORD_OPS t where t.coord_op_id = 1000000003;

You may also like...

1 Response

  1. Pretty! This has been a really wonderful post. Many thanks for providing these details.

发表评论

您的电子邮箱地址不会被公开。

CAPTCHAis initialing...