Thay đổi SRID dữ liệu hiện có trong PostGIS?


50

Trong khi nhập dữ liệu shapefile của tôi vào PostGIS, tôi đã không chọn Phép chiếu thích hợp.

Làm cách nào để tôi thay đổi SRID của dữ liệu mà không chuyển đổi Tọa độ?

Câu trả lời:


83

Có một chức năng dòng duy nhất làm điều này cho bạn. Chỉ cần sử dụng truy vấn SQL sau:

select UpdateGeometrySRID('Schema Name', 'mytable', 'the_geom', newSRID) ;

Nhưng, nếu bạn giống như tôi, bạn sẽ quan tâm đến các bước thu nhỏ ở cấp độ thấp. Về mặt logic, chức năng trên tương đương với quy trình bốn bước sau:

  1. Trong bảng hình học_columns, cập nhật SRID thành giá trị bắt buộc.

  2. Bỏ thông tin xuống bảng bằng cách sử dụng câu lệnh SQL sau

    ALTER TABLE mytable DROP CONSTRAINT enforce_srid_the_geom;

  3. Cập nhật SRID'd của hình học bằng cách sử dụng câu lệnh SQL sau

    UPDATE mytable SET the_geom = ST_SetSRID(the_geom, newSRID);

  4. Thêm phần chống lại bằng cách sử dụng câu lệnh SQL sau

    ALTER TABLE mytable

    ADD CONSTRAINT enforce_srid_the_geom CHECK (st_srid(the_geom) = (newSRID));


1
Xem postgis.org/docs/ST_SetSRID.html để biết thêm thông tin và liên kết
BradHards

13

Với PostGIS 2.x, các cột hình học thường sử dụng các kiểu chữ như geometry(Point, 1234). Đối với những điều này, bạn có thể sử dụng ALTER TABLE để trực tiếp sửa đổi loại cột hình học trong một bước.

Ví dụ, để thiết lập các SRID của geomtrong mytablethành WGS84, sử dụng ST_SetSRID :

ALTER TABLE mytable
  ALTER COLUMN geom
    TYPE geometry(Point, 4326)
    USING ST_SetSRID(geom, 4326);

Lưu ý rằng điều này sẽ chỉ thay đổi SRID, nhưng không chuyển đổi dữ liệu tọa độ.


1
Với một thay đổi nhỏ, điều này cũng sẽ hoạt động với các cột địa lý , UpdateGeometrySRIDkhông hỗ trợ.
DSz
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.