在不使用PostGIS的情况下如何在Postgres中表示纬度和经度?


12

在不使用PostGIS的情况下如何在Postgres中表示纬度和经度?我正在使用的系统不允许SQL直通,所以我不能使用POSTGIS。

Answers:


14

您可以使用内置的POINT数据类型而无需使用Postgis。


6

你也可以使用两种不同的列latitudelongitude创建自己的类型。无论哪种方式都可以约束允许的值,在此示例中,如果在多个表中使用了该类型,我还使用来避免重复约束:

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

对于非GIS应用程序,我只使用Jack所建议的列,尽管我不必理会检查值。最好在另一列中指定基准点(IE NAD27),因为基准点对于正确解释值很重要。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.