Làm cách nào để thể hiện vĩ độ và kinh độ trong Postgres mà không sử dụng PostGIS?


12

Làm cách nào để thể hiện vĩ độ và kinh độ trong Postgres mà không sử dụng PostGIS? Hệ thống tôi đang sử dụng không cho phép SQL thông qua nên tôi không thể sử dụng POSTGIS.

Câu trả lời:


14

Bạn có thể sử dụng kiểu dữ liệu POINT dựng sẵn mà không cần postgis.


6

Bạn cũng có thể sử dụng các cột riêng biệt cho latitudelongitudehoặc tạo loại của riêng bạn . Dù bằng cách nào cũng có thể tốt để hạn chế các giá trị được phép, trong ví dụ này tôi cũng sử dụng các miền để tránh lặp lại các ràng buộc nếu loại được sử dụng trong nhiều hơn một bảng:

create domain latitude_t as double precision not null 
                                             check(value>=-90 and value<=90);
create domain longitude_t as double precision not null 
                                              check(value>-180 and value<=180);

create type geocoord_t as (latitude latitude_t, longitude longitude_t);

create table my_table(id serial, geocoord geocoord_t);

insert into my_table(geocoord) values ((31.778175,35.22995));

select id, (geocoord).* from my_table;
 id | latitude  | longitude
----+-----------+-----------
  1 | 31.778175 |  35.22995

5

Đối với ứng dụng phi GIS, tôi chỉ sử dụng các cột, như được đề xuất bởi Jack, mặc dù tôi không bận tâm với giá trị kiểm tra. Một ý tưởng tốt là cũng chỉ định mốc thời gian (IE NAD27 ) trong một cột bổ sung, vì mốc này là quan trọng để giải thích chính xác các giá trị.

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.