Как я должен представлять широту и долготу в Postgres без использования PostGIS?


12

Как я должен представлять широту и долготу в Postgres без использования PostGIS? Система, которую я использую, не позволяет проходить SQL, поэтому я не могу использовать POSTGIS.

Ответы:


14

Вы можете использовать встроенный тип данных POINT без postgis.


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.