web-dev-qa-db-fra.com

Comment devrais-je représenter une latitude et la longitude à Postgres sans utiliser Postgis?

Comment devrais-je représenter une latitude et une longitude à Postgres sans utiliser Postgis? Le système que j'utilise ne permet pas à SQL passthrough, donc je ne peux pas utiliser PostGis.

12
Yazz.com

Vous pouvez utiliser le type de données de points intégré sans PostGis.

14
TomH

Vous pouvez également utiliser des colonnes séparées pour latitude et longitude ou créez votre propre type . De toute façon, il peut être bon de contraindre les valeurs autorisées, dans cet exemple, j'utilise également domaines pour éviter de répéter des contraintes si le type est utilisé dans plusieurs table:

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