Chuyển đổi từ SRID 900913 thành 4326 với PostGis


8

Tôi có hai bảng Postgres với các SRID khác nhau: 4326 và 900913. Tôi muốn chuyển đổi bảng sau thành 4326. Lần đầu tiên tôi đã thay đổi SRID bằng cách sử dụng:

Select UpdateGeometrySRID('table', 'geomcolumn', 4326).  

Sau đó tôi đã chuyển đổi dữ liệu tham chiếu bằng cách sử dụng:

update table set geomcolumn = ST_Transform (geomcolumn, 4326). 

Điều này dường như làm việc. Nhưng khi tôi thay đổi cài đặt SRS của lớp có liên quan trong TileMill thành WGS84, tôi gặp lỗi này:

Phát hiện ra khỏi giới hạn phạm vi địa lý.

Có lẽ việc chuyển đổi không hoạt động nhưng không rõ tại sao.


Tôi đoán bạn muốn WGS84, đó là EPSG: 4326, không phải 4236.
AndreJ

Câu hỏi nhanh: Tilemill có nhanh hơn nếu hình học là WGS84 không? Vì vậy, có đáng để chuyển đổi từng lớp sử dụng Phép chiếu 900913 sang WGS84 không? Xin lỗi .. Tôi là một người mới của GIS;)
Georg

Câu trả lời:


22

Việc chuyển đổi không thành công cho trường hợp của bạn vì lệnh UpdateGeometrySRID chỉ thay đổi siêu dữ liệu, nhưng không chuyển đổi tọa độ. Và khi bạn thử chuyển đổi từ 4326-> 4326, không có biến đổi nào được thực hiện do SRID bằng nhau.


Nếu bạn có PostGIS 2.x với một bảng như thế này:

CREATE TABLE my_table (
  gid serial primary key,
  geom geometry(Point,900913),
  name text not null
);

cách chính xác để chuyển đổi và thay đổi hệ thống tham chiếu không gian của cột hình học là sử dụng ALTER TABLE DDL:

ALTER TABLE my_table
    ALTER COLUMN geom TYPE geometry(Point,4326) USING ST_Transform(geom,4326);

Tôi đang cố gắng làm điều tương tự nhưng dường như tôi không thể làm cho lệnh ALTER TABLE này hoạt động. ALTER TABLE Chi tiết_Buishing_buildinglayer ALTER COLUMN Geometry TYPE hình học (Polygon, 900913) SỬ DỤNG ST_Transform (geom, 2954); Lỗi tôi nhận được là mối quan hệ "detail_building_buildinglayer" không tồn tại. Tôi không nhận được điều này bởi vì đó là tên của bảng của tôi không phải là một mối quan hệ.
Tyler Veinot


Cảm ơn, đó là vấn đề; chương trình tạo ra bảng hình học có tên là Hình học chứ không phải địa lý. Sau khi đọc bài đăng đó, tôi đã thử trích dẫn để nó tìm "Hình học" nhưng nó vẫn thất bại. Vì vậy, tôi đã thay đổi tên cột hình học thành geom, chạy truy vấn và nó hoạt động; sau khi tôi đổi tên thành "Hình học". Tôi nghĩ rằng tên và trường hợp đã gây ra vấn đề.
Tyler Veinot

1
Bạn đã thay đổi tên cột cơ sở dữ liệu thay vì tên cột trong tập lệnh SQL chưa ??? Chúa ơi!
Magno C

0

Nó làm việc cho tôi với trình tự này:

CREATE TABLE tabla_900913 AS (SELECT ST_TRANSFORM(geom, 4326) FROM "tabla_4326")
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.