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 độ?
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:
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:
Trong bảng hình học_columns, cập nhật SRID thành giá trị bắt buộc.
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;
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);
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));
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 geom
trong mytable
thà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 độ.
UpdateGeometrySRID
không hỗ trợ.