小编Bri*_*anB的帖子

将 Oracle 几何行从大地坐标迁移到笛卡尔坐标

我有一个表 ( granule),其中包含大约 400 万个当前 SRID = 8307 的唯一几何对象。

我正在尝试创建一个具有相同数据的第二个表,但使用笛卡尔坐标系。

我创建了表,

create table granule_cartesian  (
        granule varchar(64) not null,
        SHAPE sdo_geometry NOT NULL );
Run Code Online (Sandbox Code Playgroud)

并插入正确的geom_metadata

insert into user_sdo_geom_metadata (table_name, column_name, diminfo, srid)
values ( 'GRANULE_CARTESIAN', 'SHAPE',
        mdsys.sdo_dim_array(
                mdsys.sdo_dim_element('longitude', -180, 180, .5),
                mdsys.sdo_dim_element('latitude', -90, 90, .5)),
        null);
Run Code Online (Sandbox Code Playgroud)

现在我想将颗粒的几何内容复制到颗粒_笛卡尔中。

显然,由于 SRID 不匹配,直接复制将无法工作。

我可以通过转换为 wkt 并返回到几何体、剥离 SRID 来一次复制几个:

insert into granule_cartesian
select  granule, 
        SDO_GEOMETRY(SDO_UTIL.TO_WKTGEOMETRY(shape), null) as shape
from    granule
where   platform = 'ZZ'; -- granule has a few other columns... 
Run Code Online (Sandbox Code Playgroud)

如果我选择小于 ~ …

oracle spatial oracle11g

5
推荐指数
1
解决办法
1462
查看次数

标签 统计

oracle ×1

oracle11g ×1

spatial ×1