FME Workbench を使用して、ESRI フィーチャ クラスを Oracle にインポートしました。FME を介してインポートしたときは、元の ESRI SRID を使用しました。テーブルが Oracle にあるので、メタデータと SRID を変更して Oracle のものと一致させたいと考えています。最初に次のコードを使用しましたが、既に存在していたためエラーが発生OTTAWAPROVRDS
しましたUSER_SDO_GEOM_METADATA
(FMEを介してインポートすると自動的に追加されたと思います)
INSERT INTO USER_SDO_GEOM_METADATA
(TABLE_NAME, COLUMN_NAME, DIMINFO, SRID)
VALUES
('OTTAWAPROVRDS', 'GEOM',
MDSYS.SDO_DIM_ARRAY
( MDSYS.SDO_DIM_ELEMENT('X', -180, 180, 0.5),
MDSYS.SDO_DIM_ELEMENT('Y', -90, 90, 0.5)
),
8307
);
次に、次のコードを使用してSRIDのみを変更しました
UPDATE USER_SDO_GEOM_METADATA a
SET a.SRID = 8307
WHERE a.TABLE_NAME = 'OTTAWAPROVRDS';
これは機能しましたが、現在に移行しようとすると、次のエラーが発生します。
Error report -
ORA-29877: failed in the execution of the ODCIINDEXUPDATE routine
ORA-13365: layer SRID does not match geometry SRID
ORA-06512: at "MDSYS.SDO_MIGRATE", line 423
ORA-06512: at "MDSYS.SDO_MIGRATE", line 474
ORA-06512: at line 1
29877. 00000 - "failed in the execution of the ODCIINDEXUPDATE routine"
*Cause: Failed to successfully execute the ODCIIndexUpdate routine.
*Action: Check to see if the routine has been coded correctly.
これにより、SRID を更新するだけでは機能せず、メタデータ全体を更新する必要があると思います。私はこのコードを試しました:
UPDATE USER_SDO_GEOM_METADATA
SET DIMINFO = MDSYS.SDO_DIM_ARRAY
( MDSYS.SDO_DIM_ELEMENT('X', -180, 180, 0.5),
MDSYS.SDO_DIM_ELEMENT('Y', -90, 90, 0.5)
),
SRID = 8307
WHERE COLUMN_NAME = 'OTTAWAPROVRDS';
しかし、結果は0 rows updated