Як я повинен представляти широту і довготу в Postgres, не використовуючи PostGIS?


12

Як я повинен представляти широту і довготу в Postgres, не використовуючи PostGIS? Система, яку я використовую, не дозволяє пройти SQL, тому я не можу використовувати POSTGIS.

Відповіді:


14

Ви можете використовувати вбудований тип даних POINT без постгігів.


6

Крім того, можна використовувати або окремі стовпці для latitudeі longitudeчи створити свій власний тип . У будь-якому випадку може бути корисним обмеження дозволених значень, у цьому прикладі я також використовую домени, щоб уникнути повторення обмежень, якщо тип використовується у більш ніж одній таблиці:

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

Для не ГІС-додатків я просто використовую стовпці, як запропонував Джек, хоча я не турбуюсь із контрольним значенням. Непогано також вказати дату (IE NAD27 ) у додатковому стовпчику, оскільки дана важлива для правильної інтерпретації значень.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.