2013-02-05 37 views
8

Tôi có dữ liệu không gian mà Oracle đã gán SRID là . Tôi muốn thay đổi nó thành - chúng đều là cùng một hệ tọa độ, chỉ Oracle của nó sử dụng SRID riêng của nó; do đó không cần chiếu lại (vì vậy SDO_CS.TRANSFORM không hoạt động vì nó cũng thực sự thay đổi tọa độ, mà tôi không muốn)).Làm cách nào để thay đổi SRID cho Oracle SDO_GEOMETRY

Tôi đã cập nhật USER_SDO_GEOM_METADATA dễ dàng đủ, nhưng SDO_GEOMETRY chứa chính dữ liệu cũng có SRID và tôi không biết cách thay đổi điều này.

Vì vậy, ví dụ dữ liệu hiện tại của tôi trông giống như:

MDSYS.SDO_GEOMETRY(2001,81989,MDSYS.SDO_POINT_TYPE(420531.663898,268911.956161,NULL),NULL,NULL) 

và tôi cần phải đi thay đổi nó thành:

MDSYS.SDO_GEOMETRY(2001,27700,MDSYS.SDO_POINT_TYPE(420531.663898,268911.956161,NULL),NULL,NULL) 

Đối với tất cả các hàng trong một bảng. Nhưng tôi không biết làm thế nào để tự động thay đổi một phần tử duy nhất trong một SDO_GEOMETRY trong khi để lại các khía cạnh khác của mảng không thay đổi.

Có ai có thể chỉ cho tôi theo hướng không? Cảm ơn.

Trả lời

16

Để cập nhật SRID, bạn có thể sử dụng một cái gì đó như thế này:

UPDATE YOUR_TABLE T 
SET T.YOUR_SDO_GEOMETRY_COLUMN.SDO_SRID = 27700 
WHERE T.YOUR_SDO_GEOMETRY_COLUMN IS NOT NULL 

Lưu ý rằng việc sử dụng một bí danh bảng (như T trong ví dụ này) là cần thiết.

+0

Tuyệt vời. Làm việc một điều trị, cảm ơn. –

+9

Đối với những người khác, điều quan trọng cần lưu ý là để thực sự thực hiện điều này, trước hết phải bỏ chỉ mục không gian, cập nhật bảng siêu dữ liệu, sau đó thực hiện cập nhật srid và sau đó thêm lại chỉ mục không gian – chrismarx

Các vấn đề liên quan